在分享实战演示前,需要先参考上面两篇博客:
springboot 实战演示activiti 工作流(二)是在上一篇的基础上进行的,依据上一篇的业务流程图进行:
1、业务代码配置公共类
此篇演示常用的 serviceTask 业务任务,业务类必须实现 JavaDelegate 接口的 execute方法
核心伪代码:
/**
* 核心是实现 JavaDelegate 接口的 execute方法
*/
public abstract class CommonTaskDelefate implements JavaDelegate {
/**
* 作为父类的工作方法
* @param execution
*/
@Override
public void execute(DelegateExecution execution) {
FlowElement currentFlowElement = execution.getCurrentFlowElement();
String currentFlowElementName = currentFlowElement.getName();
String name = (String) execution.getVariable("name");
/**
* 进入子类调用
*/
execute(execution,name);
}
/**
* 其子类重写的抽象类
* @param execution
* @param name
*/
public abstract void execute(DelegateExecution execution, String name);
}
2、安装所示对应7个子类
举例其中一个:
import org.activiti.engine.delegate.DelegateExecution;
import org.springframework.stereotype.Service;
@Service
public class QueryFileDelegate extends CommonTaskDelefate{
@Override
public void execute(DelegateExecution execution,String name) {
System.out.println("查询文件:"+name);
}
}
基本架子是这样的,至于业务代码,自己根据业务编写。
注意:正常情况下可以不用设置父子类,直接单独的7个业务类就行,执行实现 JavaDelegate,此处写父类主要是为了业务上的抽象,公共部分抽出来。
3、启动此工作流配置
@RequestMapping("/getS")
public String getS(){
//设置工作流的自定义参数
Map<String, Object> map = new HashMap<>();
EvectionVO evection = new EvectionVO();
evection.setNum(2d);
map.put("evection",evection);//可以配置参数条件<![CDATA[${evection.num<3}]]>
map.put("name","lisi");
map.put("state",true);
map.put("isZip",true);//此处就是判断文件是压缩包的条件参数,对应流程图
map.put("type",1);
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("nandaoTest", map);
String processDefinitionId = processInstance.getProcessDefinitionId();
String businessKey = processInstance.getBusinessKey();
Integer appVersion = processInstance.getAppVersion();
String deploymentId = processInstance.getDeploymentId();
String description = processInstance.getDescription();
System.out.println("processDefinitionId:"+processDefinitionId);
System.out.println("businessKey:"+businessKey);
System.out.println("appVersion:"+appVersion);
System.out.println("deploymentId:"+deploymentId);
System.out.println("description:"+description);
return "ok";
}
4、启动服务
掉接口后打印日志
日志显示文件是压缩格式的,因为执行解压了,参数配置的也是true。
此处、整个流程执行完毕,器过程可以完全嵌套在核心的业务代码里,功能强大,操作便捷,下篇我们分享另一个拖拽npmn图的神器,功能更强大,敬请启动!