1. 概要

在流程设计中,有一种服务任务,这种任务的特点是,他会执行节点上的任务,执行完成后,自动流转到下一环节。

这种节点我们可以自己定义需要执行任务。
在平台中默认实现了两种:

1.执行脚本
2.调用WEB请求。

2. 扩展步骤

在平台中,我们定义了服务任务接口,通过对接口的实现,我们可以定义后端的逻辑,另外,我们可以将配置信息保存到流程定义中。

2.1 服务接口定义

接口定义如下

  1. package com.redxun.bpm.activiti.ext;
  2. import org.activiti.engine.delegate.DelegateExecution;
  3. /**
  4. * 服务任务接口
  5. */
  6. public interface IServiceTask {
  7. ServiceType getType();
  8. void handle(DelegateExecution execution,String setting);
  9. }

2.1.1 调用脚本任务实现

下面的代码是调用脚本任务的实现。

  1. @Component
  2. public class ScriptTask implements IServiceTask {
  3. @Resource
  4. GroovyEngine groovyEngine;
  5. @Override
  6. public ServiceType getType() {
  7. return new ServiceType("脚本任务", "script");
  8. }
  9. @Override
  10. public void handle(DelegateExecution execution, String setting) {
  11. JSONObject jsonObject = JSONObject.parseObject(setting);
  12. String script = jsonObject.getString("script");
  13. if (StringUtils.isEmpty(script)) {
  14. return;
  15. }
  16. Map<String, Object> contextData = ActivitiUtil.getContextData(execution);
  17. groovyEngine.executeScripts(script, contextData);
  18. }
  19. }

1.需要增加 @Component 注解。
2.实现执行脚本的逻辑。

2.2 前端实现

服务任务配置是在前端实现的。

components/bpmn/customModle/serviceTask.vue

通过接口实现,我们可以在下拉框选择我们的实现。

点击调用配置。

查看代码。
serviceTask/js/ServiceTask
他会对每一种类型的任务,打开一个对话框进行配置,对话框会返回配置数据。

  1. ServiceTaskApi.openServiceTask(self, function (action, data) {
  2. if (action != 'ok') return;
  3. self.nodeAttr.setting = data;
  4. })
文档更新时间: 2022-01-20 14:53   作者:zyg