workflow 2019-06-26
Step by Step to debug IC inbox workflow WS14000164
Hybris workflow的框架实现代码在这个folder里:
而应用层面使用的workflow,和ABAP workflow一样有所谓workflow template的概念。下图是ABAP workflow template的一个例子:
Hybris workflow:
也是通过impex定义的:
impex 中包括 WorkflowTemplate, WorkflowActionTemplate, WorkflowDecisionTemplate, WorkflowActionTemplateLinkTemplateRelation 这四种类型的model
1. 一个workflow至少有3三 种类型(start/normal/end)的 action
2. 一个action最少有一种decision
3. 一个decision 可以通过 WorkflowActionTemplateLinkTemplateRelation 链接到下一个action上 直到结束节点 end.
创建workflow及触发decision:
public void autoCreateWorkFlow(PrincipalModel principal, KeyInfoModel info) { validateParameterNotNull(principal, "principal model cannot be null"); UserModel admin = userService.getUserForUID(ADMIN_CODE); WorkflowTemplateModel workflowTemplate = workflowTemplateService.getWorkflowTemplateForCode(workflowTemplateCode); //create a new workflow for given workflowtemplate final WorkflowModel workflow = workflowService.createWorkflow(workflowTemplate, admin); //add attachment for workflow final WorkflowItemAttachmentModel attachment = modelService.create(WorkflowItemAttachmentModel.class); AbstractOrderEntryModel orderEntry = info.getOrderEntry(); attachment.setItem(info.getOrderEntry()); attachment.setWorkflow(workflow); attachment.setCode(orderEntry.getPk()+"_OrderEntry"); this.modelService.save(attachment); this.modelService.refresh(attachment); workflow.setAttachments(Collections.singletonList(attachment)); workflowProcessingService.startWorkflow(workflow); this.autoDoStartDecision(workflow, admin); }