Mulesoft 批处理多个连接器

Mulesoft Batch Processing Multiple Connectors

我有 3 个 Salesforce 实例,我需要从中轮询数据,然后通过带水印的更改对该数据执行操作。我正在尝试以一种足够动态的方式设计它,如果我需要添加另一个 X 数量的源,我不会复制所有批次共有的一堆业务逻辑。

这是一个示例,说明我的当前流程在单个 Salesforce 组织中的样子。

现在我希望做的是能够以某种方式在配置文件上使用 for-each 允许我从 .properties 文件中提取登录凭据并轮询每个组织然后适当地处理记录。

有没有一种方法可以将其构造为具有多个 polls/batches,但使用不同的连接器?

所有组织的查询都是一样的,只是连接不同。

我的 .properties 文件看起来像这样:

sf.org1.user=email@domain.com
sf.org1.pass=![encrypted]
sf.org1.token=![encrypted]

sf.org2.user=email@domain.com
sf.org2.pass=![encrypted]
sf.org2.token=![encrypted]

我能否以动态方式执行此操作,或者我是否需要为我添加的每个组织添加批处理?

如果您添加一个 属性 用逗号分隔的组织列表,它可以拆分成一个列表。使用 <foreach> 列表的每个元素都可用于参数化每个组织的同一批次的执行。

我会从批处理中获取轮询来触发流程。

示例属性:

organizations=org1,org2

示例流程和批次:

  <flow name="pollFlow">
    <poll doc:name="Poll" >
      <fixed-frequency-scheduler frequency="10" timeUnit="SECONDS"/>
      <logger message="Flow started" level="INFO" doc:name="Logger"/>
    </poll>
    <dw:transform-message doc:name="Transform Message">
      <dw:input-payload mimeType="application/java" />
      <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
p('organizations') splitBy ',' map {
    user: p('sf.' ++ $ ++ '.user'),
    pass: p('sf.' ++ $ ++ '.pass'),
    token: p('sf.' ++ $ ++ '.token')
}
]]>
      </dw:set-payload>
    </dw:transform-message>
    <logger message="list of orgs credential: #[payload]" level="INFO" doc:name="Logger"/>
    <foreach doc:name="For Each">
      <batch:execute name="so-dynamic-propertiesBatch" doc:name="Batch Execute" />
    </foreach>
  </flow>
  
  <batch:job name="orgBatch">
    <batch:input>
      <logger message="on input phase #[payload]" level="INFO" doc:name="Logger" />
      <!-- here do the request with credentials payload.user, payload.pass and payload.token -->
    </batch:input>
    <batch:process-records>
      <batch:step name="Batch_Step1">
      ...