问题描述
我有3个Salesforce实例,我需要从这些实例中轮询数据,然后通过加水印的更改对该数据进行操作。我正在尝试以一种足够动态的方式来设计它,以至于如果我需要添加另外X个源,我不会复制所有批处理都具有的一堆业务逻辑。 >
下面是一个Salesforce Org当前流程的示例。
现在我希望做的是能够以某种方式在配置文件上使用<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr data-expiry="2020-09-15" class="with-expiry">
<td>2020-09-15</td>
</tr>
<tr data-expiry="2020-09-15" class="with-expiry">
<td>2020-09-15</td>
</tr>
<tr data-expiry="2020-08-01" class="with-expiry">
<td>2020-08-01</td>
</tr>
</table>
,这使我能够从for-each
文件中提取登录凭据并轮询每个组织,然后处理记录正确。
有没有一种方法可以将其构造为具有多个轮询/批处理,但使用不同的连接器?
所有组织上的查询都相同,只是连接不同。
我的.properties
文件看起来像这样:
.properties
我可以动态方式执行此操作,还是需要为我添加的每个组织添加批处理流程?
解决方法
如果添加带有逗号分隔的组织列表的属性,则可以将其拆分为一个列表。使用<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">
...