文档章节

对近期“工作流”方面的一些总结

猪刚烈
 猪刚烈
发布于 2014/10/12 11:47
字数 550
阅读 28
收藏 0

工作流有四个重要组成部分:


1.物件:也称实体或资源,是工作流程中的“被关注或被操作的对象”。在一个公文审批流程中,公文就是物件。在休假申请流程中,假条就是物件。
2.参与者:是流程中各个步骤上的负责人。它可能是具体的人也可能是某个部门或自动化设备。
3.流程定义:对整个流程一个描述,指明流程应该按照怎样的方式一步步推进执行。
4.工作流引擎:根据流程定义驱动参与者从一个流程到下一下流程的一套机制。

关于Activiti中一些概念的解释:


首先:对于Task来说,它指的是当前正等待执行的Activity,也就是一个进行中的流程所处的当前节点。所以Task表中是没有结束时间的,一旦这个Task完成,它就不再是一个Task,它将从Task表中删除。而在activity_instance表中则会出现一条新记录,用于记录刚刚完成的那个task,也就是说对于每个activity,只要执行一次就会生成一个instance,这与process的处理机制是一至的.

activiti支持任何类型的变量以序列化的方式存入数据库,下次可以通过反系列化取出。也就是说你可以将任何对象做为变量存入activiti的数据库,下次使用时能从数据库中直接该对像取出。

对于Activiti查询性能的担忧:


Activiti的实体类只存储关联对象的ID,如果需要得到关联对象时,需要获得ID后重新通过Query查询。如果需要返回一组集合时,就有可能生成N条sql,这与hibernate中存在的N+1次查询非常相似。
例如:想要得到一个ProcessInstance的name,只能从ProcessDefinition中获得:

org.activiti.engine.repository.ProcessDefinition processDefinition =
            repositoryService.createProcessDefinitionQuery().processDefinitionId(activitiProcessInstance.getProcessDefinitionId()).singleResult();
        processInstance.setName(processDefinition.getName());

而想要得到一个ProcessInstance当前Task的名字,只能从Task中获得:
String executionId = activitiProcessInstance.getId();
org.activiti.engine.task.Task currentTask = taskService.createTaskQuery().executionId(executionId).singleResult();
processInstance.setCurrentTaskName(currentTask.getName());

本文转载自:http://blog.csdn.net/bluishglc/article/details/6088856

共有 人打赏支持
猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
图书免费赠送活动《jBPM4工作流应用开发指南》

活动内容: 参与活动者请从现在开始,到2010年10月30日这段时间内,对Oschina发布的《jBPM4工作流应用开发指南》一书内容章节进行客观点评,及大家对于工作流开发的经验,或者对工作流的认识...

sharepub
2010/09/26
6.7K
98
工作流系统在OA系统中应用

回忆起10年前工作流引擎的应用,感觉历历在目啊!当初公司接了一个项目关于公文流转的管理系统,一开始客户就跟我画了十多张业务流程图,用Visio制图工具进行描述,其实业界通用的Rational ...

长平狐
2012/10/11
172
1
2018年的Jira新版本

2018年的Jira新版本 程序师2017-12-300 阅读 Jira业界观察 在过去的六个月里,我们推出了呼声很高的一些功能特性,发布了Jira Software 7.4,7.5,7.6,其中介绍了生产力和产品规划功能,如K...

程序师
2017/12/30
0
0
项目协作工具-JIRA使用笔记和相关资料

去年的时候,我写过一篇关于基于WIKI的Streber的文章,Streber是一个对人员素质和自觉性要求较高的工具,在一般的团队中,建议还是使用规范性较高的工具对项目信息和任务进行管理的工具较好,在这...

orpheus
2009/08/14
0
0
123个微信小程序源码分享(附下载)

扫描文末的二维码关注公众号后 获得下载链接。 相关阅读: 吊炸天!74款APP完整源码! [干货]2017已来,最全面试总结——这些Android面试题你一定需要 Java面试知识点总结 微信小程序近期火...

xhmj12
2017/01/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

[Python进阶] Python命令行参数

Python 获得命令行参数的方法 需要模块:sys 参数个数:len(sys.argv) 脚本名: sys.argv[0] 参数1: sys.argv[1] 参数2: sys.argv[2] 解析命令行参数 Python提供了一个getopt模块,可用于解...

Eappo_Geng
11分钟前
0
0
add docker api url to jenkins

add docker api url to jenkins add jenkins to dockergroup gpasswd -a $USER docker gpasswd -a jenkins docker DOCKER_OPTS="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock" in ......

kewei_zhang
15分钟前
0
0
Scala入门篇

1、定义变量 var 可变 val 不可变,相当于Java中的final Unit相当于Java中的void,以()表示 scala> val a = println("ddd") ddd a: Unit = () 2,声明数组 scala> val arr = Array(1,2,3,4,5) ......

算法之名
15分钟前
6
0
利用redis统计分布式集群中接口缓存命中情况

接口使用了缓存,想看看缓存命中率,到底提升了多少了?固想到做个统计方法,单机情况下使用 AtomicImteger,考虑到分布式集群中多台服务器调用,所以考虑使用redis进行统计 原来的想法很简单用分布...

计算机的小二青年
15分钟前
0
0
前端加密JS库--CryptoJS 使用指南

有时候项目涉及到的敏感数据比较多,为了信息安全,我们常常需要对一些数据进行接口加密处理,如编码、将明文转化为暗文、加密比对、AES + BASE64 算法加密等。 Base64 编码 为什么要编...

舒龙虎
18分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部