wordpress改站点地址,台州网站推广优化,网站建设 电子商务 品牌首选IDC,深圳厉害的室内设计公司前言
Activiti项目是一项新的基于Apache许可的开源BPM平台#xff0c;从基础开始构建#xff0c;旨在提供支持新的BPMN 2.0标准#xff0c;包括支持对象管理组#xff08;OMG#xff09;#xff0c;面对新技术的机遇#xff0c;诸如互操作性和云架构#xff0c;提供技…前言
Activiti项目是一项新的基于Apache许可的开源BPM平台从基础开始构建旨在提供支持新的BPMN 2.0标准包括支持对象管理组OMG面对新技术的机遇诸如互操作性和云架构提供技术实现。
创始人Tom Baeyens是JBoss jBPM的项目架构师以及另一位架构师Joram Barrez一起加入到创建 Alfresco这项首次实现Apache开源许可的BPMN 2.0引擎开发中来。
Activiti是一个独立运作和经营的开源项目品牌并将独立于Alfresco开源ECM系统运行。 Activiti将是一种轻量级可嵌入的BPM引擎而且还设计适用于可扩展的云架构。 Activiti将提供宽松的Apache许可2.0以便这个项目可以广泛被使用同时促进Activiti BPM引擎和BPMN 2.0的匹配该项目现正由OMG通过标准审定。 加入Alfresco Activiti项目的是VMware的SpringSource分支Alfresco的计划把该项目提交给Apache基础架构希望吸引更多方面的BPM专家和促进BPM的创新。
代码实现
流程部署、查询流程定义启动流程、查询流程待办任务、完成任务已结束流程、已完成任务
dependencygroupIdorg.activiti/groupIdartifactIdactiviti-spring-boot-starter/artifactIdversion7.1.0.M6/version
/dependency# 服务配置
server:port: 8088# spring配置
spring:# 数据源配置datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/boot_activiti?useUnicodetrueuseSSLfalseserverTimezoneUTCcharacterEncodingUTF8nullCatalogMeansCurrenttrueusername: rootpassword: root# activiti7配置activiti:# 建表策略可选值true,false,create-drop,drop-createdatabase-schema-update: true# 自动部署检查默认校验resources下的processes文件夹里的流程文件check-process-definitions: false# 保存历史数据等级可选值none,activity,audit,fullhistory-level: full# 检测历史表是否存在db-history-used: truepackage com.qiangesoft.activiti.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.factory.PasswordEncoderFactories;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;Configuration
EnableWebSecurity
public class WebSecurityConfig {Beanpublic UserDetailsService userDetailsService() {PasswordEncoder encoder PasswordEncoderFactories.createDelegatingPasswordEncoder();InMemoryUserDetailsManager manager new InMemoryUserDetailsManager();manager.createUser(User.withUsername(admin).password(encoder.encode(123456)).roles(USER).build());return manager;}
}package com.qiangesoft.activiti.controller;import com.qiangesoft.activiti.constant.ProcessConstant;
import com.qiangesoft.activiti.constant.R;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Deployment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** 流程定义 控制器** author lq* date 2024-02-27*/
RestController
RequestMapping(/definition)
public class ProcessDefinitionController {Autowiredprivate RepositoryService repositoryService;GetMapping(/deploy)public R deploy() {// 部署流程Deployment deployment repositoryService.createDeployment().addClasspathResource(bpmn/test.bpmn20.xml).deploy();return R.ok(deployment);}GetMapping(/list)public R list() {// 查询部署流程ListDeployment deploymentList repositoryService.createDeploymentQuery().deploymentKey(ProcessConstant.PROCESS_KEY)
// .deploymentName().orderByDeploymenTime().desc().list();return R.ok(deploymentList);}GetMapping(/get)public R get() {Deployment deployment repositoryService.createDeploymentQuery().deploymentKey(ProcessConstant.PROCESS_KEY)
// .deploymentName().latest().singleResult();return R.ok(deployment);}}
package com.qiangesoft.activiti.controller;import com.qiangesoft.activiti.constant.ProcessConstant;
import com.qiangesoft.activiti.constant.R;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.runtime.ProcessInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** 流程实例 控制器** author lq* date 2024-02-27*/
RestController
RequestMapping(/instance)
public class ProcessInstanceController {Autowiredprivate RuntimeService runtimeService;GetMapping(/start)public R start() {// 启动流程提供流程key业务key主题String businessId 101;ProcessInstance processInstance runtimeService.createProcessInstanceBuilder().processDefinitionKey(ProcessConstant.PROCESS_KEY).businessKey(ProcessConstant.BUSINESS_KEY_PREFIX businessId).name(请假流程).start();return R.ok(processInstance.toString());}GetMapping(/list)public R list() {// 查询进行中的流程实例ListProcessInstance processInstanceList runtimeService.createProcessInstanceQuery().processDefinitionKey(ProcessConstant.PROCESS_KEY)
// .deploymentId()
// .processInstanceId()
// .processInstanceBusinessKey()
// .processInstanceNameLike(请假流程).active().orderByProcessInstanceId().desc().list();return R.ok(processInstanceList.toString());}GetMapping(/get)public R get(String instanceId) {// 某个实例ProcessInstance processInstance runtimeService.createProcessInstanceQuery().processInstanceId(instanceId).singleResult();return R.ok(processInstance null ? null : processInstance.toString());}}
package com.qiangesoft.activiti.controller;import com.qiangesoft.activiti.constant.R;
import org.activiti.engine.TaskService;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** 流程待办 控制器** author lq* date 2024-02-27*/
RestController
RequestMapping(/task)
public class TaskController {Autowiredprivate TaskService taskService;GetMapping(/mine)public R mine() {// 某人的待办任务按照时间倒序String userId zhangsan;ListTask taskList taskService.createTaskQuery()
// .processDefinitionKey()
// .taskCandidateOrAssigned().taskAssignee(userId).active().orderByTaskCreateTime().desc().list();return R.ok(taskList.toString());}GetMapping(/handle)public R handle(String taskId) {// 完成任务taskService.complete(taskId);return R.ok();}}
package com.qiangesoft.activiti.controller;import com.qiangesoft.activiti.constant.ProcessConstant;
import com.qiangesoft.activiti.constant.R;
import org.activiti.engine.HistoryService;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.history.HistoricTaskInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** 历史 控制器** author lq* date 2024-02-27*/
RestController
RequestMapping(/history)
public class HistoryController {Autowiredprivate HistoryService historyService;GetMapping(/finished)public R finished() {// 已结束的流程按照结束时间倒序ListHistoricProcessInstance processInstanceList historyService.createHistoricProcessInstanceQuery()
// .processInstanceId()
// .deploymentId()
// .processDefinitionName()
// .processInstanceBusinessKey().processDefinitionKey(ProcessConstant.PROCESS_KEY).finished().orderByProcessInstanceEndTime().desc().list();return R.ok(processInstanceList.toString());}GetMapping(/completed)public R completed() {// 某人已完成的任务按照完成时间倒序String userId zhangsan;ListHistoricTaskInstance processInstanceList historyService.createHistoricTaskInstanceQuery()
// .processInstanceId()
// .deploymentId()
// .processDefinitionName()
// .processInstanceBusinessKey().taskAssignee(userId).processDefinitionKey(ProcessConstant.PROCESS_KEY).finished().orderByHistoricTaskInstanceEndTime().desc().list();return R.ok(processInstanceList.toString());}}
点击下载