Activiti6.0工作流使用说明文档V1.0
Activiti 6.0 数据库表结构
Activiti数据表结构目录1ACTIVITI数据库表结构 ----------------------------------------------------------------------------------------------- 21.1数据库表名说明 ------------------------------------------------------------------------------------------------ 21.2数据库表结构---------------------------------------------------------------------------------------------------- 31.3A CTIVITI数据表清单: ------------------------------------------------------------------------------------------------ 41.3.1ACT_EVT_LOG(事件日志) ---------------------------------------------------------------------------- 41.3.2ACT_GE_BYTEARRAY (通用的流程定义和流程资源) --------------------------------------- 41.3.3ACT_GE_PROPERTY (系统相关属性)------------------------------------------------------------- 51.3.4ACT_HI_ACTINST (历史节点表)-------------------------------------------------------------------- 51.3.5ACT_HI_COMMENT (历史审批意见表) --------------------------------------------------------- 61.3.6ACT_HI_DETAIL (历史详细信息) ------------------------------------------------------------------ 71.3.7ACT_HI_IDENTITYLINK (历史流程人员表)------------------------------------------------------ 81.3.8ACT_HI_PROCINST(历史流程实例信息)核心表 ----------------------------------------------- 81.3.9ACT_HI_TASKINST(历史任务流程实例信息)核心表 ----------------------------------------- 91.3.10ACT_HI_VARINST(历史变量信息)---------------------------------------------------------------- 101.3.11ACT_ID_GROUP(用户组表) -------------------------------------------------------------------- 101.3.12ACT_ID_INFO (用户扩展信息表)---------------------------------------------------------------- 111.3.13ACT_ID_MEMBERSHIP(用户用户组关联表) ---------------------------------------------- 111.3.14ACT_ID_USER(用户信息表)------------------------------------------------------------------------ 121.3.15ACT_PROCDEF_INFO(流程定义信息)----------------------------------------------------------- 121.3.16ACT_RE_DEPLOYMENT(部署信息表) ----------------------------------------------------------- 121.3.17ACT_RE_MODEL (流程设计模型表) ----------------------------------------------------------------- 131.3.18ACT_RE_PROCDEF (流程定义:解析表)------------------------------------------------------ 141.3.19ACT_RU_DEADLETTER_JOB(无法执行工作表)----------------------------------------------- 151.3.20ACT_RU_EVENT_SUBSCR (运行时事件) ------------------------------------------------------------ 161.3.21ACT_RU_EXECUTION (运行时流程执行实例) ------------------------------------------- 161.3.22ACT_RU_IDENTITYLINK(身份联系) -------------------------------------------------------------- 171.3.23ACT_RU_JOB(运行中的任务) --------------------------------------------------------------------- 181.3.24ACT_RU_SUSPENDED_JOB(暂停表) ------------------------------------------------------------- 181.3.25ACT_RU_TASK(运行时任务数据表) ----------------------------------------------------------------- 191.3.26ACT_RU_TIMER_JOB(定时器表) ----------------------------------------------------------------- 201.3.27ACT_RU_VARIABLE(运行时流程变量数据表) ---------------------------------------------------- 20 2ACTIVITI中主要对象的关系 -------------------------------------------------------------------------------------- 211Activiti数据库表结构1.1数据库表名说明Activiti工作流总共包含28张数据表,所有的表名默认以“ACT_”开头。
泛微OA-V6.0操作手册
泛微协同办公OA系统e-officeV6.0从入门到精通操作教程版权说明本手册以及相关的计算机软件程序仅用于为泛微协同管理平台最终用户提供信息,上海泛微软件有限公司有权。
本手册是上海泛微软件有限公司的专有信息,并受中华人民共和国版权法和国际公约的保护。
未得到上海泛微软件有限公司明确的书面许可,不得为任何目的、以任何形式或手段辅助或传播本手册的任何部分内容。
本手册内容若有变动,恕不另行通知。
本手册中例子中所引用的公司、人名和数据若非特殊说明,均属虚构。
本手册以及本手册所提及的任何产品的使用均受适应的最终用户许可协议限制。
本手册由上海泛微软件有限公司制作。
本手册中提及的所有商标、商标名称、服务标志及徽标均归其各自公司所有。
序言初始化的系统空空如也,很可能让你觉得无从下手。
通过阅读《e-officeV6.0 081115使用手册》将帮助您在1个小时之内快速搭建自己公司的办公系统以及学习系统的日常维护。
首先下载安装e-office系统,注意安装的系统地址目录必须为“根目录”下面,并且不能是中文目录(例如:D:\eoffice)。
否则系统无法登录。
进入登陆界面,系统默认登陆账号为“admin”无密码。
只需要直接点击登陆即可。
这里会出现几个常见的系统安装问题,在此例举出来:1.系统安装后,登陆界面不能显示。
这个情况主要是您的电脑配置问题,并不是软件有问题。
一般自己解决的方案:第一步,检查电脑的IE浏览器是否为6.0以上版本,如果您的浏览器版本太老,建议您去微软的网站上升级一下。
2.如果浏览器版本没有问题,出现的症状为“系统安装完后进不了OA系统,输入地址IE窗口会自动关闭”那么可以肯定是电脑中有自带的“拦截功能”。
这是因为拦截软件拦截了登陆窗口,请删除拦截软件或关闭拦截软件的弹出窗口拦截功能。
3.如果安装后,进不了OA系统,在IE中提示“找不到页面”,那么e-office系统端口可能与IIS冲突,建议换一个端口如81/8080/8082……试试看。
activiti6官方示例笔记
activiti6官⽅⽰例笔记概述要想学习activiti⼯作流, ⼊门便是学习官⽅的⽰例。
下边我将基于官⽅的 demo 做⼀遍流程,考虑⾃⼰的业务该如何基于activiti设计逻辑。
⼯作流要素:流程表单⽤户有了以上 3 ⼤要素,流程便可以流转。
表单绑定在流程节点上,⽤来输⼊当前流程信息⽤户绑定在流程节点上,⽤来处理当前流程任务下载安装⾸先到下载 activiti6.0.0。
对activiti7感兴趣的可以看然后将 war 包置于tomcat/webapps⽬录下,启动 tomcat 即可。
应⽤说明地址帐号/密码activiti-app流程、表单、⽤户、发布、任务...admin/testactiviti-admin平台管理查看流程平台运⾏详情admin/adminactiviti-rest rest-api 接⼝应⽤kermit/kermit应⽤说明地址帐号/密码⽤户管理登录Kickstart App:主要⽤于流程模型管理、表单管理及应⽤(App)管理,⼀个应⽤可以包含多个流程模型,应⽤可发布给其他⽤户使⽤。
Task App:⽤于管理整个 activiti-app 的任务,在该功能⾥⾯也可以启动流程Idenity management:⾝份信息管理,可以管理⽤户、⽤户组等数据创建⽤户创建过程如下,注意 id 即是登录帐号。
依次分别创建 3 个帐号⽤户审批流程。
流程定义在主界⾯点击Kickstart App进⼊流程定义页⾯。
上图中模拟了⼀个请假流程,但是流程的执⾏需要⼈来参与,所以下边我们进⾏流程和帐号绑定。
选定流程节点后点击Assignment属性,会有弹窗进⾏绑定。
同理,将其他节点进⾏绑定。
然后保存关闭即可,可以看到⼀个流程已创建完毕。
动态表单之前的都是基本演⽰,假设我们需要复杂的表单,那么可以在流程节点上绑定表单即可,这⾥做下动态表单的基本演⽰。
1. 选中流程节点,编辑Referenced form, 动态创建节点关联表单。
《Activiti6.0工作流引擎深度解析与实战》笔记
《Activiti6.0⼯作流引擎深度解析与实战》笔记1.1 课程导学--- 什么是⼯作流引擎?是⽤来驱动业务按照流程图逐步流转的核⼼框架。
--- 为什么学习⼯作流引擎?早期:企业OA、CRM、流程审批现在:电商购物、⾦融出⾏、中台⽀撑--- Activiti6.0流程引擎配置--- 核⼼API--- 数据模型设计--- BPMN2.0规范--- BPMN2.0元素2.1 本章概述⼯作流⼊门:⼯作流介绍、⼯作流技术选型、Activiti6.0快速体验。
2.2 ⼯作流介绍⼯作流是什么?为什么学习⼯作流?如何去学习⼯作流?1、审批业务场景(如请假,有⼀系列步骤)2、审批流程模型化(抽象出⼀系列流程图模型)“开始节点”(开始StartEvent)->填写审批信息的“⽤户节点”->通过“流程判断”(排他⽹关Exclusive Gateway)可以流转到“主管审批”(任务UserTask)->...->“结束节点”(结束EndEvent)3、常见的⽹上购物流程4、购物⼯作流程模型化有3个参与者,“电商购物流程”是泳池Pool,“仓储物流”等是泳道Line,“检验库存”是服务任务ServiceTask(服务任务是指不是由⼈⼯操作,⽽是由系统⾃动完成实现的逻辑)。
5、⼯作流是什么6、为什么需要⼯作流2.3 ⼯作流引擎技术选型2.4 Activiti6.0快速体验--部署环境介绍默认的⽤户名和密码是:admin和test2.5 Activiti6.0快速体验--部署环境实操win10下打开Cygwin,进⾏如下操作:1、curl -s "http://get.sdkman.io" | bash报错:Looking for a previous installation of SDKMAN...Looking for unzip...Looking for zip...Not found.Please install zip on your system using your favourite package manager.参考:https:///IOIO_/article/details/84946257解决⽅法是重新点击cygwin的安装包,把zip的package安装⼀遍,重启cygwin,再输⼊⼀遍这个命令即可。
Activiti6.0教程28张表解析
Activiti6.0教程28张表解析使⽤Activit的朋友都知道Activiti对应的有28张表,今天我们就来说下Activit中28张表对应的含义是什么?如何创建表?在Activiti中创建表有三种⽅式,我们依次来看下:⼀、通过硬编码的形式直接指定// 创建⼀个流程成引擎对像ProcessEngineConfiguration processEngineConfiguration = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration();// 设置数据库连接信息processEngineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver");processEngineConfiguration.setJdbcUrl("jdbc:mysql://localhost:3306/db_activiti");processEngineConfiguration.setJdbcUsername("root");processEngineConfiguration.setJdbcPassword("");processEngineConfiguration.setDatabaseType("mysql");processEngineConfiguration.setDatabaseSchemaUpdate("update");// 设置⾃动创建表processEngineConfiguration.setDatabaseSchemaUpdate("true");// 在创建引擎对象的时候⾃动创建表ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine();⼆、通过activit.cfg.xml配置⽂件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd"> <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db_activiti?characterEncoding=utf8" /><property name="jdbcDriver" value="com.mysql.jdbc.Driver" /><property name="jdbcUsername" value="root" /><property name="jdbcPassword" value="" /><property name="databaseSchemaUpdate" value="true" /><property name="databaseType" value="mysql"></property></bean></beans>ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();三、使⽤配置⽂件,在资源⽬录下创建activiti-context.xml<!-- 创建流程引擎配置对象 --><bean id="ProcessEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration"><property name="jdbcDriver" value="com.mysql.jdbc.Driver"/><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db_activiti" /><property name="jdbcUsername" value="root" /><property name="jdbcPassword" value="" /><property name="databaseSchemaUpdate" value="true" /></bean>代码⾥边读取加载配置⽂件String resource = "activiti-context.xml";String beanName = "ProcessEngineConfiguration";ProcessEngineConfiguration cf = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(resource, beanName); ProcessEngine processEngine = cf.buildProcessEngine();以上就是创建表的三种⽅式,接下来我们看创建好的表都有哪些?先上⼀张图,后⾯详细说。
泛微OA_V6.0操作手册范本
泛微协同办公OA系统e-officeV6.0从入门到精通操作教程说明本手册以及相关的计算机软件程序仅用于为泛微协同管理平台最终用户提供信息,泛微软件有权。
本手册是泛微软件的专有信息,并受中华人民国法和国际公约的保护。
未得到泛微软件明确的书面许可,不得为任何目的、以任何形式或手段辅助或传播本手册的任何部分容。
本手册容若有变动,恕不另行通知。
本手册中例子中所引用的公司、人名和数据若非特殊说明,均属虚构。
本手册以及本手册所提及的任何产品的使用均受适应的最终用户许可协议限制。
本手册由泛微软件制作。
本手册中提及的所有商标、商标名称、服务标志及徽标均归其各自公司所有。
序言初始化的系统空空如也,很可能让你觉得无从下手。
通过阅读《e-officeV6.0 081115使用手册》将帮助您在1个小时之快速搭建自己公司的办公系统以及学习系统的日常维护。
首先下载安装e-office系统,注意安装的系统地址目录必须为“根目录”下面,并且不能是中文目录(例如:D:\eoffice)。
否则系统无法登录。
进入登陆界面,系统默认登陆账号为“admin”无密码。
只需要直接点击登陆即可。
这里会出现几个常见的系统安装问题,在此例举出来:1.系统安装后,登陆界面不能显示。
这个情况主要是您的电脑配置问题,并不是软件有问题。
一般自己解决的方案:第一步,检查电脑的IE浏览器是否为6.0以上版本,如果您的浏览器版本太老,建议您去微软的上升级一下。
2.如果浏览器版本没有问题,出现的症状为“系统安装完后进不了OA系统,输入地址IE窗口会自动关闭”那么可以肯定是电脑中有自带的“拦截功能”。
这是因为拦截软件拦截了登陆窗口,请删除拦截软件或关闭拦截软件的弹出窗口拦截功能。
3.如果安装后,进不了OA系统,在IE中提示“找不到页面”,那么e-office系统端口可能与IIS冲突,建议换一个端口如81/8080/8082……试试看。
还有一种原因是这台电脑以前曾经安装过apache,和e-office 中的apache有冲突。
activiti工作流使用一般步骤
activiti⼯作流使⽤⼀般步骤activiti⼯作流使⽤的⼀般步骤⼀、在eclipse或Myeclipse中安装activiti插件;⼆、通过activiti连接数据库,有以下两种连接数据库的形式:1.通过java代码链接数据库:public void createTableByOracle(){ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();configuration.setJdbcUrl("jdbc:oracle:thin:@192.168.1.150:1521:orcl");configuration.setJdbcDriver("oracle.jdbc.OracleDriver");configuration.setJdbcUsername("scott");configuration.setJdbcPassword("oracle");configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);ProcessEngine processEngine = configuration.buildProcessEngine();System.out.println("-------------------------------------");System.out.println(processEngine);}2.通过配置⽂件配置链接数据库(1)配置⽂件:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context" xmlns:tx="/schema/tx"xmlns:jee="/schema/jee" xmlns:aop="/schema/aop"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-3.0.xsd/schema/context /schema/context/spring-context-3.0.xsd/schema/tx /schema/tx/spring-tx-3.0.xsd/schema/jee /schema/jee/spring-jee-3.0.xsd/schema/aop /schema/aop/spring-aop-3.0.xsd"><bean id="dataSource"class="org.springframework.jdbc.datasource.SimpleDriverDataSource"><property name="driverClass" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://192.168.1.150:3306/officemanage?characterEncoding=utf8" /><property name="username" value="root" /><property name="password" value="123456" /></bean><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"><property name="dataSource" ref="dataSource" /><property name="transactionManager" ref="transactionManager" /><property name="databaseSchemaUpdate" value="true" /></bean></beans>(2)java代码读取配置⽂件链接数据库:public void createTableByXML(){ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();}三、创建⼯作流的bpmn类型的⽂件:四、部署bpmn和png类型的⼯作流⽂件资源:(注意:⼀个⼯作流程部署⼀次即可,以后只需要启动⼀条流程即可)public void deployTest(){System.out.println("开始部署⼀个审批流程");ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();Deployment deployment = processEngine.getRepositoryService().createDeployment().name("路费报销审批流程").addClasspathResource("choiceProcess.bpmn").addClasspathResource("choiceProcess.png").deploy(); System.out.println("部署流程完毕");}五、启动⼀条流程:public void StartProcess(){System.out.println("开始启动⼀个审批流程");ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey("luFeiBaoXiaoShenPi");System.out.println(processInstance.getId()+"--------"+processInstance.getActivityId());System.out.println("启动流程完毕");}六、查看某个⼈要完成的任务列表:public void queryProcess(){ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();String assignee0 = "lsy";List<Task> zhangSanList = processEngine.getTaskService().createTaskQuery().taskAssignee(assignee0).orderByTaskCreateTime().asc().list();System.out.println("****************"+assignee0+"个⼈任务列表***********************");for (Task task : zhangSanList) {System.out.println("id:"+task.getId()+",名称:"+task.getName()+",创建时间"+task.getCreateTime()+",⼈物:"+task.getAssignee());}}七、某个⼈完成⾃⼰的某个任务:1.不带变量:public void completeTask(){ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();processEngine.getTaskService().complete("235009");System.out.println("完成任务");}2.带变量:public void completeTaskByVariables(){ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();Map<String, Object> variables = new HashMap<String,Object>();variables.put("money", 501);processEngine.getTaskService().complete("265004",variables);System.out.println("完成任务");}⼋、某个⼈查看⾃⼰已完成的任务列表:public void queryHistoryTask(){ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();List<HistoricTaskInstance> historicList = processEngine.getHistoryService().createHistoricTaskInstanceQuery().taskAssignee("lsy").list();for (HistoricTaskInstance historicTaskInstance : historicList) {System.out.println(historicTaskInstance.getId()+":"+historicTaskInstance.getProcessDefinitionId()+":"+historicTaskInstance.getAssignee()+":"+historicTaskInstance.getExecutionId()+":"+historicTaskInstance.getStartTime()+":"+historicTaskIns }}。
工作流参考手册初稿V01
第1章工作流参考手册初稿V01在使用EOS WorkFlow的过程中,不管是开发者在〝开发环境〞中定义业务流程,依旧〝工作流引擎〞操纵流程流转,或是工作流参与者使用的〝客户端〞,再或者治理员使用的〝治理与监控工具〞,在这期间都会贯穿EOS Workflow 的5个要紧对象——流程定义、活动定义、流程实例、活动实例以及工作项。
1.1 EOS工作流开发过程简述EOS的工作流开发过程能够看作是一个不断迭代的过程,如以下图:第一是分析需求,然后依照需求定义流程,在那个时期最要紧的工作任务事实上是设计,依照业务需求来设计流程,那个流程要如何走,流程相关的数据如何流淌,流程的参与者如何界定,与流程相关的业务数据如何流淌及储存等等。
在那个时期的工作结果是一个能够公布的流程,第一次形成的流程可能是一个比较简单的,并不完善的版本,然而随着迭代的进行,那个流程将不断地被修正和改进,直到形成一个能够使用的版本。
接下来是流程的公布,流程公布的目的是让工作流引擎能够识别该流程。
在开发环境(JBoss)下能够直截了当在Studio中公布流程,开发时期一样用此方法,在生产环境中一样是先打包,然后在://localhost:端口/eosmgr中公布。
流程公布后就能够执行了,流程在执行时期叫流程实例,它有待启动、运行、挂起、完成、终止、中止等六种状态。
我们在设计及开发的过程中可能会犯一些错误,从而导致公布的流程执行不正确,或者还可能差不多开发好的流程满足不了现在的需求,需要进行调整,那个时候迭代就开始了。
1.2 概念说明流程定义:描述一个完整的业务过程,它由假设干活动组成。
包括了流程的差不多信息、流程的开始和终止条件、组成的活动、活动间流转的规那么、需要用户执行的工作任务〔工作项〕、可能调用的应用程序以及流程相关数据等信息。
提交到流程定义库〔WFProcessDefine〕后会包含流程定义ID〔流程定义的唯独标识〕、流程定义名称、版本号、流程定义描述以及提交时刻等描述。
Activiti6系列(1)-核心数据库表及字段注释说明
Activiti6系列(1)-核⼼数据库表及字段注释说明前⾔本⽂是根据《疯狂⼯作流讲义-Activiti6.0》⼀书中提取过来的,有兴趣的可以去当当⽹买这本书,讲的很不错,最后还有实战案例。
虽然是提取过来的,但完全靠⼿打梳理,觉得有⽤的⼩伙伴可以给予⼀定⽀持,谢谢。
共分为六⼤部分1、通⽤数据表2、流程存储数据表3、⾝份数据表4、运⾏时数据表5、历史数据表6、DMN规则引擎数据表⼀、通⽤数据表1、资源表,act_ge_bytearray⽤于保存和流程引擎相关的资源,只要调⽤了Activiti存储服务的API,涉及的资源均会被转换为byte数组保存到这个表中。
⼀般情况下,Activiti使⽤这个表来保存字符串、流程⽂件的内容、流程图⽚内容。
主要包含如下字段:字段注释REV_数据版本,Activiti为⼀些有可能会被频繁修改的数据表,加⼊该字段,⽤来表⽰该数据被操作的次数。
Name_资源名称,类型为varchar,长度为255字节。
DEPLOYMENT_ID_⼀次部署可以添加多个资源,该字段与部署表act_re_deployment的主键相关联。
BYTES_资源内容,数据类型为longblob,最⼤可存4GB数据。
GENERATED_是否由Activiti⾃动产⽣的资源,0表⽰false,1为true。
2、属性表,act_ge_propertyActiviti将全部的属性抽象为key-value对,每个属性都有名称和值,使⽤act_ge_property来保存这些属性,该表有以下三个字段。
字段注释NAME_属性名称,varchar类型。
VALUE_属性值,varchar类型。
REV_数据的版本号。
⼆、流程存储数据表1、部署数据表,act_re_deployment。
部署信息会被保存在部署表中主要包含字段:字段注释NAME_部署的名称,可以调⽤Activiti的流程存储API来设置,类型为varchar,长度为255字节。
工作流activiti介绍
Activiti6工作流1、Activiti工作流概述1.1、工作流概述工作流(Workflow),就是通过计算机对业务流程自动化执行管理。
它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。
在我们日常的工作中,每时每刻都在执行一个个的流程,我们可能是流程的发起人,也可能能是流程的中间人,甚至是最后终止一个流程的大boss,总体而言流程,即工作流就是为了团队协作而生,任何需要团队持续写作的场景都有必要用到工作流。
比如老生常谈的员工请假,发出请求,逐级上报,逐级审批。
在我们的项目中也是一样,很多项目都是存在业务流程。
1.2、工作流系统一个软件系统中具有工作流的功能,我们把它称为工作流系统,一个系统中工作流的功能是什么?就是对系统的业务流程进行自动化管理,所以工作流是建立在业务流程的基础上,所以一个软件的系统核心根本上还是系统的业务流程,工作流只是协助进行业务流程管理。
即使没有工作流业务系统也可以开发运行,只不过有了工作流可以更好的管理业务流程,提高系统的可扩展性。
常见的工作流有:请假流程、出差申请流程、出差申请流程项目研发流程1.3 工作流的实现没有用工作流之前我们是怎么做的?我们之前为了实现流程控制, 通常是通过状态(status)字段的值,来跟踪流程状态,但是不完美比如请假流程:员工申请-> 部门经理审批-> 人事存档我们要给status字段设置状态: 0 = 员工未提交; 1 = 员工已提交; 2= 部门经理拒绝审批; 3 = 部门经理同意审批; 最终人事查询status= 4也就是申请成功的请假单数据通过状态字段我们虽然可以实现流程的控制但是弊端也很明显: 当我们那不讲武德的产品经理说出“这个功能要改”的时候我们只能去改变代码比如: 在这个部门经理的后面在加一个总经理审批的功能, 则程序不能用了那么能不能做到流程业务变化后,程序可以不用变呢?使用工作流之后改善了我们哪些问题?Activiti能做到当需求变更时,代码不需要发生改变,只需要更新业务流程图即可.二、Activiti概述Activiti是一个工作流引擎,activiti可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN2.0进行定义,业务流程按照预先定义的流程进行执行,实现了系统的流程由activiti进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,从而提高系统的健壮性,同时也减少了系统开发维护成本。
activiti 工作流用法
activiti 工作流用法
工作流引擎是现代企业中常用的一种技术工具,它能够帮助组织自动化和优化业务流程。
Activiti 是一个开源的工作流引擎,它基于 Java 平台,并且提供了强大的功能和灵活的工作流管理能力。
使用 Activiti 工作流引擎可以带来以下几方面的好处:
1. 自动化流程管理:Activiti 允许您将复杂的业务流程通过可视化设计器进行建模,并且可以将模型转换为可执行的流程实例。
这样可以有效地简化和自动化组织内部的业务流程,提高工作效率和准确性。
2. 任务分配和追踪:Activiti 提供了灵活的任务管理功能,可以根据不同的角色和权限分配任务给不同的用户或用户组。
同时,它还提供了任务追踪功能,可以实时监控任务的执行情况,确保任务按时完成。
3. 异常处理和流程优化:在工作流引擎中,您可以定义异常处理策略和流程分支条件,以便在流程执行过程中处理各种异常情况。
这样可以在保证流程的顺利进行的同时,及时解决问题,优化流程。
4. 高度可扩展:Activiti 是一个基于开源技术的工作流引擎,它提供了丰富的扩展接口和插件机制,可以方便地集成到现有的企业应用系统中。
同时,它还支持水平扩展和集群部署,以应对高并发和大规模应用场景。
总之,Activiti 是一个功能强大且灵活的工作流引擎,可以帮助企业实现自动化流程管理、任务分配和追踪、异常处理和流程优化等目标。
它的开源特性使得它可以与其他系统无缝集成,并且具有高度可扩展性。
如果您的企业正在寻找一种优秀的工作流引擎,那么 Activiti 绝对值得一试。
Activiti工作流入门详解完整教程_New
Activiti工作流入门详解完整教程_NewActiviti工作流入门详解完整教程Activiti入门教程详解完整教程1.Activiti介绍Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活的,易扩展的可执行流程语言框架。
Activiti基于Apache许可的开源BPM平台,创始人Tom Baeyens是JBoss JBPM的项目架构师,它的特色是提供了eclipse插件,开发人员可以通过插件直接绘画出业务流程图。
1.1工作流引擎ProcessEngine对象,这是Activiti工作的核心。
负责生成流程运行时的各种实例及数据,监控和管理流程的运行。
1.2BPMN业务流程建模与标注(Business Process Model and Notation,BPMN),描述流程的基本符号,包括这些图元如何组合成一个业务流程图(Business Process Diagram)2.准备环境2.1Activiti软件环境1)JDK1.6或者更高版本2)支持的数据库有:h2,mysql,oracle,mysql,db2等3)支持Activiti运行的jar包,可以通过maven依赖引入4)开发环境为Eclipse3.7或者以上版本,myeclipse为8.6版本2.2安装流程设计器(eclipse插件)1)打开Help →Install New Software →Add 输入 Name: Activiti DesignerLocation:/designer/update/输入完成后,单击OK按钮等待下载完成后安装。
安装完成后在菜单选项中会出现Activiti的目录选项2.3 设置eclipse activit插件的画流程图选项打开菜单Windows --> Preferences --> Activiti -->Save 下流程图片的生成方式勾选上Create process definition image when saving the diagram操作,勾选上这个操作后在画流程图后保存eclipse会自动生成对应的流程图片。
activiti工作流使用手册
活动活动(Activiti)是一个用于管理业务流程和工作流的轻量级、灵活的开源工作流和业务流程管理评台。
它是一个基于Java的评台,可以集成到企业的应用中,通过图形化设计器快速地定义和管理工作流程,提高工作效率,减少人工操作,降低错误率。
本文将介绍Activiti 的基本概念和使用方法,帮助读者快速上手、灵活应用。
一、Activiti简介1. Activiti的定义活动活动(Activiti)是一个开源的工作流引擎,用于管理业务流程和工作流。
它提供了BPMN 2.0(Business Process Model and Notation)标准的实现,使用户可以通过图形化设计器定义和管理工作流程,将流程的定义和执行分离开来,实现业务流程的自动化管理。
2. Activiti的特点- 轻量级:Activiti是一个轻量级的工作流引擎,简化了工作流引擎的复杂性,提高了工作流的执行效率。
- 灵活性:Activiti支持灵活的流程定义和执行,可以根据实际业务需求进行定制化。
- 高性能:Activiti具有高性能的特点,可以处理大规模的业务流程,满足企业的需求。
- 易集成:Activiti可以集成到企业应用系统中,与其他系统进行无缝对接,提高企业的整体业务处理效率。
二、Activiti的安装和配置1. 环境准备在安装Activiti之前,需要准备好Java开发环境,确保系统中已安装了JDK,并设置了JAVA_HOME环境变量。
2. 下载和安装Activiti- 下载Activiti的安装包,可以从冠方全球信息站或开源社区获取最新版本的Activiti安装包。
- 解压安装包,将Activiti的文件解压到指定的目录,如D:/activiti。
3. 配置Activiti- 设置数据库:Activiti需要使用数据库存储流程定义、执行数据等信息,需要配置数据库连接信息。
- 配置日志:根据需要配置Activiti的日志输出级别和输出路径。
activiti工作流使用手册
activiti工作流使用手册一、简介activiti是一个轻量级的Java开源工作流引擎,广泛应用于各类企业应用系统中。
本手册旨在为用户提供一份全面的activiti工作流使用指南,帮助用户快速上手并灵活应用activiti工作流。
二、安装与配置1. 下载activitiactiviti官网提供最新的稳定版本下载,在官网下载页面选择合适的版本,并解压到指定目录。
2. 导入activiti库在项目中导入activiti库,可以使用Maven或其他依赖管理工具,或者手动导入activiti相关的jar包。
3. 配置数据库activiti使用数据库来存储工作流相关的数据,需要配置数据库连接信息。
在项目的配置文件中,根据使用的数据库类型,配置相应的数据源。
4. 配置activiti核心引擎在项目的配置文件中,配置activiti核心引擎。
可以配置引擎的缓存设置、任务执行器等参数,以满足具体业务需求。
三、工作流定义1. 设计流程图使用activiti提供的流程图设计器,或者其他工具设计流程图。
流程图应包含各个环节、任务和流程流转条件。
2. 定义流程根据设计好的流程图,使用activiti提供的API编写Java代码来定义流程。
流程定义包括流程的启动、流程实例的创建、任务分配等。
四、工作流执行1. 启动流程使用activiti提供的API,启动流程实例。
根据流程定义的启动条件,可以设置流程实例的变量、业务参数等。
2. 处理任务根据流程的执行情况,系统将生成一系列待处理的任务。
使用activiti提供的API,查询并处理这些任务。
任务的处理包括任务的审批、任务的分派、任务的执行等。
3. 流程流转处理任务后,根据任务处理结果,流程会自动流转到下一个环节,或者根据设置的流转条件,执行流程中的分支和合并。
5. 监控流程在流程的执行过程中,可以使用activiti提供的监控工具,实时查看流程的执行情况,包括流程实例的状态、任务的处理情况、历史记录等。
Activity工作流
Activity⼯作流1. 概念⼯作流(Workflow),就是“业务过程的部分或整体在计算机应⽤环境下的⾃动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递⽂档、信息或任务的过程⾃动进⾏,从⽽实现某个预期的业务⽬标,或者促使此⽬标的实现”。
2. ⼯作流引擎ProcessEngine对象,这是activiti⼯作的核⼼。
负责⽣成流程运⾏时的各种实例及数据、监控和管理流程的运⾏。
3. 数据库Activiti数据库⽀持:Activiti的后台是有数据库的⽀持,所有的表都以ACT_开头。
第⼆部分是表⽰表的⽤途的两个字母标识。
⽤途也和服务的API对应。
ACT_RE_*: 'RE'表⽰repository。
这个前缀的表包含了流程定义和流程静态资源(图⽚,规则,等等)。
ACT_RU_*: 'RU'表⽰runtime。
这些运⾏时的表,包含流程实例,任务,变量,异步任务,等运⾏中的数据。
Activiti只在流程实例执⾏过程中保存这些数据,在流程结束时就会删除这些记录。
这样运⾏时表可以⼀直很⼩速度很快。
ACT_ID_*: 'ID'表⽰identity。
这些表包含⾝份信息,⽐如⽤户,组等等。
ACT_HI_*: 'HI'表⽰history。
这些表包含历史数据,⽐如历史流程实例,变量,任务等等。
ACT_GE_*: 通⽤数据,⽤于不同场景下,如存放资源⽂件。
3.1 表结构资源库流程规则表act_re_deployment 部署信息表act_re_model 流程设计模型部署表act_re_procdef 流程定义数据表运⾏时数据库表act_ru_execution 运⾏时流程执⾏实例表act_ru_identitylink 运⾏时流程⼈员表,主要存储任务节点与参与者的相关信息act_ru_task 运⾏时任务节点表act_ru_variable 运⾏时流程变量数据表历史数据库表act_hi_actinst 历史节点表act_hi_attachment 历史附件表act_hi_comment 历史意见表act_hi_identitylink 历史流程⼈员表act_hi_detail 历史详情表,提供历史变量的查询act_hi_procinst 历史流程实例表act_hi_taskinst 历史任务实例表act_hi_varinst 历史变量表组织机构表act_id_group ⽤户组信息表act_id_info ⽤户扩展信息表act_id_membership ⽤户与⽤户组对应信息表act_id_user ⽤户信息表通⽤数据表act_ge_bytearray ⼆进制数据表act_ge_property 属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插⼊三条记录4. activity 表⽣成activity表⽣成有三中⽅式通过引擎配置执⾏⽣成public static void main(String[] args) {// 引擎配置ProcessEngineConfiguration pec=ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();pec.setJdbcDriver("com.mysql.jdbc.Driver");pec.setJdbcUrl("jdbc:mysql://localhost:3306/activiti?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC"); pec.setJdbcUsername("root");pec.setJdbcPassword("mafeng_1234_");/*** false 不能⾃动创建表* create-drop 先删除表再创建表* true ⾃动创建和更新表*/pec.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);// 获取流程引擎对象ProcessEngine processEngine=pec.buildProcessEngine();}通过配置 activiti.cfg.xml 配置⽂件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context" xmlns:tx="/schema/tx"xmlns:jee="/schema/jee" xmlns:aop="/schema/aop"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-3.0.xsd /schema/context /schema/context/spring-context-3.0.xsd/schema/tx /schema/tx/spring-tx-3.0.xsd/schema/jee /schema/jee/spring-jee-3.0.xsd/schema/aop /schema/aop/spring-aop-3.0.xsd"><bean id="processEngineConfiguration" class=" org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"><!--数据库连接设置 --><property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activity2"></property><property name="jdbcUsername" value="root"></property><property name="jdbcPassword" value="mafeng_1234_"></property><!--建表策略--><property name="databaseSchemaUpdate" value="true"></property></bean></beans>@Testpublic void test() {//1.创建Activity配置对象的实例ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();//2.设置数据库连接信息//设置数据库地址 : createDatabaseIfNotExist=true 如果库不存在将⾃动创建库configuration.setJdbcUrl("jdbc:mysql://localhost:3306/activity?createDatabaseIfNotExist=true");//数据库驱动configuration.setJdbcDriver("com.mysql.jdbc.Driver");//⽤户名configuration.setJdbcUsername("root");//密码configuration.setJdbcPassword("mafeng_1234_");//设置数据建表策略/***DB_SCHEMA_UPDATE_TRUE 如果不存在表就创建表,存在表就使⽤*/configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);//3.使⽤配置对象创建流程引擎实例(检查数据库等连接环境)ProcessEngine processEngine = configuration.buildProcessEngine();System.out.println(processEngine);}5. activity画布绘制执⾏流程BPMNIDEA安装bpmn插件的画布6、流程部署,开启,执⾏等流程6.1、流程部署通过基础的activity的引擎开启部署流程ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();Deployment deployment = processEngine.getRepositoryService().createDeployment().addClasspathResource("processes/buyBill.bpmn").addClasspathResource("processes/buyBill.png").name("测试执⾏流程").category("测试执⾏流程").deploy();通过直接引⼊RepositoryService类执⾏部署@Autowiredprivate RepositoryService repositoryService;Deployment deploy = repositoryService.createDeployment().addClasspathResource("processes/buyBill.bpmn").addClasspathResource("processes/buyBill.png").name("采购计划222").category("采购计划2222").deploy();6.2、流程开启String processInstanceKey = "buyBill";ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey(processInstanceKey);System.out.println("流程实例ID:"+pi.getId());System.out.println("流程定义ID:"+pi.getProcessDefinitionId());System.out.println("流程定义ID:"+pi.getName());6.3、流程执⾏通过taskService执⾏任务的开启String assignee = "king";List<Task> taskList = ProcessEngines.getDefaultProcessEngine().getTaskService().createTaskQuery().taskAssignee("").orderByTaskCreateTime().desc().list();if(taskList != null && taskList.size() > 0) {for (Task task : taskList) {System.out.println("task.getProcessInstanceId()" + task.getProcessInstanceId()); System.out.println("task.getProcessDefinitionId()" + task.getProcessDefinitionId()); System.out.println("task.getName()" + task.getName());}}条件执⾏任务流程@Testpublic void completeTask() {// 任务编号String taskId = "";String userId = "";Map<String, Object> completeParamMap = new HashMap<String, Object>();// 根据流程图中的设计,审批通过条件为apprStatus==0completeParamMap.put("apprStatus", 0);// 设定当前处理⼈为任务的办理⼈taskService.setAssignee(taskId, userId);// 审批通过,并有通过条件plete(taskId, completeParamMap);}。
activiti工作流
activiti⼯作流⼀、⼯作流的初步认识1.⼯作流就是将开发中由代码控制的业务流程状态抽取出来然后进⾏统⼀控制的机制!2.⽐如有这样⼀个⼩场景:我们开发了⼀个⼩软件,该软件想要上线给所有⼈⽤,然后需经纪⼈审批、⽼总审批、⼤boss审批等。
该⼩软件其审核流程状态有:暂存,待审核,通过或拒绝。
当我们在实现这⼏个状态的改变时,可以通过java编码实现,但如果这时业务需求发⽣了改变,只需要⽼总审核,这时我们就得去更改代码了,如果业务再复杂⼀点,⼀旦更改流程,代码就需要⼤改了。
⽽这时就可以使⽤⼯作流,来处理业务复杂且需求经常性变更的流程。
3.该⼩场景的呈现效果流程:开发⼀个⼩软件,其状态是暂存;然后提交审核(状态变成待审核),会⾃动到第⼀道审批中,则经纪⼈登录就可看到这条申请,然后给同意;接着会⾃动到第⼆道审批,如果给拒绝,则状态变成拒绝流程结束,否则到第三道,如果⼤Boss也同意,则最后状态⾃动变成通过。
(哈哈,描述的有点乱,反正⼤概这个意思)⼆、创建流程模型第⼀次创建模型:http://localhost:8080/flow/model/create?name=xxname1&key=xxkey1&description=desc该接⼝会保存模型数据到ac_re_*三张表,并跳转到http://localhost:8080/flow/model.html?modelId=1模型页⾯,之后查看或修改该模型,直接加载模型即可(modelId是模型的唯⼀标识)设置流程的属性:1.流程发起⼈的流程变量在开始节点的属性中设置流程发起⼈的变量applicantId,然后可以在某个任务的属性中,设置参与者为${applicantId},这样可以实现:谁发起谁执⾏2.设置流程参与者(重要)可以给每道审批动态设置参与者,根据业务功能指定每道审批哪些⼈可以看到和执⾏。
2.1在流程节点中,设置任务分配这⾥第⼀道审批指定职务是agentJob;第⼆道misterJob;第三道bossJob2.2 在流程节点中,设置表单属性根据业务需求,⼤概有指定⽤户,指定⾓⾊,指定部门和指定职务这⼏种情况,来指定任务的参与者。
activiti工作流入门学习
activiti⼯作流⼊门学习⼯作流⼀般在OA系统⽤的⽐较多,当然,只要有流程审批的地⽅都会⽤到,activiti只是开源的⼯作流中⽐较流⾏的⼀个,还有其他的开源的⼯作流,这⾥学习activiti⼯作流;前⾯部分是关于activiti的总体的介绍及如何搭建,后半部分使⽤⼀个demo演⽰,清晰直观的观察⼯作流的⼯作机制及数据库表的数据变化,对⼯作流的理解和使⽤有⼀个直观的认识。
⼀.总体认识1.介绍Activiti是⼀个开源的⼯作流框架,⽤的最多的例⼦就是审批流程,⽐如员⼯请假,申请之后提交,然后会提交到经理,经理审批完可能还会部长审批,等⼀系列流程;还有⽐如报销申请,需要先由经理审批,然后由总监审批,最后还要财务审批等,经过⼀系列事先制定好的流程;当然了,这只是⼯作流的⼀个应⽤,实际⼯作流还有其他的很多应⽤;activiti使⽤起来也⽐较⽅便,⾃动⽣成25张数据库表,有8⼤核⼼API,通过这些核⼼API就可以很⽅便的使⽤⼯作流。
2.部署⽅式很多讲⼯作流的博客都⽐较⽼,⽽且都只从⾃⼰的⼀个部署⽅式去讲解,不同的博客可能使⽤不同的部署⽅式,让初学者感到很懵,不知道到底应该⽤哪个,其实部署流程资源有很多种⽅法,包括classpath、InputStream、字符串、zip格式压缩包,不同的部署⽅式可以根据项⽬或者⾃⼰实现的难易程度进⾏⾃由选择;因为⽀持直接加载.bpmn格式的⽂件,⽐较⽅便,⽽actiBPMN插件也正好可以很⽅便的⽣成.bpmn格式的⽂件,很⽅便的画流程图,所以这就是前⾯要先安装actiBPMN插件原因,画出流程图之后,然后部署就⾏了,所以我使⽤直接加载.bpmn⽂件的⽅式部署,希望初学者不要在这⾥疑惑。
3.使⽤使⽤步骤:部署流程==>发起⼀个流程实例(流程开始)==>使⽤流程(查询流程、查询代办、提交审批、结束流程….等等)每次修改完流程图之后,都要重新部署流程;每开始⼀个(审批流程)新的流程实质就是发起⼀个流程实例;发起流程之后,整个流程就开始了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Activiti工作流使用说明文档V1.02019年8月9日目录一、模型设计器 (4)1.1任务 (5)1.1.1 用户任务 (5)1.1.2 服务任务 (5)1.1.3 脚本任务 (6)1.1.4 业务规则任务 (7)1.1.5 接收任务 (7)1.1.6 手动任务 (7)1.1.7 邮件任务 (8)1.1.8 Camel任务 (8)1.1.9 Mule任务 (8)1.1.10 决策任务 (9)1.2构造 (10)1.2.1 子流程 (10)1.2.2 事件子流程 (11)1.3泳道列表 (11)1.4分支 (12)1.4.1 排他分支 (12)1.4.2 并行分支 (12)1.4.3 包容分支 (13)1.4.4 事件分支 (13)1.5事件 (14)1.5.1 定时器事件 (14)1.5.2 信号事件 (14)1.5.3 消息事件 (16)1.5.4 错误事件 (16)1.5.5 边界事件 (17)1.5.6 中间事件 (18)1.5.7 开始事件 (18)1.5.8 结束事件 (18)1.6属性元素 (18)1.6.1 异步 (18)1.6.2 排他 (19)1.6.3 补偿 (19)1.6.4 中断任务 (20)1.6.5 分配 (21)1.6.6 到期时间 (22)1.6.7 表单 (22)1.6.8 表达式 (24)1.6.9 多实例 (25)1.7监听器配置 (28)1.7.1 执行监听器 (29)1.7.2 任务监听器 (30)1.7.3 事件监听器 (32)1.7.4 全局事件监听器 (33)二、workflow-service (34)2.1数据更新逻辑 (34)2.2方法表达式配置 (35)2.3自定义外置表单 (36)2.4事件监听器配置 (37)2.5方法调用说明 (37)三、常见问题 (37)一、模型设计器模型设计器项目qqdznyyglpt-workflow-designer主要完成自定义流程、表单设计,可以在模型设计器中完成整个功能的流转,但仅限与admin(密码默认为test)相同租户的用户可使用全功能,其他租户用户登录后只有流程设计、表单配置、决策表配置功能,无法在设计器进行流程执行。
需要更改的模型、表单、决策表生效,则必须重新发布,发布之后新启的流程按最新的走,发布之前的流程仍然按前一版本执行。
用户手册地址:https:///userguide/数据库及邮件服务器配置文件地址:qqdznyyglpt-workflow-designer\src\META-INF\activiti-app\activiti-app.properties 。
打印工作流SQL语句的开关在log4j.properties中配置.activiti.engine.impl.persistence.entity=DEBUG即可。
模型设计器功能介绍:使用流程说明:1.1任务1.1.1用户任务用户任务需要人为处理完成。
常用属性配置包括名称、是否为多实例、分配(任务处理人/处理组配置)、到期时间、表单(引用的表单、表单元素、表单地址),各属性详细用法见1.4节属性元素。
1.1.2服务任务服务任务可以用于执行外部的java类,可以通过以下3种方式实现:⚫类:指定一个实现了JavaDelegate 或ActivityBehavior接口的类(包含包名),可通过类字段配置额外需要传递的参数,类中必须包含该字段的声明;⚫表达式:可以使用值表达式或者方法表达式,当使用的方法表达式有返回值时,可以指定一个结果变量名称来接收该值,后续流程节点中可直接使用该变量;⚫委托表达式:指定一个实现了JavaDelegate的类,并且该类已在配置文件ActivitiEngineConfiguration中注册为bean,可通过类字段配置额外需要传递的参数。
1.1.3脚本任务脚本任务是一个自动任务,当流程执行到脚本任务即会自动执行该任务上配置的脚本。
脚本格式主要定义使用什么脚本类型(JSR-223)编写脚本代码,目前JavaScript是默认的,其他脚本类型均需要增加对应的脚本引擎依赖包。
在脚本中所有流程中参数均可以被引用,也可以使用execution.setVariable("variableName", variableValue)设置流程参数,设置流程参数名称时,需避免使用out, out:print, lang:import, context, elcontext。
scriptTask示例应用.zip以上是脚本JavaScript的脚本示例(可将zip导入designer的应用中),其中field0是流程中已存在变量,可以直接引用,assignee是新设置的流程变量,可以在下一节点获取并使用。
1.1.4业务规则任务业务规则任务可以同步执行一个或多个规则,Activiti使用Drools引擎执行业务规则,*.drl的规则文件需和流程定义一起导入(同外置表单)。
当有多个规则文件配置时,可使用逗号隔开;当有多个输入变量,也可使用逗号隔开;但输出变量只能有一个名称,缺省值是org.activiti.engine.rules.OUTPUT1.1.5接收任务接收任务是用于等待某个特定消息的任务到达。
1.1.6手动任务手动任务定义了一个扩展BPM引擎的外部任务,对于流程来说手动任务就是一个传递任务。
1.1.7邮件任务邮件任务主要用于自定义邮件发送,使用邮件任务时,首先需要在activiti-app.properties文件中配置邮件服务器地址。
邮件任务的各元素属性的配置内容均可使用或者加入表达式。
1.1.8Camel任务Camel任务不是标准的BPMN2.0包含的,他通过从Camel中收发消息来增强Activiti 的集成性,在Activiti中他被作为一个专用的服务任务被应用。
需要在Spring容器中配置camelContext1.1.9Mule任务Mule任务不是标准的BPMN2.0包含的,在Activiti中他被作为一个专用的服务任务,他可以给Mule发送消息以增强Activiti的集成性。
他的属性元素定义如下表:1.1.10决策任务决策任务主要是根据决策表配置的决策原则自动进行任务节点处理,决策表中的变量可以被引用作为流转条件的判断。
如果决策表里某个输出没有结果,则在下一个节点引用时该变量为空,如果是在判断节点引用该变量,可能会报无法识别属性某某的错误。
如下示例中,当决策表自动判断loanAmount>2时,会出结果rejectLoan=true,如果此时在后续的判断节点引用${riskCheck==false},则会抛出找不到riskCheck属性的异常。
以下是示例应用,可导入designer的应用中进行测验。
决策表示例应用.zip1.2构造1.2.1子流程当需要将几个流程节点都作为一个子流程时,可以将该几个流程节点作为一整体,及创建一个子流程,如下图中间审批可以作为一个子流程,定时器监听的是整个子流程的耗时时间。
子流程中必须包含一个空起始时间,必须包含一个结束事件,并且序列流不能越过子流程框定的范围。
1.2.2事件子流程事件子流程是由事件触发的子流程,事件子流程由非空开始事件发起,并且事件子流程没有任何的出入序列流。
Activiti只支持使用错误开始事件和消息开始事件触发事件子流程。
1.3泳道列表主要是为了让流程配置看起来层次分明,逻辑明朗,部署的时候会根据泳道的流程ID 生成流程定义任务。
泳道列表包含泳道池和泳道,首先将泳道池拖拽到界面,然后将泳道拖拽到泳道池中形成泳道池的分割线。
1.4分支分支也叫网关,是用于控制流程流转的。
1.4.1排他分支有且仅有一个后续分支连线会被执行,当分支连线上的流转条件为true(或者没有设置条件)时,流程将通过该分支连线继续执行;如果存在多个分支连线流转条件均为true,则默认执行第一个分支连线;如果没有满足条件的分支连线,则会抛出找不到后续节点的异常。
1.4.2并行分支并行分支包含分叉和聚合,当包含多个分叉任务节点,每执行完一个任务节点就会在聚合口等待,直到所有聚合节点包含的任务节点均执行完成后,流程才会进入后续节点。
并行分支后的任务节点是被强制生成并行实例的,即使在并行分支连线上有配置的流转条件也无效。
1.4.3包容分支包容分支是排他分支和并行分支的结合体,也包含分叉和聚合,与并行分支不同的是他可以在分支连线上定义流转条件,并且只会并行执行流转条件为true的连线上的任务,与排他分支不同的是他可以同时并行执行多个任务。
1.4.4事件分支事件分支后续节点只能连接中间捕获事件,并且必须连接两个或两个以上的中间捕获事件(否则执行过程中会报错),另外,连接事件分支的中间捕获事件必须只有一个信号输入流。
如下图当流程执行到事件分支时被挂起,流程实例订阅了一个信号事件并创建了一个间隔时间为10分钟的定时器。
这将导致流程引擎等待10分钟去接收一个信号事件,如果信号在10分钟内到达,则定时器被取消流程在信号后继续执行,如果信号没有被激活,则流程在定时器后继续执行,并且信号订阅被取消。
1.5事件事件是用于在流程生命周期中模拟某件事的发生,主要分为捕获事件和抛出事件。
流程执行到捕获事件时将等待一个触发器发生,流程执行到抛出事件时相关触发器将被激活。
1.5.1定时器事件定时器事件由定义的定时器到点触发,可以被用作开始事件、中间事件、边界事件,并且定时器事件只有jobExecutorActivate 或asyncExecutorActivate属性被设置为true的时候定时器才会执行。
定时器必须包含以下三种方式之一的配置,否则流程将发布不成功:方式一,按照ISO-8601格式直接配置日期时间,例如2011-03-11T12:13:14+08:00或20040503T093008+08,其中T用于分隔日期和时间,+08:00是用于表示北京时间;方式二,时间间隔配置格式是用P加间隔时间,例如P1Y3M5DT6H7M30S,表示间隔1年3个月5天6小时7分30秒,其中T也是用于分隔日期和时间;方式三,循环周期配置格式是R3/{startDatetime}/PT10H/${EndDatetime},表示循环执行3次,每次间隔周期10小时,并在指定的结束时间停止定时器。
还可使用cron expression进行配置。
1.5.2信号事件在流程定义时可以进行信号定义,信号事件广播范围分为全局信号事件和流程实例信号事件,全局信号事件可用于流程间的通讯,一旦全局信号事件被抛出,所有订阅了该信号事件的流程实例都会接受到信号,并且捕获信号只能捕获信号流程发起之后的信号;流程实例信号事件用于流程内的通讯。