本文主要是介绍(二)工作流Activiti7流程部署和启动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前置工作
使用Idea创建bpmn.xml文件并定义流程:
这里我定义了一个请假流程,流程定义文件保存在resource资源目录下的**/bpmn/leave.bpmn20.xml**
开始部署流程:
@Testpublic void testActiviti(){//创建ProcessEngineConfigurationProcessEngineConfiguration configuration =ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");//通过ProcessEngineConfiguration创建ProcessEngine,此时会创建数据库ProcessEngine processEngine = configuration.buildProcessEngine();// 使用RepositoryService进行部署Deployment deployment = processEngine.getRepositoryService().createDeployment().addClasspathResource("bpmn/leave.bpmn20.xml").name("请假流程").deploy();// 4、输出部署信息System.out.println("流程部署id:" + deployment.getId());System.out.println("流程部署名称:" + deployment.getName());}
执行上面的代码后Activitri会自动帮我们把定义好的流程以及其他的信息一起保存在数据库,我们可以在数据库中查看到流程的部署信息:
ACT_RE_DEPLOYMENT
保存流程文件的ACT_GE_BYTEARRAY
到这里流程已经部署完成了,可以开始启动流程实例了。比如请假流程,每一个请假流程都会启动一个请假流程实例,就好比类和对象的关系,流程就是类,启动一个流程就好比创建一个对象。每个人的请假流程都是独立的且互不干扰。
/*** 启动一个流程实例*/@Testpublic void startInstance(){//创建ProcessEngineConfigurationProcessEngineConfiguration configuration =ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");//通过ProcessEngineConfiguration创建ProcessEngine,此时会创建数据库ProcessEngine processEngine = configuration.buildProcessEngine();// 启动一个请假实例,开始请假流程ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceById("leave:2:5003");// 输出内容System.out.println("流程定义id:"+processInstance.getProcessDefinitionId());System.out.println("流程实例id:"+processInstance.getId());System.out.println("活动编号"+processInstance.getActivityId());}
启动一个实例后就开始startEvent了,Activiti就帮我们定义好了每个人的任务在数据库中:
ACT_RU_TASK表:
每当一个任务完成后就会从系统中删除,而在历史表中更新END_TIME字段,比如说请假流程xx科长审批完成,系统就会在task表中删除xx科长的任务信息添加xx部长的审批任务,历史任务表中的xx科长就会更新完成时间,新增xx部长的任务信息。
这篇关于(二)工作流Activiti7流程部署和启动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!