- 浏览: 599843 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (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)
最新评论
Activiti总结内容
常用方法汇总
sequenceFlow id='test' sourceRef='' targetRef=''
serviceTask id='serviceTaskId' activiti:expression='#{beanName.method}'
自动调用beanName对应的bean的method方法
<bean id='beanName' class='com.cn.xwL.Teyst'>
这个bean还需要在ProcessEngineConfiguration中进行配置
--部署一个流程图
repositoryService.createDeploy().addClasspathResource(resourceName).deploy();
--开启一个流程
runtimeService.startProcessInstanceByKey("processId");
--获得一个流程实例也是用runtimeService
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(findTaskById(taskId).getProcessInstanceId())
.singleResult();
-- Task对象可以转化成TaskEntity
TaskEntity taskEntity = (TaskEntity) taskService.createTaskQuery().taskId(taskId).singleResult();
-- 节点ID
String activityId = taskEntity.getTaskDefinitionKey();
-- 流程定义ID
String definitionId = taskEntity.getProcessDefinitionId();
-- 取得 流程定义对象
ProcessDefinitionEntity processDefinition = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService)
.getDeployedProcessDefinition(taskEntity.getProcessDefinitionId());
-- 获得所有节点定义
List<ActivityImpl> activityList = processDefinition.getActivities();
-- 根据节点ID,获取对应的活动节点
ActivityImpl activityImpl = ((ProcessDefinitionImpl) processDefinition).findActivity(activityId);
-- 获得某个节点流出的顺序流信
List<PvmTransition> pvmTransitionList = activityImpl.getOutgoingTransitions();
--获得一个任务
Task task = taskService.createTaskQuery().singleResult();
--获得表单信息
StartFormData sfd = FormService.getStartFormData(processDefinitionId) ;
TaskFormData tfd = FormService.getTaskFormData(taskId) ;
--可以获得配置好的表单地址
String formKey = tfd.getFormKey();
-- 查询taskId节点发起的任务集合
List<Task> tasks = taskService.createTaskQuery().parentTaskId(taskId)
.taskDescription("jointProcess").list();
--参数集合 并完成任务
HashMap<String, Object> variables = new HashMap<String, Object>();
taskService.complete(taskId,variables);
--查询流程实例中已经完成的任务集合 按完成时间降序排序
List<HistoricActivityInstance> historicActivityInstances = historyService
.createHistoricActivityInstanceQuery().activityType("userTask")
.processInstanceId(processInstance.getId())
.activityId(activityId).finished()
.orderByHistoricActivityInstanceEndTime().desc().list();
顺序流 sequenceFlow sourceRef targetRef
分支 排他分支 带X的菱形 不带X的菱形 都可以表示排他分支
<exclusiveGateway id='exclusive'>
<parallelGateway id='fork'> 都是有两个并行分支 分别表示拆分和合并 会签就是并行分支
<parallelGateway id='join'>
<sequenceFlow id='' sourceRef='exclusive' targetRef=''>
<conditionExpression xsi:type="tFormalExpression">${input==1}</conditionExpression> input表示从上一个节点所传的参数
</sequenceFlow>
<userTask id='' activiti:assignee="user1"> assignee是直接分配给某人 而 <userTask id=='' activiti:candidateUsers='user1,user2'> 是指定user1和user2为候选人两个都可以完成任务
activiti:candidateGroups指定任务候选组
同样可以在任务上面添加任务监听器 <activiti:taskListener event='create' class='XXX'>
public class XXX implements TaskListener{
public void notify(DelegateTask delegateTask){
delegateTask.setAssignee("");
delegateTask.setCandidateUsers();
}
}
java服务任务
serviceTask (用来调用外部类) 必须实现JavaDelegate或ActivitiBehavior类
<serviceTask id='' name='' activiti:class="xx.xx.xx.XXX" 或 activiti:delegateExpression="${beanName}">
exclusiveGateway
parallelGateway
指定人和候选人有区别 指定就是叫确定某个人
public class MyBehavior implements ActivityBehavior{
public void execute(ActivitiExecution execution){
String varValue = (String)execution.getVariable("var");
PvmTransition transition = execution.getActivity().findOutgoingTransition("name");
-- 执行某个顺序流
execution.take(transition);
}
}
任务监听器只能适用与用户任务(userTask) <extensionElements>的标签中
<activiti:taskListener event='' class=''>
event属性必须要有 选项有 create assignment complete
子流程的所有信息都必须在subProcess标签中实现
可以通过callActiviti标签把子流程嵌入到相应的流程当中
表单数据(FormData) 分别包括 StartFormData sfd = FormService.getStartFormData()
和TaskFormData tfd = FormService.getTaskFormData(taskid);
外部表单可以通过<userTask activiti:formKey='xxxx.html' 来定义
可以通过TaskFormData.getFormKey()方法来获取
历史相关对象
HistoricProcessInstance --流程实例历史信息
HistoricActivitiInstance -- 节点实例历史信息(包括任务实例)
HistoricTaskInstance --任务实例历史信息
HistoricDetails --流程中所使用的变量信息
历史信息配置
<bean id='processEngineConfiguration'>
<property name='history' value='audit'/>
</bean>
常用方法汇总
sequenceFlow id='test' sourceRef='' targetRef=''
serviceTask id='serviceTaskId' activiti:expression='#{beanName.method}'
自动调用beanName对应的bean的method方法
<bean id='beanName' class='com.cn.xwL.Teyst'>
这个bean还需要在ProcessEngineConfiguration中进行配置
--部署一个流程图
repositoryService.createDeploy().addClasspathResource(resourceName).deploy();
--开启一个流程
runtimeService.startProcessInstanceByKey("processId");
--获得一个流程实例也是用runtimeService
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(findTaskById(taskId).getProcessInstanceId())
.singleResult();
-- Task对象可以转化成TaskEntity
TaskEntity taskEntity = (TaskEntity) taskService.createTaskQuery().taskId(taskId).singleResult();
-- 节点ID
String activityId = taskEntity.getTaskDefinitionKey();
-- 流程定义ID
String definitionId = taskEntity.getProcessDefinitionId();
-- 取得 流程定义对象
ProcessDefinitionEntity processDefinition = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService)
.getDeployedProcessDefinition(taskEntity.getProcessDefinitionId());
-- 获得所有节点定义
List<ActivityImpl> activityList = processDefinition.getActivities();
-- 根据节点ID,获取对应的活动节点
ActivityImpl activityImpl = ((ProcessDefinitionImpl) processDefinition).findActivity(activityId);
-- 获得某个节点流出的顺序流信
List<PvmTransition> pvmTransitionList = activityImpl.getOutgoingTransitions();
--获得一个任务
Task task = taskService.createTaskQuery().singleResult();
--获得表单信息
StartFormData sfd = FormService.getStartFormData(processDefinitionId) ;
TaskFormData tfd = FormService.getTaskFormData(taskId) ;
--可以获得配置好的表单地址
String formKey = tfd.getFormKey();
-- 查询taskId节点发起的任务集合
List<Task> tasks = taskService.createTaskQuery().parentTaskId(taskId)
.taskDescription("jointProcess").list();
--参数集合 并完成任务
HashMap<String, Object> variables = new HashMap<String, Object>();
taskService.complete(taskId,variables);
--查询流程实例中已经完成的任务集合 按完成时间降序排序
List<HistoricActivityInstance> historicActivityInstances = historyService
.createHistoricActivityInstanceQuery().activityType("userTask")
.processInstanceId(processInstance.getId())
.activityId(activityId).finished()
.orderByHistoricActivityInstanceEndTime().desc().list();
顺序流 sequenceFlow sourceRef targetRef
分支 排他分支 带X的菱形 不带X的菱形 都可以表示排他分支
<exclusiveGateway id='exclusive'>
<parallelGateway id='fork'> 都是有两个并行分支 分别表示拆分和合并 会签就是并行分支
<parallelGateway id='join'>
<sequenceFlow id='' sourceRef='exclusive' targetRef=''>
<conditionExpression xsi:type="tFormalExpression">${input==1}</conditionExpression> input表示从上一个节点所传的参数
</sequenceFlow>
<userTask id='' activiti:assignee="user1"> assignee是直接分配给某人 而 <userTask id=='' activiti:candidateUsers='user1,user2'> 是指定user1和user2为候选人两个都可以完成任务
activiti:candidateGroups指定任务候选组
同样可以在任务上面添加任务监听器 <activiti:taskListener event='create' class='XXX'>
public class XXX implements TaskListener{
public void notify(DelegateTask delegateTask){
delegateTask.setAssignee("");
delegateTask.setCandidateUsers();
}
}
java服务任务
serviceTask (用来调用外部类) 必须实现JavaDelegate或ActivitiBehavior类
<serviceTask id='' name='' activiti:class="xx.xx.xx.XXX" 或 activiti:delegateExpression="${beanName}">
exclusiveGateway
parallelGateway
指定人和候选人有区别 指定就是叫确定某个人
public class MyBehavior implements ActivityBehavior{
public void execute(ActivitiExecution execution){
String varValue = (String)execution.getVariable("var");
PvmTransition transition = execution.getActivity().findOutgoingTransition("name");
-- 执行某个顺序流
execution.take(transition);
}
}
任务监听器只能适用与用户任务(userTask) <extensionElements>的标签中
<activiti:taskListener event='' class=''>
event属性必须要有 选项有 create assignment complete
子流程的所有信息都必须在subProcess标签中实现
可以通过callActiviti标签把子流程嵌入到相应的流程当中
表单数据(FormData) 分别包括 StartFormData sfd = FormService.getStartFormData()
和TaskFormData tfd = FormService.getTaskFormData(taskid);
外部表单可以通过<userTask activiti:formKey='xxxx.html' 来定义
可以通过TaskFormData.getFormKey()方法来获取
历史相关对象
HistoricProcessInstance --流程实例历史信息
HistoricActivitiInstance -- 节点实例历史信息(包括任务实例)
HistoricTaskInstance --任务实例历史信息
HistoricDetails --流程中所使用的变量信息
历史信息配置
<bean id='processEngineConfiguration'>
<property name='history' value='audit'/>
</bean>
- Activiti_5.8_用户指南(中文版).pdf (3.4 MB)
- 下载次数: 8
发表评论
文章已被作者锁定,不允许评论。
-
Activiti自我总结
2014-12-26 20:55 1308Spring代码 <?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中流程对象之间的关系
2014-06-25 10:36 733在开始之前先看看下图,对整个对象结构有个了解,再结合下面的详细 ... -
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 ...
相关推荐
这个"002_activiti学习总结.zip"文件显然包含了一份关于Activiti的学习笔记,可能涵盖了从基础到进阶的各种概念。以下是对这些知识点的详细说明: 1. **流程定义(Process Definition)**:流程定义是Activiti的...
【工作流Activiti5学习总结】 工作流管理系统(Workflow Management System, WfMS)是企业信息化建设中的重要组成部分,它负责协调和管理业务流程。Activiti5是一款开源的工作流引擎,由Alfresco公司开发,它基于...
在本篇博客“工作流Activiti的学习总结(十二)activiti官方十分钟快速学习”中,作者分享了关于Activiti工作流引擎的快速学习经验。Activiti是一个开源的、基于Java的企业级工作流引擎,它被广泛应用于自动化业务...
Activiti学习文档 #### 概述 Activiti是一个开源的工作流引擎,用于构建业务流程自动化应用。它支持完整的业务流程管理生命周期,并且提供了丰富的API来满足不同的应用场景需求。本文档将深入探讨Activiti的核心...
### Activiti流程学习总结 #### 一、工作流的基本概念 在深入了解Activiti之前,我们需要先理解工作流的概念。工作流是一种将业务过程部分或全部自动化的方法,它可以帮助组织提高工作效率,减少错误,并且能够更...
### Activiti工作流学习总结 #### 一、Activiti学习资源汇总 - **官方网站**: 提供了Activiti的最新版本信息、文档和技术支持等。地址为:[http://www.activiti.org/](http://www.activiti.org/) - **下载页面**: ...
工作流引擎Activiti是开源的工作流引擎,这是一份简单的使用总结,希望对大家有用。
标题中的“工作流Activiti的学习总结(八)Activiti自动执行的应用”表明本文将探讨如何在Activiti工作流引擎中实现任务的自动化执行。Activiti是一个开源的工作流和业务流程管理(BPM)系统,广泛应用于企业级应用...
总结来说,“Activiti学习文档(二)之画流程图并部署流程”会带你走过从设计到实施一个完整流程的整个过程,包括理解BPMN符号、使用工具绘制流程图、编写部署脚本,以及如何在实际环境中运行和管理流程实例。...
总结,这个学习资料包提供了全面了解和掌握 Activiti 的资源,包括理论知识、实践操作以及与流行开发框架的集成。无论是新手还是经验丰富的开发者,都能从中受益,提升在业务流程自动化方面的技能。
以上是对Activiti使用的一些核心知识点的总结,对于学习和使用Activiti的朋友来说,这些都是理解和应用 Activiti 必不可少的基础。通过深入理解和实践,你可以利用Activiti构建出高效、灵活的业务流程管理系统。
这个“activiti学习资料文档”可能包含详细的教程、示例代码、案例分析等内容,帮助你全面掌握Activiti的各个方面。通过深入学习,你可以成为一名熟练的Activiti开发者,有效地设计、实现和管理企业的业务流程。记得...
总结,Activiti中的ReceiveTask是一个等待外部事件触发的节点,它使得流程能够灵活响应外部世界的变化。通过熟练掌握ReceiveTask的使用,开发者可以构建出更加动态和响应式的业务流程。同时,深入研究源码和利用提供...
### Activiti5学习笔记核心知识点解析 #### 一、Activiti5概述与环境搭建 **Activiti5**是一款开源的工作流引擎,基于Java语言开发,主要用于实现业务流程管理(BPM)和工作流自动化。其核心特性包括流程建模、...
总结,理解并充分利用 Activiti 的流程执行历史记录功能,是深入掌握 Activiti 并提升业务流程管理效率的重要步骤。通过查询和分析历史数据,我们可以更好地了解流程运行状态,发现问题,优化流程,并为企业的决策...
Activiti是一个轻量级的、易用的BPM(Business Process Management,即业务流程管理)框架,它允许开发者通过使用Java类库实现工作流引擎。Activiti的目的是提供一种轻便、灵活的工具,帮助开发者构建BPM应用程序,...
本学习笔记主要聚焦在开始活动节点以及如何判断流程是否结束,同时涵盖了查询历史流程实例的相关内容。 一、开始活动节点(Start Event) 在 Activiti 流程图中,开始活动节点(Start Event)标志着流程的起始点。...
总结,Activiti 中的并行网关是构建复杂流程设计的重要工具,它可以提高流程执行的效率,适应多任务并行处理的需求。理解并熟练运用并行网关,能帮助我们更好地设计和优化业务流程。在实际应用中,应根据具体业务...