【问题标题】:Mulesoft Batch Processing Multiple ConnectorsMulesoft 批处理多个连接器
【发布时间】:2020-09-09 03:02:33
【问题描述】:

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

这是我当前使用单个 Salesforce 组织的流程示例。

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

有没有一种方法可以构造为具有多个轮询/批次,但使用不同的连接器?

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

我的.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]

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

【问题讨论】:

    标签: mule mulesoft mule-esb


    【解决方案1】:

    如果您使用逗号分隔的组织列表添加属性,则可以将其拆分为列表。使用<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">
          ...
    

    【讨论】:

    • 感谢您的回复!这仍然适用于水印吗?投票是否仍然可以访问上次运行,以便我可以在记录请求中使用它?
    • 我不这么认为。我的示例是在投票之外进行查询,因此它不会意识到水印。
    猜你喜欢
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    相关资源
    最近更新 更多