首页 > 编程知识 正文

Activiti审批中流程终止,activiti 部署流程

时间:2023-05-04 18:35:57 阅读:212503 作者:1538

工作流activiti

业务过程的部分或整体在计算机应用环境下自动化,使多个参与者按照某种预定义的规则进行。

activiti版本5.13

一、画流程图
1、创建web项目,安装activiti插件
2、引入activiti相关jar包
3、新建流程图—单实例流程
3-1、节点只需要设置Assignee

3-2、连线的设置

如果是提交,outcome==‘提交’
如果是批准,outcome==‘批准’
如果是驳回,outcome==‘驳回’
3-3、流程定义key设置
点击空白处

二、流程部署
1、引入activiti.cfg.xml,配置数据库连接

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--数据库配置--> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="**url地址**"/> <property name="username" value="**用户名**"/> <property name="password" value="**密码**"/> </bean> <!--流程配置器--> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <property name="dataSource" ref="dataSource"/> <!--流程引擎名称(使用ProcessEngines.getDefaultProcessEngine()方法时请不要配置流程引擎名称)--> <property name="processEngineName" value="MyProcessEngine"/> <!-- databaseSchemaUpdate: 设置流程引擎启动和关闭时如何处理数据库表。 false(默认):检查数据库表的版本和依赖库的版本, 如果版本不匹配就抛出异常。 true: 构建流程引擎时,执行检查,如果需要就执行更新。 如果表不存在,就创建 create-drop: 构建流程引擎时创建数据库表, 关闭流程引擎时删除这些表。 --> <property name="databaseSchemaUpdate" value="true"/> <property name="historyLevel" value="FULL"/> </bean></beans>

2-1、classpath方式
见2-2
2-2、InputStream方式

任何操作要先获得流程引擎对象(ProcessEngine),所有的方法都要从流程引擎对象中获得。

public static void main(String[] args) throws FileNotFoundException {//使用InputStream加载 FileInputStream fileInputStream = new FileInputStream("E:\eclipse\workspace\power\src\main\resources\ibp\act\phase\test02.bpmn");//读取配置文件,获取工作流的引擎实例 ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml"); //获取引擎对象 ProcessEngine engine = processEngineConfiguration.buildProcessEngine(); //根据流程引擎对象获取流程部署服务对象 RepositoryService service = engine.getRepositoryService(); //通过service 部署流程图 DeploymentBuilder builder = service.createDeployment(); Deployment deploy = builder .name("test02") .addInputStream("test02.bpmn", fileInputStream) //.addClasspathResource("E:\eclipse\workspace\power\src\main\resources\ibp\act\phase\test01.bpmn")//加载资源文件,一次只能加载一个文件 //.addClasspathResource("E:\eclipse\workspace\power\src\main\resources\ibp\act\phase\test01.png")// .deploy(); //输入流程部署对象的信息 System.out.println("流程部署成功!"); System.out.println(deploy.getId()); System.out.println(deploy.getName());}

部署成功之后,数据库生成23张关于activiti表

#资源库流程规则表select * from act_re_deployment #部署信息表select * from act_re_model #流程设计模型部署表select * from act_re_procdef #流程定义数据表select * from act_ge_bytearray #资源文件表select * from act_ge_property #部署ID主键生成策略表#运行时数据库表select * from act_ru_execution#运行时流程执行实例表select * from act_ru_identitylink#运行时流程人员表,主要存储任务节点与参与者的相关信息select * from act_ru_task#运行时任务节点表select * from act_ru_variable#运行时流程变量数据表#历史数据库表select * from act_hi_actinst #历史节点表select * from act_hi_attachment#历史附件表select * from act_hi_comment#历史意见表select * from act_hi_identitylink#历史流程人员表select * from act_hi_detail#历史详情表,提供历史变量的查询select * from act_hi_procinst#历史流程实例表select * from act_hi_taskinst#历史任务实例表select * from act_hi_varinst#历史变量表

查询表act_re_deployment,表示部署成功。

这里是引用以上两种部署方式,一次只能部署一个资源,除非执行多次。Zip压缩包方式一次可以部署多个资源。

2-3、zip压缩包部署

三、启动流程

public static void main(String[] args) { ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");//拿到流程引擎对象 ProcessEngine engine = processEngineConfiguration.buildProcessEngine(); //获得运行时的service RuntimeService runtimeService = engine.getRuntimeService(); //初始化设置assignee,用户可以在界面上设置任务节点的执行人 Map<String,Object> map=new HashMap<>(); map.put("pm_id","8055"); map.put("pm","10033"); map.put("pd_id","7433"); //三个参数分别代表含义1、流程定义key;2、关联业务表business_key,一般用业务表主键;3、初始化参数map ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("test02", "9111221",map); System.out.println("流程启动成功,流程实例=========>"+processInstance.getId());}

查询运行时任务表act_ru_task,表示流程已经启动

三、提交、审批、驳回流程

outcome是画流程图的连线名称(自己定义的),当前节点要执行什么操作(如:批准,驳回,提交),只需传对应的连线名称就行。如果不使用初始化默认审批人,需要变更下一个节点审批人,在map中指定就行。

public static void main(String[] args) { ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml"); ProcessEngine engine = processEngineConfiguration.buildProcessEngine(); //获得任务相关service TaskService taskService=engine.getTaskService(); Map<String,Object> map=new HashMap<>(); //项目经理提交 map.put("outcome", "提交");//连线名称 //质管审批 //map.put("outcome", "批准"); //map.put("outcome", "驳回"); //当前的任务id taskService.complete("326707",map); System.out.println("成功");}

如果选择提交,表示该节点已通过,到下一个节点了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。