12.activiti工作流-接收活动(receiveTask,即等待活动)

接收任务是一个简单任务,它会等待对应消息的到达。 当前,官方只实现了这个任务的java语义。 当流程达到接收任务,流程状态会保存到数据库中。
在任务创建后,意味着流程会进入等待状态, 直到引擎接收了一个特定的消息, 这会触发流程穿过接收任务继续执行。

流程图

这里写图片描述

部署流程定义+启动流程实例

/**
     * ReceiceTask任务,机器自动完成的任务
     * 只会在act_ru_execution表中产生一条数据
     * @throws Exception
     */


    @Test
    public void testExecution() throws Exception {
        // 1 发布流程
        InputStream inputStreamBpmn = this.getClass().getResourceAsStream("receiveTask.bpmn");
        InputStream inputStreamPng = this.getClass().getResourceAsStream("receiveTask.png");
        processEngine.getRepositoryService()//
                        .createDeployment()//
                        .addInputStream("receiveTask.bpmn", inputStreamBpmn)//
                        .addInputStream("receiveTask.png", inputStreamPng)//
                        .deploy();

        // 2 启动流程
        ProcessInstance pi = processEngine.getRuntimeService()//
                            .startProcessInstanceByKey("receiveTaskDemo");
        System.out.println("pid:" + pi.getId());
        String pid = pi.getId();

        // 3查询是否有一个执行对象在描述”汇总当日销售额“
        Execution e1 = processEngine.getRuntimeService()//
                        .createExecutionQuery()//
                        .processInstanceId(pid)//
                        .activityId("汇总当日销售额")//
                        .singleResult();

        // 4执行一堆逻辑,并设置流程变量
        Map<String,Object> vars = new HashMap<String, Object>();
        vars.put("当日销售额", 10000);
        //  5流程向后执行一步:往后推移e1,使用signal给流程引擎信号,告诉他当前任务已经完成了,可以往后执行
        processEngine.getRuntimeService()
                .signal(e1.getId(),vars);

        // 6判断当前流程是否在”给老板发短信“节点
        Execution e2 = processEngine.getRuntimeService()//
                        .createExecutionQuery()//
                        .processInstanceId(pid)//
                        .activityId("给总经理发短信")//
                        .singleResult();

        // 7获取流程变量
        Integer money = (Integer) processEngine.getRuntimeService()//
                                .getVariable(e2.getId(), "当日销售额");
        System.out.println("老板,今天赚了" +money);
        // 8向后执行一步:任务完成,往后推移”给老板发短信“任务
        processEngine.getRuntimeService()//
                .signal(e2.getId());


        // 9查询流程状态
        pi = processEngine.getRuntimeService()//
                        .createProcessInstanceQuery()//
                        .processInstanceId(pid)//
                        .singleResult();
        if(pi==null){
                System.out.println("流程正常执行!!!,已经结束了");
        }
    }

说明:
1)当前任务(一般指机器自动完成,但需要耗费一定时间的工作)完成后,向后推移流程,可以调用runtimeService.signal(executionId),传递接收执行对象的id。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
01-课程计划02-Activiti工作概念(使用程序演示工作执行)03-Activiti介绍04-准备Activiti开发环境05-准备开发环境(配置文件)和核心API的介绍06-Activiti入门程序HelloWorld演示程的执行07-程定义的CRUD(上)08-程定义的CRUD(下)09-程实例,任务,执行对象控制程的执行(上)10-程实例,任务,执行对象控制程的执行(下)11-程变量(上)12-程变量(下)13-程历史数据查询14-第一天知识点回顾15-连线16-排他网关17-并行网关18-程实例开始结束19-接收任务活动receiveTask)20-个人任务分配(三种方式)21-组任务分配(三种方式)22-工作提供的用户角色组(IdentityService)23-项目框架搭建(Struts)24-请假程管理系统框架搭建(Spring+Struts)25-请假程图26-知识点回顾27-系统登录(Session)28-自定义拦截器实现Session验证29-部署程定义(zip文件部署)30-程定义和部署对象查询31-查看程图和删除程定义32-请假单业务的查询列表和新增保存33-请假单业务的编辑保存和删除34-申请请假(启动程实例)35-查找正在执行的个人任务列表36-使用类动态指定下一个任务的办理人37-办理任务(获取任务节点form key中的值)38-办理任务(使用任务ID,查询请假单)39-办理任务(使用任务ID,查询任务完成后的连线名称集合)40-完成任务41-查询办理任务时操作的历史批注信息(上)42-查询办理任务时操作的历史批注信息(下)43-在请假单中查询历史批注信息(使用请假单ID查询)44-查看当前程图和课程总结

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunywz

~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值