- 浏览: 599811 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
在开始之前先看看下图,对整个对象结构有个了解,再结合下面的详细介绍理解。
1.ProcessInstance
员工开始申请请假流程,通过runtimeService.startProcessInstance()方法启动,引擎会创建一个流程实例(ProcessInstance)。
简单来说流程实例就是根据一次(一条)业务数据用流程驱动的入口,两者之间是一对一的关系。
引擎会创建一条数据到ACT_RU_EXECUTION表,同时也会根据history的级别决定是否查询相同的历史数据到ACT_HI_PROCINST表。
启动完流程之后业务和流程已经建立了关联关系,第一步结束。
启动流程和业务关联区别:
a.对于自定义表单来说启动的时候会传入businessKey作为业务和流程的关联属性
b.对于动态表单来说不需要使用businessKey关联,因为所有的数据都保存在引擎的表中
c.对于外部表单来说businessKey是可选的,但是一般不会为空,和自定义表单类似
2.Execution
初学者最搞不懂的就是ProcessInstance与Execution之间的关系,要分两种情况说明。
Execution的含义就是一个流程实例(ProcessInstance)具体要执行的过程对象。
不过在说明之前先声明两者的对象映射关系:
ProcessInstance(1)--->Execution(N),其中N >= 1。
值相等的情况:
除了在流程中启动的子流程之外,流程启动之后在表ACT_RU_EXECUTION中的字段ID_和PROC_INST_ID_字段值是相同的。
3.Task
刚刚说了ProcessInstance是和业务一对一关联的,和业务数据最亲密;Task是和用户最亲密的(UserTask),用户每天的待办事项就是一个个的Task对象。
从图1中看得出Execution和Task是一对一关系,Task可以是任何类型的Task实现,可以是用户任务(UserTask)、Java服务(ServiceTask)等,在实际流程运行中只不过面向对象不同,用户任务需要有人完成(complete),Java服务需要有系统自动执行(execution)。
Task是在流程定义中看到的最大单位,每当一个task完成的(complete)时候会引擎把当前的任务移动到历史中,然后插入下一个任务插入到ACT_RU_TASK中。
4.HistoryActivity
HistoryActivity——历史活动。
表ACT_HI_ACTINST
Activity包含了流程中所有的活动数据,例如开始事件(图中的第1条)、各种分支(排他、并行等,图中的第2条数据)、以及刚刚提到的Task执行记录(如图中的第3、4条数据)。
有些人认为Activity和Task是多对一关系,其实不是,从上图中可以看出来根本没有Task相关的字段。
结合请假流程来说如Task中提到的当完成流程的时候所有下一步要执行的任务(包括各种分支)都会创建一个Activity记录到数据库,例如领导审核节点点击“同意”按钮就会流转到人事审批节点,如果“驳回”那就流转到调整请假内容节点,每一次操作的task背后实际记录更详细的活动。
转自:http://www.kafeitu.me/activiti/2012/08/09/activiti-objects.html
1.ProcessInstance
员工开始申请请假流程,通过runtimeService.startProcessInstance()方法启动,引擎会创建一个流程实例(ProcessInstance)。
简单来说流程实例就是根据一次(一条)业务数据用流程驱动的入口,两者之间是一对一的关系。
引擎会创建一条数据到ACT_RU_EXECUTION表,同时也会根据history的级别决定是否查询相同的历史数据到ACT_HI_PROCINST表。
启动完流程之后业务和流程已经建立了关联关系,第一步结束。
启动流程和业务关联区别:
a.对于自定义表单来说启动的时候会传入businessKey作为业务和流程的关联属性
b.对于动态表单来说不需要使用businessKey关联,因为所有的数据都保存在引擎的表中
c.对于外部表单来说businessKey是可选的,但是一般不会为空,和自定义表单类似
2.Execution
初学者最搞不懂的就是ProcessInstance与Execution之间的关系,要分两种情况说明。
Execution的含义就是一个流程实例(ProcessInstance)具体要执行的过程对象。
不过在说明之前先声明两者的对象映射关系:
ProcessInstance(1)--->Execution(N),其中N >= 1。
值相等的情况:
除了在流程中启动的子流程之外,流程启动之后在表ACT_RU_EXECUTION中的字段ID_和PROC_INST_ID_字段值是相同的。
3.Task
刚刚说了ProcessInstance是和业务一对一关联的,和业务数据最亲密;Task是和用户最亲密的(UserTask),用户每天的待办事项就是一个个的Task对象。
从图1中看得出Execution和Task是一对一关系,Task可以是任何类型的Task实现,可以是用户任务(UserTask)、Java服务(ServiceTask)等,在实际流程运行中只不过面向对象不同,用户任务需要有人完成(complete),Java服务需要有系统自动执行(execution)。
Task是在流程定义中看到的最大单位,每当一个task完成的(complete)时候会引擎把当前的任务移动到历史中,然后插入下一个任务插入到ACT_RU_TASK中。
4.HistoryActivity
HistoryActivity——历史活动。
表ACT_HI_ACTINST
Activity包含了流程中所有的活动数据,例如开始事件(图中的第1条)、各种分支(排他、并行等,图中的第2条数据)、以及刚刚提到的Task执行记录(如图中的第3、4条数据)。
有些人认为Activity和Task是多对一关系,其实不是,从上图中可以看出来根本没有Task相关的字段。
结合请假流程来说如Task中提到的当完成流程的时候所有下一步要执行的任务(包括各种分支)都会创建一个Activity记录到数据库,例如领导审核节点点击“同意”按钮就会流转到人事审批节点,如果“驳回”那就流转到调整请假内容节点,每一次操作的task背后实际记录更详细的活动。
转自:http://www.kafeitu.me/activiti/2012/08/09/activiti-objects.html
发表评论
文章已被作者锁定,不允许评论。
-
Activiti 学习总结内容
2016-11-04 14:50 1570Activiti总结内容 常用方法汇总 sequenceFl ... -
Activiti自我总结
2014-12-26 20:55 1306Spring代码 <?xml version=&qu ... -
Activiti根据Flowname进行转向
2014-06-29 18:13 722转向问题需要注意的是每次转向到其他节点时要把其他Transit ... -
Activiti小知识总结
2014-06-29 11:00 6141.ACT_HI_ACTINS表中Assignee字段没有值的 ... -
Activiti获取待办任务信息
2014-06-27 10:00 5243根据userid获得TaskQuery然后再获得Histori ... -
Activiti获取任务候选人
2014-06-27 09:33 2221IdentityLink是任务候选人的对象。来自于taskSe ... -
Activiti获得下一个节点
2014-06-26 14:37 1488用PvmTransition表示箭头的类。而这些类是从 Lis ... -
Activiti获取流程中的审批意见
2014-06-26 14:18 2444执行流程的过程中所有的变量信息都保存在ACT_HI_VARIN ... -
Activiti获取某个流程实例已经审批的节点记录
2014-06-25 16:15 2641已知businessid即eventid获得对应的审批记录 ... -
Activiti获取某个流程实例的FormKey
2014-06-25 15:21 2477通过任务id获得formkey ProcessDef ... -
Activiti学习-2
2014-06-08 17:12 8825.12乱码问题解决: <!-- Activiti ... -
activiti学习之task与execution的关系
2014-06-08 16:54 1441一.含义 task 即待办任务 execution 即流程 ... -
Activiti学习总结
2014-06-03 11:50 19231.获得流程图乱码问题 ... -
Activiti环境安装及项目下载基础学习
2014-06-01 23:10 596Activiti资料 官网:http://www.activ ...
相关推荐
综上所述,Activiti的工作流引擎通过一系列精心设计的数据表结构和对象关系,实现了流程的自动化管理。开发者可以通过理解这些核心对象及它们之间的交互方式,更好地利用Activiti解决实际业务问题。
- Spring是一个轻量级的控制反转(IoC)和面向切面编程(AOP)框架,它提供了管理对象的生命周期和对象之间的依赖关系的能力。 - 集成Spring框架意味着要在项目中配置Spring上下文,定义Bean和它们之间的依赖关系...
在Activiti中,流程定义是通过 BPMN 2.0(Business Process Model and Notation)标准来创建的,这是一种图形化的语言,用于描述业务流程的各个步骤和它们之间的关系。在本示例中,我们可能有一个简单的顺序流程,...
Activiti框架中的对象与数据库表之间存在一一对应的关系,例如: - **Deployment** 对应 `act_re_deployment` 表。 - **ProcessDefinition** 对应 `act_re_procdef` 表。 - **ProcessInstance** 对应 `act_ru_...
首先,我们需要了解在Activiti流程定义中如何设置会签。在BPMN 2.0规范中,可以使用多实例(Multi-instance)属性来实现这个功能。对于用户任务,我们可以设置`<multiInstanceLoopCharacteristics>`元素,其中`...
Hibernate是一个对象关系映射(ORM)工具,它简化了Java应用与数据库之间的交互。在SSH Activiti中,Hibernate负责数据持久化,将Java对象转换为数据库中的记录,反之亦然。这样,开发者可以使用面向对象的方式来...
1. **Activiti流程定义**:学习如何使用 Activiti Designer 工具或手写XML来设计和定义业务流程,理解流程图中的各个元素(如Start Event、End Event、User Task、Service Task等)及其关系。 2. **Spring集成...
#### 三、Activiti中主要对象的关系 除了了解各个表的具体用途外,还需要理解它们之间的关系。例如,在实际流程执行过程中,ACT_RU_EXECUTION与ACT_RU_TASK之间存在着紧密的关联,ACT_RU_EXECUTION表中的数据记录了...
MyBatis 是一款优秀的持久层框架,它简化了Java应用与数据库之间的交互,允许开发者通过SQL语句直接操作数据库,同时提供了ORM(对象关系映射)功能,使得数据库操作更为便捷和灵活。将MyBatis集成到Activiti中,...
通过一组标准化的符号和连线,业务流程图清晰地展示了业务流程中的各个环节及其相互关系,有助于理解和优化现有流程。 #### BPMN(业务流程建模标注) BPMN(Business Process Modeling Notation)是一种标准化的...
6. IdentityService:身份服务,用于管理用户、组和它们之间的关系,是权限控制的基础。 7. HistoryService:历史服务,记录流程执行的历史信息,便于跟踪和审计。 8. FormService:表单服务,与表单集成,处理表单...
在SSH+Activiti的项目中,Activiti通常与Spring集成,用于定义、执行和管理业务流程。 项目中的文件结构: 1. `.project`:这是Eclipse项目的配置文件,包含了项目的一些元数据,如项目类型、构建路径等。 2. `...
- `IdentityService`: 用于管理用户、组及其之间的关系。 - `RuntimeService`: 用于管理正在运行的流程实例和相关任务。 - `TaskService`: 专门用于管理任务的创建、分配、查询等操作。 - `FormService`: 用于管理和...
本文旨在深入解析Activiti的数据表结构及核心对象之间的关系,帮助读者更好地理解其内部机制。 #### 数据库表结构 Activiti在数据库中使用了23张表来存储不同的数据类型,每张表的名称以“ACT_”为前缀,后跟两个...
此表与`ACT_RE_DEPLOYMENT`表之间存在多对一的关系,即一个部署包中可能包含多个流程定义文件,每个流程定义文件都会在`ACT_RE_PROCDEF`表中保存一条记录。 - **ACT_RU_EVENT_SUBSCRIPTION**:虽然部分内容中没有...
此表与ACT_RE_DEPLOYMENT表之间存在多对一的关系,即一个部署包中可以包含多个流程定义文件,每个流程定义都会对应一条记录在此表中。 **表结构说明**:主要包括ID、REV、CATEGORY、NAME、KEY、VERSION、DEPLOYMENT...
- **表设计**:根据实体类设计数据库表结构,通常使用一对一、一对多或许多对多关系来实现数据之间的关联。 #### 登录与退出功能 - **登录功能**:设计登录接口,验证用户提供的用户名和密码是否正确。 - **退出...
4. **配置Activiti**:在Spring配置中设置Activiti的配置,如流程定义资源的加载路径。 5. **定义流程模型**:使用Activiti提供的建模工具或直接编写XML流程定义文件(.bpmn)来设计工作流程。 6. **编写Service类**...
本文将不会讨论Activiti与JBPM5之间的关系及其选择标准,相关资料可以在百度上查询到。 首先,要了解Activiti工作流引擎的源码,需要熟悉其核心组件,其中包括ProcessEngine、TaskService、RuntimeService和...
流程模型描述了任务、决策、事件和流程之间的关系。 3. **部署流程定义**:将创建的流程模型部署到Activiti引擎中,使得流程可以在运行时被实例化和执行。 4. **集成SSH**:在Struts的Action类中调用Activiti的...