发起
用户在“流程中心”选择要发起的流程,进入流程发起页面。
提示
用户可见的流程取决于该流程开始节点的操作人配置。
概览
引擎提供了统一的界面,用户在这里填写表单,然后提交发起流程。
前端集成
业务需求多种多样,需要用户填写或操作的内容也千变万化。相关业务组件需要由开发人员单独实现,并交给流程引擎展示。具体内容请查阅工作组件。
后端集成
对于发起流程而言,关键在于点击提交按钮后的处理逻辑。其基本流程为:
- 保存业务数据
- 创建工作
- 推进工作至下一节点
示例代码如下:
java
@Autowired
WorkflowEngine engine;
@Transactional(rollbackFor = Exception.class)
public String add(BizLeaveAddDto dto) {
// 保存业务数据
String bizId = addFormData(dto);
// 创建并推进工作
String workId = engine.create(new WorkAddDto(bizId, dto.getTitle(), "wf_leave"));
engine.step(new WorkStepNodeDto(workId, "start", dto, dto.getDealMsg(), WorkflowConsts.TASK_DEAL_ACTION_PASS));
// 返回创建的工作id,以便前端跳转到查看界面
// 业务有需要也可以添加更多返回内容,但必须包含workId字段
return workId;
}
注意
创建工作需要传入业务标识(bizId)——通常为数据id,因此需要先保存业务表单,再创建工作。
业务标识是引擎与业务的唯一联系桥梁,后续的业务操作基本都需要由工作信息换取 bizId,以确定要操作的业务数据。
提交并推送
引擎支持在创建工作时直接推进工作,而不需要再次调用推进方法,这样简化了普通场景的流程发起过程。
如下所示,在创建工作的方法中为 step
参数传入 true
即可。
java
@Autowired
WorkflowEngine engine;
@Transactional(rollbackFor = Exception.class)
public String add(BizLeaveAddDto dto) {
// 保存业务数据
String bizId = addFormData(dto);
// 创建并推进工作
String workId = engine.create(new WorkAddDto(bizId, dto.getTitle(), "wf_leave", true, null, dto.getDealMsg));
// 返回创建的工作id,以便前端跳转到查看界面
// 业务有需要也可以添加更多返回内容,但必须包含workId字段
return workId;
}
草稿
引擎不再支持专门的“草稿”状态。创建但不推进工作即可成为草稿,这在页面操作中体现为“保存”功能。
保存功能由开发人员决定是否实现,下面是一个可能的例子。
java
@Transactional(rollbackFor = Exception.class)
@Override
public String saveDraft(BizLeaveAddDto dto) {
// 新增数据并创建工作
String bizId = addFormData(dto);
// 这里同样也必须返回 workId
return engine.create(new WorkAddDto(bizId, dto.getTitle(), "wf_leave", dto.getDealMsg()));
// 不再推进工作,成为草稿
}
提示
保存的草稿在用户待办任务中展示,用户可以选择继续提交或删除草稿。