`

Activiti无指定开始事件实例

阅读更多

来源:http://www.hxstrive.com/article/164.htm

 

Activiti无指定开始事件指不为开始事件指定任何的触发条件的事件。下面将通过一个实例来学习什么是无指定开始事件。

 

startEvent(无指定开始事件图标)

 

流程图:

startEvent

流程启动后进入“任务01”(调用complete方法来完成该任务),然后结束流程。

 

流程定义XML:

<?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/processdef">

  <process id="startEventTest01" name="开始事件测试01" isExecutable="true">

    <startEvent id="start"></startEvent>

    <userTask id="task01" name="任务01"></userTask>

    <endEvent id="end"></endEvent>

    <sequenceFlow id="sid-B96A1813-6837-4845-8167-3ACA1A3B3D20" sourceRef="start" targetRef="task01"></sequenceFlow>

    <sequenceFlow id="sid-35F14E43-5255-4FCC-8962-209578CDE088" sourceRef="task01" targetRef="end"></sequenceFlow>

  </process>

   

  <bpmndi:BPMNDiagram id="BPMNDiagram_startEventTest01">

    <bpmndi:BPMNPlane bpmnElement="startEventTest01" id="BPMNPlane_startEventTest01">

      <bpmndi:BPMNShape bpmnElement="start" id="BPMNShape_start">

        <omgdc:Bounds height="30.0" width="30.0" x="116.0" y="150.0"></omgdc:Bounds>

      </bpmndi:BPMNShape>

      <bpmndi:BPMNShape bpmnElement="task01" id="BPMNShape_task01">

        <omgdc:Bounds height="80.0" width="100.0" x="191.0" y="125.0"></omgdc:Bounds>

      </bpmndi:BPMNShape>

      <bpmndi:BPMNShape bpmnElement="end" id="BPMNShape_end">

        <omgdc:Bounds height="28.0" width="28.0" x="336.0" y="151.0"></omgdc:Bounds>

      </bpmndi:BPMNShape>

      <bpmndi:BPMNEdge bpmnElement="sid-35F14E43-5255-4FCC-8962-209578CDE088" id="BPMNEdge_sid-35F14E43-5255-4FCC-8962-209578CDE088">

        <omgdi:waypoint x="291.0" y="165.0"></omgdi:waypoint>

        <omgdi:waypoint x="336.0" y="165.0"></omgdi:waypoint>

      </bpmndi:BPMNEdge>

      <bpmndi:BPMNEdge bpmnElement="sid-B96A1813-6837-4845-8167-3ACA1A3B3D20" id="BPMNEdge_sid-B96A1813-6837-4845-8167-3ACA1A3B3D20">

        <omgdi:waypoint x="146.0" y="165.0"></omgdi:waypoint>

        <omgdi:waypoint x="191.0" y="165.0"></omgdi:waypoint>

      </bpmndi:BPMNEdge>

    </bpmndi:BPMNPlane>

  </bpmndi:BPMNDiagram>

</definitions>

 

客户端测试代码:

package com.bug315.event;

 

import org.activiti.engine.ProcessEngine;

import org.activiti.engine.ProcessEngines;

import org.activiti.engine.RepositoryService;

import org.activiti.engine.RuntimeService;

import org.activiti.engine.TaskService;

import org.activiti.engine.repository.Deployment;

import org.activiti.engine.runtime.ProcessInstance;

import org.activiti.engine.task.Task;

 

/**

 * 开始事件测试

 * @author Administrator

 *

 */

public class StartEventTest01 {

 

    public static void main(String[] args) {

        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

        RepositoryService repositoryService = processEngine.getRepositoryService();

        Deployment deployment = repositoryService.createDeployment().addClasspathResource("bpmn/startEventTest01.bpmn20.xml").deploy();

        System.out.println("deployment Id = " + deployment.getId());

        System.out.println("deployment Name = " + deployment.getName());

         

        RuntimeService runtimeService = processEngine.getRuntimeService();

        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("startEventTest01");

        System.out.println("processInstance Id = " + processInstance.getId());

        System.out.println("processInstance BusinessKey = " + processInstance.getBusinessKey());

         

        TaskService taskService = processEngine.getTaskService();

        Task task = taskService.createTaskQuery().singleResult();

        System.out.println("task Id = " + task.getId());

        System.out.println("task Name = " + task.getName());

        taskService.complete(task.getId());

        System.out.println("task完成");

         

        task = taskService.createTaskQuery().singleResult();

        System.out.println("task = " + task);

    }

     

}

 

Activiti配置文件:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">

    <bean id="processEngineConfiguration"  

        class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">

        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti" />

        <property name="jdbcDriver" value="com.mysql.jdbc.Driver" />

        <property name="jdbcUsername" value="root" />

        <property name="jdbcPassword" value="aaaaaa" />

        <property name="jobExecutorActivate" value="true" />

        <property name="databaseType" value="mysql"/>

        <property name="databaseSchemaUpdate" value="true" />

        <property name="history" value="full"/>

    </bean>

</beans>

 

注意事项:

1、流程引擎并不知道流程将在什么时候开始,如果要启动流程,必须使用startProcessBy***方法。

2、子流程中总会有一个无指定开始事件,即使将开始事件强制定义为其他开始事件,其也会被当作无指定开始事件。因为流程到达子流程时,就意味着子流程需要启动,而且并不需要其他启动条件。

 

 

分享到:
评论

相关推荐

    activiti学习-使用activiti多实例任务实现会签

    ### Activiti多实例任务实现会签功能详解 #### 一、多实例用户任务的基本概念与配置 Activiti是一个开源的工作流引擎,它提供了一种灵活的方式来定义业务流程,并且能够支持复杂的业务逻辑处理。其中,多实例任务...

    Activiti多实例任务实现会签

    5. 配置多实例任务:在Activiti的工作流定义XML文件中,可以通过设置`&lt;userTask&gt;`元素的`multi-instance`属性,并指定相应的`camunda:collection`(数据集)和`camunda:elementVariable`(存储每个实例结果的变量)...

    Activiti 学习笔记十:开始活动节点(判断流程是否结束及查询历史)

    无事件开始是最常见的,即流程一旦被实例化就立即执行。在定义流程定义时,我们需要指定开始事件,并与一个特定的用户任务或服务任务关联,以便流程能够顺利进行。 二、判断流程是否结束 在 Activiti 中,判断流程...

    Activiti项目实例

    本篇将详细讲解基于Activiti 5.9版本的项目实例,该实例适用于初学者,以MySQL作为数据库,旨在帮助读者快速理解和应用Activiti。 一、Activiti简介 Activiti是Alfresco公司开发的一款开源工作流引擎,它基于BPMN ...

    Activiti 学习笔记四:流程实例、任务的执行

    流程实例是动态的,它会根据流程图中的流转规则,从开始事件开始,经过各个活动(如用户任务、服务任务等),最终到达结束事件。在 Activiti 中,你可以通过调用 `runtimeService.startProcessInstanceByKey()` 或 `...

    activiti5.6一个小例子

    4. 事件(Event):流程中的特殊节点,用于触发特定的行为,如开始事件、结束事件等。 5. 表单(Form):与任务相关的用户界面,用于输入或展示数据。 三、实例解析 在"myactiviti"目录下,我们通常会看到以下...

    ActivitiDemo

    BPMN符号如开始事件、结束事件、用户任务、服务任务、 Exclusive Gateway(排他网关)等都会被用到,它们共同构建了一个完整的业务流程图。 接下来,集成Activiti和Spring的关键在于配置。在Spring的配置文件中,...

    Activiti5.4 用户指南-中文版

    部署的流程模型会被转换为可执行的流程实例,这些实例在 Activiti 引擎中运行,处理业务逻辑。 3. **任务管理**:Activiti 支持任务分配和管理工作。任务可以自动分配给指定的角色或用户,也可以通过用户界面手动...

    Activiti进阶.pdf

    Businesskey 在流程实例启动时指定,并存储在 Activiti 的运行时表(act_ru_execution)中,这样就可以在流程实例和具体的业务数据之间建立关联。 例如,当启动一个出差流程实例时,可以将出差单的ID作为...

    activiti5.22 实现撤回操作

    本文将深入探讨如何在 Activiti 5.22 版本中实现撤回操作,确保这一功能的实现不影响流程设计,并且通过 ExecutionEntity 对象来管理任务的生命周期,以达到撤销并重新指定任务节点的目的。 Activiti 是一个开源的...

    springboot+activiti集成Demo

    3. **Activiti25张表**: 当你首次运行项目,Activiti会自动在指定的数据库中创建25张表,这些表是Activiti内部管理和存储流程实例所需的基础结构。 4. **流程定义与部署**: 通常,流程定义是通过BPMN 2.0的XML文件...

    activiti工作流引擎

    BPMN提供了丰富的图形符号,如开始事件、结束事件、用户任务、服务任务等,帮助开发者直观地设计流程。 2. 表单(Forms):Activiti支持表单的创建和绑定,使得业务流程中的数据输入和展示更加便捷。表单可以是内置...

    ActivitiDemo.rar

    总之,这个案例旨在为初学者提供一个完整的 Activiti 整合 SpringBoot 和 MyBatis 的实例,涵盖了流程定义、流程执行、流程图展示以及审批角色设定等多个关键点。通过学习和实践这个案例,开发者可以更好地理解和...

    ACTIVITI如何获取下一步节点

    1. **查询当前活动实例**:通过调用ACTIVITI的API,例如`runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult()`,我们可以获取到指定流程实例的详细信息。 2. **解析...

    activiti文档

    - **开始事件**:不同类型的开始事件。 - **结束事件**:不同类型的结束事件。 - **边界事件**:不同类型的边界事件。 - **中间捕获事件**:不同类型的中间捕获事件。 - **内部触发事件**:不同类型的内部触发事件。...

    Activiti工作流面试相关知识

    `将根据指定的流程定义键启动一个新的流程实例。 3. TaskService:任务服务 TaskService主要处理与任务(工作项)相关的操作。在Activiti中,任务是流程实例的一部分,由参与者执行。通过TaskService,我们可以分配...

    整合Activiti 5.22 工具包

    Activiti 5.22 提供了丰富的API,使得开发者能够轻松地进行流程实例的启动、查询、控制和干预。这些API包括但不限于: - 流程定义:用于读取、部署和管理流程定义的类,如ProcessDefinitionService和...

    activiti学习思维导图

    - 事件监听:Activiti允许我们添加监听器来捕获流程中的特定事件,如任务创建、结束等,实现定制化的业务逻辑。 - 自定义行为:可以扩展Activiti的内置行为,如用户任务(User Task)、服务任务(Service Task)等。 ...

    SpringBoot集成Activiti案例

    启动流程后,Activiti会自动创建一个新的流程实例,并可能产生一个或多个待办任务。同时,我们可以编写接口或者方法来查询当前运行的流程实例,以便监控流程的状态。 **三、待办任务处理** 在用户界面上,待办任务...

    Activiti视频教程

    5. **任务处理**:处理流程中的任务,包括分配任务给指定用户、完成任务等操作。 6. **监控流程**:使用Activiti提供的监控工具查看流程的状态和进度。 7. **日志记录**:记录流程执行过程中的关键信息,便于后续的...

Global site tag (gtag.js) - Google Analytics