- 浏览: 576975 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (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 1282Spring代码 <?xml version=&qu ... -
Activiti根据Flowname进行转向
2014-06-29 18:13 703转向问题需要注意的是每次转向到其他节点时要把其他Transit ... -
Activiti小知识总结
2014-06-29 11:00 5831.ACT_HI_ACTINS表中Assignee字段没有值的 ... -
Activiti获取待办任务信息
2014-06-27 10:00 5170根据userid获得TaskQuery然后再获得Histori ... -
Activiti获取任务候选人
2014-06-27 09:33 2117IdentityLink是任务候选人的对象。来自于taskSe ... -
Activiti获得下一个节点
2014-06-26 14:37 1459用PvmTransition表示箭头的类。而这些类是从 Lis ... -
Activiti获取流程中的审批意见
2014-06-26 14:18 2356执行流程的过程中所有的变量信息都保存在ACT_HI_VARIN ... -
Activiti获取某个流程实例已经审批的节点记录
2014-06-25 16:15 2530已知businessid即eventid获得对应的审批记录 ... -
Activiti获取某个流程实例的FormKey
2014-06-25 15:21 2411通过任务id获得formkey ProcessDef ... -
Activiti中流程对象之间的关系
2014-06-25 10:36 716在开始之前先看看下图,对整个对象结构有个了解,再结合下面的详细 ... -
Activiti学习-2
2014-06-08 17:12 8585.12乱码问题解决: <!-- Activiti ... -
activiti学习之task与execution的关系
2014-06-08 16:54 1378一.含义 task 即待办任务 execution 即流程 ... -
Activiti学习总结
2014-06-03 11:50 18951.获得流程图乱码问题 ... -
Activiti环境安装及项目下载基础学习
2014-06-01 23:10 574Activiti资料 官网:http://www.activ ...
相关推荐
个人对于activiti学习的总结笔记,包括:学习方法、引入的包、代码实现等
包括:Activiti5的10分钟入门指南(转载);Activiti5学习笔记;Activiti5与SSH的整合笔记。
这是我根据教学视频以及网上的资料学习总结的activiti的案例。包括流程定义 流程实例、流程变量、网关、个人任务与组任务、监听、servicetask等,后续会继续更新
自己通过学习activiti流程所总结的经验,对初学者有很大用处!!
工作流引擎Activiti是开源的工作流引擎,这是一份简单的使用总结,希望对大家有用。
工作流Activiti的学习总结Activiti5.6和Spring3.03整合
NULL 博文链接:https://topmanopensource.iteye.com/blog/1315341
个人关于activiti的学习总结,包含activiti的基本知识及基本的使用理解,纯属个人理解,如有问题,欢迎交流。
因为最近公司项目有用到Activiti5工作流来进行审批开发,所以就把activiti5那25张表表结构总结了一份文档,对一些表字段和表做了一些说明和用途以便大家学习。
工作流Activiti的学习总结(七)Activiti在线流程设计器.docx
学习activiti 的朋友可以看看! 可以很好的作为参考资料!
工作流Activiti的学习总结(五) activiti的API和虚拟工作流测试.pdf
工作流Activiti的学习总结(五)activiti的API和虚拟工作流测试.pdf
activiti总结,数据库分析,中文使用指南,SSH项目相关整合,activiti5.22.0jar包
工作流Activiti的学习总结(五)activiti的API和虚拟工作流测试收集.pdf
工作流Activiti的学习总结(五)activiti的API和虚拟工作流测试参考.pdf
NULL 博文链接:https://topmanopensource.iteye.com/blog/1315249
NULL 博文链接:https://topmanopensource.iteye.com/blog/1315238