`
fackyou200
  • 浏览: 309538 次
  • 性别: Icon_minigender_1
  • 来自: 山西太原
社区版块
存档分类
最新评论

Activiti5 定时任务 定时边界事件

 
阅读更多

activiti定时边界事件

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
  <process id="myProcess" name="My process" isExecutable="true">
    <startEvent id="startevent1" name="Start"></startEvent>
    <userTask id="usertask1" name="1" activiti:assignee="lingling"></userTask>
    <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
    <boundaryEvent id="boundarytimer1" name="Timer" attachedToRef="usertask1" cancelActivity="false">
      <timerEventDefinition>
        <timeDuration>${timeDuration}</timeDuration>
      </timerEventDefinition>
    </boundaryEvent>
    <userTask id="usertask2" name="2" activiti:assignee="dongxh"></userTask>
    <sequenceFlow id="flow4" sourceRef="usertask1" targetRef="usertask2"></sequenceFlow>
    <endEvent id="endevent1" name="End"></endEvent>
    <sequenceFlow id="flow5" sourceRef="usertask2" targetRef="endevent1"></sequenceFlow>
    <boundaryEvent id="boundarytimer2" name="Timer" attachedToRef="usertask2" cancelActivity="false">
      <timerEventDefinition>
        <timeDuration>${timeDuration}</timeDuration>
      </timerEventDefinition>
    </boundaryEvent>
    <serviceTask id="servicetask1" name="Service Task" activiti:delegateExpression="${swTimeOutProcessorListener}"></serviceTask>
    <sequenceFlow id="flow6" sourceRef="boundarytimer1" targetRef="servicetask1"></sequenceFlow>
    <sequenceFlow id="flow7" sourceRef="boundarytimer2" targetRef="servicetask1"></sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_myProcess">
    <bpmndi:BPMNPlane bpmnElement="myProcess" id="BPMNPlane_myProcess">
      <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
        <omgdc:Bounds height="35.0" width="35.0" x="60.0" y="80.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
        <omgdc:Bounds height="35.0" width="35.0" x="660.0" y="80.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1">
        <omgdc:Bounds height="78.0" width="105.0" x="202.0" y="59.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="boundarytimer1" id="BPMNShape_boundarytimer1">
        <omgdc:Bounds height="30.0" width="30.0" x="230.0" y="130.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="usertask2" id="BPMNShape_usertask2">
        <omgdc:Bounds height="55.0" width="105.0" x="411.0" y="70.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="boundarytimer2" id="BPMNShape_boundarytimer2">
        <omgdc:Bounds height="30.0" width="30.0" x="449.0" y="114.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="servicetask1" id="BPMNShape_servicetask1">
        <omgdc:Bounds height="55.0" width="105.0" x="317.0" y="240.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
        <omgdi:waypoint x="95.0" y="97.0"></omgdi:waypoint>
        <omgdi:waypoint x="202.0" y="98.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow4" id="BPMNEdge_flow4">
        <omgdi:waypoint x="307.0" y="98.0"></omgdi:waypoint>
        <omgdi:waypoint x="411.0" y="97.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow5" id="BPMNEdge_flow5">
        <omgdi:waypoint x="516.0" y="97.0"></omgdi:waypoint>
        <omgdi:waypoint x="660.0" y="97.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow6" id="BPMNEdge_flow6">
        <omgdi:waypoint x="245.0" y="160.0"></omgdi:waypoint>
        <omgdi:waypoint x="369.0" y="240.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow7" id="BPMNEdge_flow7">
        <omgdi:waypoint x="464.0" y="144.0"></omgdi:waypoint>
        <omgdi:waypoint x="369.0" y="240.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

 流程图:

 

 

 

 

serviceTask处理:

 

@Component
public class SwTimeOutProcessorListener implements JavaDelegate {

	@Autowired
	private TimeOutManagerService timeOutManagerService;
	@Autowired
	private TaskService taskService;
	
	@Override
	public void execute(DelegateExecution execution) throws Exception {
		//获得事务id
		String businessKey = execution.getProcessBusinessKey();
		Task task = taskService.createTaskQuery().processInstanceId(execution.getProcessInstanceId()).singleResult();
        String assignee =task.getAssignee();
        
        System.out.println(assignee);
		
		//插入超时记录
		//timeOutManagerService.addTimeOut(Integer.valueOf(assignee), Integer.valueOf(businessKey));
		
		
	}

}

 

 

定时边间事件:cancelActivity 说明:

cancelActivity属性:true时,当timer触发时,当前的activity被中断(流程结束);

                                false时,当timer触发时,不会被中断(流程原点,流程不会结束),

 

当执行循环定时器时,虽然cancelActivity=true,但是该acitivity还是会持续生成

 

cancelActivity默认为true中断事件(结束流程)

cancelActivity为false非中断事件(还停留在原地,流程不结束)

中断和非中断的事件还是有区别的。默认是中断事件。

非中断事件的情况,不会中断原始环节,那个环节还停留在原地。 对应的,会创建一个新分支,并沿着事件的流向继续执行。 

 

例子:



 

  • 大小: 15.1 KB
  • 大小: 12.9 KB
分享到:
评论

相关推荐

    Spring cloud和流程引擎activiti5整合代码二,事件网关,定时事件和信号事件

    在Activiti中,可以通过定义用户任务的边界事件来设置定时器,例如设置一个定时器来触发后续操作,或者当任务超时时自动结束任务。在流程图中,定时事件通常表现为一个带有时间钟形的图标,旁边附加了时间表达式。 ...

    Activiti-activiti-5.22.0 源码

    4. **事件与信号**:Activiti 中有多种事件类型,如开始事件、结束事件、边界事件等,用于处理流程中的异常或特定条件。源码中可以学习这些事件如何触发和处理,以及信号的发送和接收机制。 5. **表单和表单字段**...

    Activiti5学习笔记

    Activiti支持事件和信号机制,如边界事件、 Intermediate Catch/Throw Signal Event,可以用来处理异常或触发流程的特定行为。 七、服务调用与集成 1. 服务任务:Activiti允许在流程中调用外部服务,如Java类、Web...

    bpmn适配activiti.rar

    5. 表单与任务处理:了解Activiti如何处理表单数据和任务分配,以及如何自定义表单字段和任务监听器。 6. 流程变量和数据管理:学习如何定义和操作流程变量,以及如何通过边界事件和事件子流程处理异常情况。 7. ...

    Activiti工作流数据库表结构_工作流数据库_Activiti5_

    6. **ACT_RU_EVENT_SUBSCR**(事件订阅表):记录流程中等待特定事件触发的订阅信息,如边界事件、信号事件等。 7. **ACT_RU_JOB**(作业表):处理定时任务和异步操作,如发送邮件、调用服务任务等。当一个任务...

    activiti-6.0.0.zip

    5. **强大的事件处理**:支持多种事件类型,如信号事件、边界事件等,使得流程能够灵活应对各种业务场景。 6. **任务API**:提供丰富的任务API,允许开发者对任务进行查询、领取、完成、委托等操作,方便实现工作流...

    activiti文档

    - **边界事件**:不同类型的边界事件。 - **中间捕获事件**:不同类型的中间捕获事件。 - **内部触发事件**:不同类型的内部触发事件。 - **顺序流**:描述顺序流的概念及用法。 - **条件顺序流**:设置带有条件的...

    Activiti 5.13 用户指南(中文版)

    介绍BPMN的核心结构,包括自定义扩展、各种事件(定时器、错误、信号、消息)、开始和结束事件、边界事件、捕获和中间事件、顺序流网关、任务描述等。此外,还包括了流程图的图形标记、XML内容描述、条件顺序流、...

    工作流之activiti

    9. **事件处理(Event Handling)**:Activiti 支持多种事件类型,如定时事件、边界事件等,可以用来响应特定的业务状况。 10. **用户界面(User Interface)**:activiti-explorer.war 文件通常会提供一个Web界面...

    Activiti 5.16.4源代码

    源代码揭示了任务生命周期的管理,以及如何处理用户任务、定时任务和信号事件。 4. **工作流API**:Activiti 提供了一套丰富的 Java API 和 RESTful API,用于与流程引擎交互。通过源代码,可以学习如何使用这些 ...

    activiti(临远大神demo)

    或者添加新的功能,比如通知、定时任务等,以增强对Activiti的掌控力。 在学习过程中,遇到问题不要怕,多查阅资料,参考社区的讨论,或者直接研究临远大神的代码,你会发现Activiti是一个强大且灵活的工具,能帮助...

    Activiti 5.16 用户手册.pdf

    用户手册介绍了BPMN 2.0的基本概念和结构,包括事件、任务、网关、服务任务、边界事件、中间事件等元素的定义和作用。 8. BPMN 2.0结构 手册详细讲解了BPMN 2.0的结构,例如如何定义一个流程,包括启动事件、任务...

    activiti工作流

    6. **事件(Events)**:流程中的触发器,如开始事件、结束事件、边界事件等。 ### 三、 快速入门 这个"activitiDemo"包含了搭建基础环境、创建流程定义、运行流程实例的关键步骤: 1. **环境配置**:首先,你...

    2019最详细Activiti6.0之BPMN2.0规范

    事件事件分类方式位置分类特殊分类事件定义分类事件分类方式-位置分类开始事件中间事件/边界事件结束事件事件分类方式-按照特性分类捕获事件(Catching)抛出事件(Throwing)事件分类方式-按照定义分类定时事件错误...

    content_1656906025301.pdf

    - **事件网关**:边界事件如定时事件,例如在检修流程中,如果初级工程师超时未完成,流程将自动转移到高级工程师。 7. **边界事件**:边界定时事件允许流程在一定时间后自动推进,无需持续等待,提高了流程的灵活...

Global site tag (gtag.js) - Google Analytics