activiti创建子流程_用Activiti实现一个简单的请假流程

创建一个流程

通过借用eclipse来创建一个请假流程。最主要的节点为StartEvent-->UserTask-->EndEVent

点击空白位置可以定义此次流程的一些属性,Id就是后面开启一个流程需要的key

bcdeca14f2c99bf5a0edb13757789a1b.png

建立用户任务

ad5bb67bbf96aa815f00babe48edd2bf.png

00826dc930f0fa9c467c5e98e9d740cb.png

其中Assignee则是我们可以指定这个任务执行人的key值。等到完成任务时需要传递参数进去,像这样:

    Map<String, Object> map = new HashMap<>();
    map.put("operCode","12345465");
    // taskId 就是查询任务中的 ID
    String taskId = "226";
    // 完成审批任务
    taskService.complete(taskId,map);

发布流程

通过使用eclipse插件来创建的bpmn文件来发布,其实就是把文件变成可以执行的东西,发布完成后所有的流程定义都会被添加到数据库中。即使你的Spring应用重启了,依然可以获取得到已发布的流程。

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    // 创建部署对象
Deployment deployment = processEngine.getRepositoryService().createDeployment()
    // 声明此次发布流程的名称
    .name("请假申请审核流程")
    // 加载资源文件,一次只能加载一个文件
    .addClasspathResource("activiti/flow3.bpmn")
    // 部署
    .deploy();
​

启动一个流程实例

上面把流程定义发布到activiti引擎后,就可以基于它来发起新的流程实例。对于每个流程定义可以有多个流程实例。

RuntimeService runtimeService = processEngine.getRuntimeService();
        Map<String, Object> variables = new HashMap<>();
        variables.put("operCode", "123491");
//         启动一个流程正式走流程  并获取流程实例
//         因动多个所以每启动一个请假单流程都会在数据库中插入一条新版本的流程数据
//         通过key启动为该请假单流程可以会启最新版本的流程
        // 业务id
        String buissnessKey = "123456";
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess",buissnessKey,variables);

myProcess是我们在bpmnxml中配置的key,通过一个Map来添加一下流程变量,通过也可以通过传递buissnessKey来将工作流和我们具体的业务关联在一起。当发布成功后act_ru_executionBUSSINESS_KEY会存储刚刚传入的buissnessKey.

完成任务

流程启动后,第一步就是用户任务。为了让流程实例继续运行,我们需要完成整个任务。对Activiti来说,就是需要complete任务。 所以首先要获取得到当前流程的任务ID,接着调用complate方法就完成了一个任务,就会进入到下一个流程。下面的代码展示了如何做这件事:

    TaskService taskService = processEngine.getTaskService();
    Map<String, Object> map = new HashMap<>();
    map.put("xxx","12345465");
    // taskId 就是查询任务中的 ID
    String taskId = "226";
    // 完成审批任务
    taskService.complete(taskId,map);

流程实例会进入到下一个环节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值