35activiti - 接收活动(receiveTask,即等待活动)

简介: 35activiti - 接收活动(receiveTask,即等待活动)

接收任务是一个简单任务,它会等待对应消息的到达。 当前,官方只实现了这个任务的java语义。 当流程达到接收任务,流程状态会保存到数据库中。

在任务创建后,意味着流程会进入等待状态, 直到引擎接收了一个特定的消息, 这会触发流程穿过接收任务继续执行。

1.流程图

2.部署流程定义+启动流程实例
/**
   * 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("流程正常执行!!!,已经结束了");
      }
  }

分析:

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

目录
相关文章
|
7月前
|
SQL 前端开发
OA项目之会议通知(查询&是否参会&反馈详情)(一)
OA项目之会议通知(查询&是否参会&反馈详情)
|
7月前
OA项目之会议通知(查询&是否参会&反馈详情)(三)
OA项目之会议通知(查询&是否参会&反馈详情)
|
8月前
TienChin 活动管理-添加活动接口
TienChin 活动管理-添加活动接口
31 0
|
8月前
TienChin 活动管理-修改活动
TienChin 活动管理-修改活动
22 0
|
8月前
|
前端开发
TienChin 活动管理-活动列表展示
TienChin 活动管理-活动列表展示
23 0
|
8月前
TienChin 活动管理-设置活动的默认状态
TienChin 活动管理-设置活动的默认状态
23 0
|
8月前
TienChin 活动管理-删除活动
TienChin 活动管理-删除活动
23 0
|
6天前
|
移动开发 运维 监控
应用研发平台EMAS常见问题之前台控制在收到通知后通知栏不显示通知如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
23 0
|
7月前
钉钉中,如果你想使用卡片模板ID来发送工作通知
钉钉中,如果你想使用卡片模板ID来发送工作通知
150 2
|
6天前
|
小程序 安全 搜索推荐
【社区每周】订单中心新增30+状态模板;《小程序安全开发指引》正式发布(2022年7月第二期)
【社区每周】订单中心新增30+状态模板;《小程序安全开发指引》正式发布(2022年7月第二期)
34 0