(二)工作流Activiti7流程部署和启动

前置工作

使用Idea创建bpmn.xml文件并定义流程:
在这里插入图片描述
在这里插入图片描述
这里我定义了一个请假流程,流程定义文件保存在resource资源目录下的**/bpmn/leave.bpmn20.xml**
在这里插入图片描述
开始部署流程:

    @Test
    public void testActiviti(){
        //创建ProcessEngineConfiguration
        ProcessEngineConfiguration 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
在这里插入图片描述
到这里流程已经部署完成了,可以开始启动流程实例了。比如请假流程,每一个请假流程都会启动一个请假流程实例,就好比类和对象的关系,流程就是类,启动一个流程就好比创建一个对象。每个人的请假流程都是独立的且互不干扰。

     /**
       * 启动一个流程实例
       */
    @Test
    public void startInstance(){
        //创建ProcessEngineConfiguration
        ProcessEngineConfiguration 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部长的任务信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值