工作流Activity框架入门(一)
来源:互联网 发布:java注释 编辑:程序博客网 时间:2024/05/20 05:30
Activity工作流入门
1. 工作流概念
工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。
工作流管理系统(Workflow Management System, WfMS)是一个软件系统,它完成工作量的定义和管理,并按照在系统中预先定义好的工作流逻辑进行工作流实例的执行。工作流管理系统不是企业的业务系统,而是为企业的业务系统的运行提供了一个软件的支撑环境。
2. Activiti简介
Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM平台,创始人Tom Baeyens是JBoss jBPM的项目架构师,它特色是提供了eclipse插件,开发人员可以通过插件直接绘画出业务流程图。
Activiti框架底层有数据库提供支持,根据版本不同,表的数量不一致,activiti5.13有23张表。底层使用mybatis操作数据库,开发人员不需要自己编写sql
Jbpm4.4底层也有数据库支持,18张表。 底层使用hibernate操作数据库。
Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。
1) ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
2) ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
3) ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。
4) ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
5) ACT_GE_*: 通用数据, 用于不同场景下。
3. 安装插件(流程设计器插件)
第一步:解压zip文件到eclipse中的dropins目录中
第二步:重启eclipse,勾选save选项
第三步:使用插件设计流程图
4.手动创建数据库表
6.入门Demo
package activity.demo.test;import java.util.List;import org.activiti.engine.ProcessEngine;import org.activiti.engine.ProcessEngineConfiguration;import org.activiti.engine.ProcessEngines;import org.activiti.engine.impl.juel.ExpressionFactoryImpl.Profile;import org.activiti.engine.repository.Deployment;import org.activiti.engine.repository.DeploymentBuilder;import org.activiti.engine.repository.ProcessDefinition;import org.activiti.engine.repository.ProcessDefinitionQuery;import org.activiti.engine.runtime.ProcessInstance;import org.activiti.engine.task.Task;import org.activiti.engine.task.TaskQuery;import org.junit.Test;import org.junit.validator.PublicClassValidator;public class HelloWorld {// 使用框架的自动建表功能(不提供配置文件)@Testpublic void testCreateTablesAutomaticallyWithoutConfigFiles() {// 创建流程引擎配置对象ProcessEngineConfiguration config = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();// 设置jdbc连接参数信息config.setJdbcDriver("com.mysql.jdbc.Driver");config.setJdbcUrl("jdbc:mysql:///eam-mirror");config.setJdbcUsername("root");config.setJdbcPassword("root");// 设置自动建表config.setDatabaseSchemaUpdate("true");// 使用配置对象创建流程引擎对象,创建对象过程中会自动建表ProcessEngine processEngine = config.buildProcessEngine();}// 使用框架的自动建表功能(提供配置文件)@Testpublic void testCreateTablesAutomaticallyWithConfigFiles() {ProcessEngineConfiguration config = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti-context.xml", "processEngineConfiguration");ProcessEngine pe = config.buildProcessEngine();}// 使用框架的自动建表功能(提供配置文件---使用默认配置)@Testpublic void testCreateTablesAutomatically() {ProcessEngine pe = ProcessEngines.getDefaultProcessEngine();}ProcessEngine pe = ProcessEngines.getDefaultProcessEngine();// 将设计的流程图部署到数据库中@Testpublic void testDeploy() {// 创建部署构建器对象,用于加载流程定义文件(UserInfoAudit.bpmn,UserInfoAudit.myProcess.png),部署流程定义DeploymentBuilder deploymentBuilder = pe.getRepositoryService().createDeployment();deploymentBuilder.addClasspathResource("UserInfoAudit.bpmn");Deployment deployment = deploymentBuilder.deploy();System.out.println(deployment.getId());}// 查询流程定义@Testpublic void testQueryProcessDefinition() {// 流程定义查询对象,用于查询流程定义表----act_re_procdefProcessDefinitionQuery query = pe.getRepositoryService().createProcessDefinitionQuery();// 添加过滤条件,取最新版本query.latestVersion();// query.processDefinitionId(processDefinitionId)// query.processDefinitionKey(processDefinitionKey);// 添加排序条件query.orderByProcessDefinitionVersion().desc();// 添加分页条件// query.listPage(firstResult, maxResults);// 查询所有流程List<ProcessDefinition> processDefinitionList = query.list();for (ProcessDefinition pd : processDefinitionList) {System.out.println(pd.getId());}}// 根据流程定义启动流程实例----操作的数据表:act_ru_execution act_ru_task@Testpublic void testStartProcess(){String processDefinitionId = "UserAuditProcess:2:504";//根据流程实例ID去启动流程ProcessInstance pInstance = pe.getRuntimeService().startProcessInstanceById(processDefinitionId);System.out.println(pInstance.getId());}//查询任务列表@Testpublic void testQueryTaskList(){//创建任务查询对象,查询表act_ru_taskTaskQuery query = pe.getTaskService().createTaskQuery();String assignee ="张三";//添加过滤条件query.taskAssignee(assignee);//排序query.orderByTaskCreateTime().desc();List<Task> taskList = query.list();for(Task task : taskList){System.out.println("taskId:"+task.getId()+",taskName:"+task.getName());}}//办理任务//办理个人任务,操作的表是act_ru_execution,act_ru_task@Testpublic void testExecuteTask(){String taskId= "604";pe.getTaskService().complete(taskId);}}
- 工作流Activity框架入门(一)
- Activity工作流框架入门(二)API使用DEMO
- Activity工作流引擎学习笔记(一)
- Activity入门(一)
- Activity 工作流框架学习总结
- (一)oozie工作流调度框架介绍
- 工作流框架--activiti(一)--建库
- 【基础篇】工作流技术JBPM4.4开发入门(一)
- 实体框架 (EF) 入门 => 一、我该用哪个工作流?
- Spring框架入门(一)
- structs2框架入门(一)
- Spring框架入门(一)
- Mybatis 框架入门(一)
- Spring框架入门(一)
- android入门---Activity组件.活动(一)
- activity工作流
- Activity工作流
- Activity工作流
- HDU2795
- 【转】一个好的学习算法的网站
- CORBA技术和Java技术的结合-Java IDL
- VS2010+Qt5.4.0 环境搭建(离线安装)
- c语言中的“宏”是指什么?
- 工作流Activity框架入门(一)
- C++作业7
- HDU1556
- Android静态安全检测 -> SharedPreferences任意读写
- c++第7次作业
- linux基础(30)--网络管理基础--RHEL6.5
- 【Android】UI设计之界面布局
- 【angularjs 自学系列】1.过滤器
- C++第7次实验(素数和回文)