工作流-流程部署

来源:互联网 发布:java贪吃蛇游戏源代码 编辑:程序博客网 时间:2024/05/21 17:31

流程图:


环境配置:

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"><!-- 注册一个流程引擎配置对象 --><bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"><property name="jdbcDriver" value="com.mysql.jdbc.Driver"/><property name="jdbcUrl" value="jdbc:mysql:///stu"/><property name="jdbcUsername" value="root"/><property name="jdbcPassword" value="123456"/><property name="databaseSchemaUpdate" value="true"/></bean><!-- 使用工厂bean创建流程引擎对象 --><bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean"><!-- 注入上面的配置对象 --><property name="processEngineConfiguration" ref="processEngineConfiguration"/></bean></beans> 

流程部署:act_re_deployment(流程部署表)   act_re_procedef(流程定义表)  act_re_model(流程设计模型表)

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();// 获取仓库服务// 部署流程定义读取单个文件的方式部署流程定义@Testpublic void demo1(){DeploymentBuilder deploymentBuilder = processEngine.getRepositoryService().createDeployment();deploymentBuilder.addClasspathResource("demo1.bpmn");deploymentBuilder.addClasspathResource("demo1.png"); Deployment deployment = deploymentBuilder.deploy();System.out.println(deployment.getId());}// 通过zip的方式部署流程定义@Testpublic void demo2(){DeploymentBuilder deploymentBuilder = processEngine.getRepositoryService().createDeployment();ZipInputStream zipInputStream = new ZipInputStream(this.getClass().getClassLoader().getResourceAsStream("process.zip"));deploymentBuilder.addZipInputStream(zipInputStream);Deployment deployment = deploymentBuilder.deploy();System.out.println(deployment.getId());}

部署信息操作:

// 查询部署信息列表--查询部署表中的数据act_re_deployment@Testpublic void demo3(){DeploymentQuery mq = processEngine.getRepositoryService().createDeploymentQuery();List<Deployment> dyList = mq.list();for(Deployment dy: dyList){System.out.println(dy.getId());}}// 查询流程定义表---查询流程定义act_re_procdef@Testpublic void demo4(){ProcessDefinitionQuery pdq = processEngine.getRepositoryService().createProcessDefinitionQuery();List<ProcessDefinition> pdfList = pdq.list();for(ProcessDefinition pd : pdfList){System.out.println(pd.getId());}}//act_re_deployment@Testpublic void demo5(){String deploymentId = "401";boolean cascade = true;// 是否级联删除processEngine.getRepositoryService().deleteDeployment(deploymentId,cascade);}

启动流程实例:

启动的同时会在:表 ACT_RE_TASK 和 ACT_RU_EXECUTION 中创建数据:

ACT_RE_TASK : 

字段说明:execution_id_ 实例ID(外键), proc_inst_id_ 流程实例ID  分别关联表ACT_RE_EXECUTION 中的 ID(主键),和proc_inst_id(流程实例ID)。

ACT_RE_EXECUTION:

除了在流程中启动的子流程之外,流程启动之后在表ACT_RU_EXECUTION中的字段ID_PROC_INST_ID_字段值是相同的.

2) 值不相等的情况:

不相等的情况目前只会出现在子流程中(包含:嵌套、引入),例如一个购物流程中除了下单、出库节点之外可能还有一个付款子流程,在实际企业应用中付款流程通常是作为公用的,所以使用子流程作为主流程(购物流程)的一部分。

当任务到达子流程时引擎会自动创建一个付款流程,但是这个流程有一个特殊的地方,在数据库可以直观体现,

两条数据,第二条数据(嵌入的子流程)的PARENT_ID_等于第一条数据的ID_PROC_INST_ID_,并且两条数据的PROC_INST_ID_相同。

还有一点特殊的地方,字段IS_ACTIVE_的值分别是01,说明正在执行子流程主流程挂起

// 启动流程实例@Testpublic void demo6(){// 根据 act_re_procdef(key) 关键字/*String kye="splc";ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey(kye);*/// 根据act_re_procdef(Id) 关键字String Id = "GZLC:1:1704";ProcessInstance pi =  processEngine.getRuntimeService().startProcessInstanceById(Id);System.out.println(pi.getId());}// 查询流程实例@Testpublic void demo7(){ProcessInstanceQuery piq = processEngine.getRuntimeService().createProcessInstanceQuery();List<ProcessInstance> list = piq.list();for (ProcessInstance pi : list) {System.out.println(pi.getId());}}




0 0
原创粉丝点击