Activiti演示PPT

  • 格式:pptx
  • 大小:933.63 KB
  • 文档页数:71

下载文档原格式

  / 71
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5、完成任务。通过任务服务TaskService,调用 processEngine.getTaskService() .complete(taskId);方法来 完成任务。 当前任务节点完成后,如果还有下一个节点会自动跳转到下个节 点去,如果没有则结束该流程。
Activiti5 常用组件
简单介绍了8个常用的组件,空开始事件 StartEvent、空结束事件 EndEvent、顺序流(箭 头) SequenceFlow、用户任务 UserTask、JAVA服 务任务 Service Task、JAVA接收任务ReceiveTask、 排他网关Exclusive gateway和并行网关Parallel gateway 。
首先我们需要创建一个查询,然后再根据这个查询里面的方法获 得返回数据。具体调用方法为: processEngine.getTaskService()//加载任务服务 .createTaskQuery()//创建查询 .taskAssignee(assignee)//按分配的人员名称查询 .list();
在上面的流程编辑器中,我们设计的工作流程使用了5 种组件,一种是开始事件StartEvent,一种是结束事件 EndEvent,第三种是用户任务UserTask,第4种就是流程线 Sequence Flow。其中重点的组件是UserTask,以及ServiceTask。 点击流程图空白处,可以查看流程图属性,点击流程组件节点, 可以查看组件节点属性。
/**启动流程实例*/ @Test public void startProcessInstance(){ //流程定义的key String processDefinitionKey = "helloworld"; //与正在执行的流程实例和执行对象相关的Service ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey);// 使用流程定义的key启动流程实例,key对应helloworld.bpmn文件中id的属性值,使 用key值启动,默认是按照最新版本的流程定义启动 System.out.println("流程实例ID:"+pi.getId());//流程实例ID 101 System.out.println("流程定义ID:"+pi.getProcessDefinitionId());//流程定义ID }
<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>5.14</version>
</dependency>
<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-bpmn-model</artifactId> <version>5.14</version> </dependency> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring</artifactId> <version>5.14</version> </dependency>
引擎的API是调用Activiti最常见的一种方法。我们一开始 最关注的中心是ProcessEngine流程引擎,它可以被多种方式创 建。从这个流程引擎里面,能获得各个包含workflow/BPM方法 的服务。 RepositoryService : 管理和控制发布包和流程定义(包含 了一个流程每个环节的结构和行为)的操作。 RuntimeService :负责启动一个流程定义的新实例,获取和 保存流程变量,查询流程实例和执行。 TaskService :所有与任务有关的功能,查询分配给用户或 组的任务,创建独立运行任务。 IdentityService: 管理(创建,更新,删除,查询...)群 组和用户(可以不使用activiti的用户模块) HistoryService: 提供了Activiti引擎的所有历史数据
/**查询当前人的个人任务*/ @Test public void findMyPersonalTask(){ String assignee = “张三"; List<Task> list = processEngine.getTaskService()//与正在执行的任务管理相关的 Service .createTaskQuery()//创建任务查询对象 .taskAssignee(assignee)//指定个人任务查询,指定办理人 .list(); if(list!=null && list.size()>0){ for(Task task:list){ System.out.println("任务ID:"+task.getId()); System.out.println("任务名称:"+task.getName()); System.out.println("任务的创建时间:"+task.getCreateTime()); System.out.println("任务的办理人:"+task.getAssignee()); System.out.println("流程实例ID:"+task.getProcessInstanceId()); System.out.println("执行对象ID:"+task.getExecutionId()); System.out.println("流程定义ID:"+task.getProcessDefinitionId()); System.out.println("############################################"); } }
}
通过上面流程图绘制和JAVA代码部分,我们可以很清晰的 发现要想开发一个activiti工作流系统,首先要做的是获得它的流 程引擎,然后通过流程引擎来获得它的各种服务API。具体操作过 程如下: 1、获得流程引擎 ProcessEngine。 2、部署流程。通过prwk.baidu.comcessEngine来获得流程定义的 RuntimeService ,来创建流程部署对象,并把流程资源文件部署进 入数据库。 3、启动流程。完成流程部署后,我们通过流程实例的Key 值调用RuntimeService.startProcessInstanceByKey(processInstanceKey) 方法来启动流程。 4、查询任务。流程启动后,通过任务服务TaskService可以 根据任务节点的Assignee属性值来查询当前任务的的执行人是谁。
Activiti的后台是有数据库的支持,所有的表都以ACT_开 头。 第二部分是表示表的用途的两个字母标识。 用途也和服 务的API对应。 ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流 程定义和流程静态资源 (图片,规则,等等)。 ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流 程实例,任务,变量,异步任务,等运行中的数据。 Activiti只 在流程实例执行过程中保存这些数据, 在流程结束时就会删除 这些记录。 这样运行时表可以一直很小速度很快。 ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如 用户,组等等。 ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如 历史流程实例, 变量,任务等等。 ACT_GE_*: 通用数据, 用于不同场景下,如存放资源文 件。
}
/**完成我的任务*/ @Test public void completeMyPersonalTask(){
//任务ID String taskId = "302"; processEngine.getTaskService()//与正在执行的任务管理相关的Service .complete(taskId); System.out.println("完成任务:任务ID:"+taskId);
public class HelloWorld { /**获得流程引擎*/ ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); /**部署流程定义*/ @Test public void deploymentProcessDefinition(){ Deployment deployment = processEngine.getRepositoryService()//与流程定 义和部署对象相关的Service .createDeployment()//创建一个部署对象 .name("helloworld入门程序")//添加部署的名称 .addClasspathResource("diagrams/helloworld.bpmn")//从classpath的资源中 加载,一次只能加载一个文件 .addClasspathResource("diagrams/helloworld.png")//从classpath的资源中加 载,一次只能加载一个文件 .deploy();//完成部署 System.out.println("部署ID:"+deployment.getId());//helloworld System.out.println("部署名称: "+deployment.getName());//helloworldProcess }
1、什么是Work Flow? 2、Activiti5 Work Flow 介绍及开发环境配置 3、 Activiti5 入门篇-Hello World DEMO演示与说明 4、 Activiti5 基础篇- 流程组件简述及参数传递 5、与Spring 容器整合配置
什么是 Work Flow
工作流(Workflow),就是“业务过程的部分或整体 在计算机应用环境下的自动化”,它主要解决的是“使在多 个参与者之间按照某种预定义的规则传递文档、信息或任务 的过程自动进行,从而实现某个预期的业务目标,或者促使 此目标的实现” 。 通俗的说,流程就是多个人在一起合作完成某件事情 的步骤,把步骤变成计算机能理解的形式就是工作流。
1、 activiti5 支持JDK1.6或者更高版本 2、 activiti5支持的数据库有:H2, MySql, Oracle, Postgres, MSSql, DB2等。在开发之前,需要创建activiti相关联的数据表, 可选择执行相关的activit.*.sql文件,或在activiti.cfg.xml配置文 件中设置自动创建相关数据表。 3、下载支持activiti5运行的相关jar包。下载地址为: http://activiti.org/download.html 4、开发工具为Eclipse3.7或者以上版本,myeclipse为8.6版 本或以上版本,需要下载activit流程设计器插件。插件地址为: http://activiti.org/designer/update/ 完成以上准备后,即可进行activiti相关工程开发。
Activiti5 Work Flow 介绍
Activiti5是一个轻量级工作流业务管理平台,其核心 是使用Java开发的快速、稳定的BPMN2.0流程引擎。Activiti 可以运行在任何类型的Java程序中,例如服务器、集群、云 服务等。Activiti可以完美地与Spring集成。同时,基于简约 思想的设计使得Activiti成为一个非常轻量级框架。它特色是 提供了eclipse插件,开发人员可以通过插件直接绘画出业务 流程图。 Business Process Modeling Notation