activiti画流程图、部署、启动、审批、驳回

工作流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("成功");

	}

如果选择提交,表示该节点已通过,到下一个节点了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值