🍒可选的执行流程
# 任务配置
- name: "optionalRule"
content: "caseOptionalTaskA->caseOptionalTaskB->caseOptionalTaskC,caseOptionalTaskD->caseOptionalTaskE->caseOptionalTaskF"
如果开发者在调用时只希望执行 caseOptionalTaskD
, 则在任务链中 只需要执行caseOptionalTaskA、caseOptionalTaskB、caseOptionalTaskD
三个任务即可即可。 其他任务不需要执行
,提供了随机选择流程中任务执行的能力。
# 调用方式
gobrsAsync.go
方法的第三个参数 Set<String>
需要传递 要执行的任务 bean
名称。
@Test
public void testOptional() {
Map<Class, Object> params = new HashMap<>();
Set<String> options = new HashSet<>();
options.add("caseOptionalTaskD"); # options中添加要执行的任务 bean 名称
AsyncResult asyncResult = gobrsAsync.go("optionalRule", () -> params, options, 300000);
}
# 测试用例
# 运行结果
CaseOptionalTaskA 任务执行
CaseOptionalTaskA 任务执行完成
2022-12-11 15:47:32.511 INFO 13458 --- [o-8888-exec-152] com.gobrs.async.core.task.AsyncTask : <0><11781331511388032> <11781331511388032> [caseOptionalTaskA] execution
CaseOptionalTaskB 任务执行
CaseOptionalTaskB 任务执行完成
2022-12-11 15:47:32.613 INFO 13458 --- [o-8888-exec-152] com.gobrs.async.core.task.AsyncTask : <0><11781331511388032> <11781331511388032> [caseOptionalTaskB] execution
CaseOptionalTaskD 任务执行
CaseOptionalTaskD任务执行完成
2022-12-11 15:47:32.718 INFO 13458 --- [o-8888-exec-152] com.gobrs.async.core.task.AsyncTask : <0><11781331511388032> <11781331511388032> [caseOptionalTaskD] execution
2022-12-11 15:47:32.718 INFO 13458 --- [o-8888-exec-152] com.gobrs.async.core.TaskLoader : <0><11781331511388032> 【ProcessTrace】Total cost: 311ms | traceId = 11781331511388032 | 【task】caseOptionalTaskA cost :102ms【state】:success; ->【task】caseOptionalTaskB cost :102ms【state】:success; ->【task】caseOptionalTaskD cost :105ms【state】:success;
cost 311
# 适应场景
在做 ISV (京东商城ISV组件化建设 (opens new window)) 建设时, 楼层中的多个组件可能存在着任务流程的编排, 所需要的上游数据数量多少不一,所以此时就需要进行编排流程中的任务选择执行处理了。 如下对每个组件进行编排数据编排处理。
Last Updated: 12/11/2022, 4:38:43 PM