2023年8月1日发(作者:)
基于SpringBoot2.x使⽤Activiti创建⼀个简易的请假流程⽂章⽬录
1 摘要⼯作流是需要和业务结合起来,才能够发挥其作⽤。本⽂将介绍基于 Spring Boot 2、Activiti 6 创建⼀个简易的请假流程。2 准备⼯作(1)(2)(3)(4)3 请假流程图流程图:bpmn ⽂件:./activiti-workflow/src/main/resources/processes/student_leave_
流程管理 * @Author: * @Date: 2020/7/9 */public class ActivitiManager { private static volatile ProcessEngine processEngine; /** *
启动流程 * * @param processFile * @param processKey * @param deployDao * @param businessKey * @param variable * @return */ public static ProcessInstance startProcess(String processFile, String processKey, ActivitiDeployDao deployDao, String businessKey,Map
判断是否部署过 int count = eployed(processFile); if (count < 1) { deployProcess(processFile); } //
初始化流程引擎,并且启动流程 ProcessInstance instance = init().getRuntimeService().startProcessInstanceByKey(processKey,businessKey,variable); return instance; } /** *
查询单个流程的历史记录 * * @param processKey * @param businessKey * @return */ public static List
查询流程实例 * * @param processKey * @param businessKey * @return */ public static ProcessInstance queryProcessInstance(String processKey,String businessKey) { ProcessInstance processInstance = init().getRuntimeService() .createProcessInstanceQuery() .processDefinitionKey(processKey) .processInstanceBusinessKey(businessKey) .singleResult(); return processInstance; } /** *
查询当前代理⼈在当前流程中待办理任务(列表) * * @param processKey * @param assignee * @return */ public static List
完成当前节点任务 * * @param taskId * @param processInstanceId * @param comment */ public static void complete(String taskId, String processInstanceId, String comment) { TaskService taskService = init().getTaskService(); ment(taskId, processInstanceId, comment); te(taskId); } /** /** *
删除流程实例(包括流程历史) * * @param processInstanceId * @param deleteReason */ public static void deleteProcessInstance(String processInstanceId, String deleteReason) { init().getRuntimeService().deleteProcessInstance(processInstanceId, deleteReason); } /** *
初始化 */ private static ProcessEngine init() { if (processEngine == null) { synchronized () { if (processEngine == null) { processEngine = aultProcessEngine(); n("初始化流程引擎"); } } } return processEngine; } /** *
部署流程 * * @param processFile * @return */ private static Deployment deployProcess(String processFile) { Deployment deployment = init().getRepositoryService() .createDeployment() .addClasspathResource(processFile) .deploy(); return deployment; }}3.3 流程的使⽤流程的使⽤主要是在业务层(Service 层)学⽣请假流程的业务层实现类:./activiti-workflow/src/main/java/com/ljq/demo/springboot/activiti/service/impl/(1) 学⽣发起⼀个请假申请(启动流程) /** *
新增(单条) * * @param leaveInfoAddParam * @return * @throws Exception */ @Override @Transactional(propagation = ED, rollbackFor = {}) public ApiResult add(LeaveInfoAddParam leaveInfoAddParam) throws Exception { //
请求参数获取 LeaveInfoEntity leaveInfoParam = new LeaveInfoEntity(); operties(leaveInfoAddParam, leaveInfoParam, () .ignoreNullValue().ignoreError()); String id = (); (id); //
保存 (leaveInfoParam); //
指定节点办理⼈ Map
查询详情(单条) * * @param leaveInfoInfoParam * @return * @throws Exception */ @Override public ApiResult info(LeaveInfoInfoParam leaveInfoInfoParam) throws Exception { //
查询 LeaveInfoEntity leaveInfoDB = bject(()); if ((leaveInfoDB)) { return s(); } List
查询待审批列表 * * @param jobListParam * @return * @throws Exception */ @Override public ApiResult jobList(LeaveInfoJobListParam jobListParam) throws Exception { List
完成审批 * * @param approvalParam * @return * @throws Exception */ @Transactional(propagation = ED, rollbackFor = {}) @Override public ApiResult approval(LeaveInfoApprovalParam approvalParam) throws Exception { List
删除(单条) * * @param leaveInfoDeleteParam * @return * @throws Exception */ @Override @Transactional(propagation = ED, rollbackFor = {}) public ApiResult delete(LeaveInfoDeleteParam leaveInfoDeleteParam) throws Exception { LeaveInfoEntity leaveInfoDB = bject(()); if ((leaveInfoDB) || !(dentId(), rId())) { return e(_INFO_NOT_EXIST); } //
查询请假流程实例 ProcessInstance processInstance = rocessInstance(T_LEAVE_PROCESS_KEY, ()); //
删除请假流程实例 ProcessInstance((), eteReason()); //
删除请假信息 (leaveInfoDB); return s(); }⾄此,⼀个简单的请假流程已经实现了。更多的使⽤细节,可参考项⽬源码。4 推荐参考资料5 Github 源码个⼈公众号:404Code,分享半个互联⽹⼈的技术与思考,感兴趣的可以关注.
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690874692a452330.html
评论列表(0条)