当前位置:首页 > 大全 >

运行引擎2010(vs2005中文版下载)

来源:原点资讯(www.yd166.com)时间:2022-12-20 08:13:47作者:YD166手机阅读>>

1. 什么是Activiti

Activiti是Tom Bayen(jBPM创始人)自2010年离开jBoss加入Alfresco公司后的又一力作:第一版在2010年5月发布,当时仅支持最简单的流程处理,之后的版本陆续完善了对BPMN 2.0规范的支持。其核心是使用Java开发的。其前身就是JBPM。

早年关于研发工作流的厂商也少,而Activiti开源早,所以占领了知名度的先机,但目前国内自主研发的流程引擎也越来越多,而且更加符合中国国情的项目,甚至远远越过了Activiti,易用易上手,容易扩展,即拿即用。

2. Activiti核心数据库表

Activiti的后台是有数据库的支持,所有的表都以ACT_开头。

ACT_RE_*: 'RE’表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。

ACT_RU_*: 'RU’表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。

ACT_ID_*: 'ID’表示identity。 这些表包含身份信息,比如用户,组等等。

ACT_HI_*: 'HI’表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。

ACT_GE_*: 通用数据, 用于不同场景下,如存放资源文件。

3. Activiti优点

1、 最大的优点就是免费开源,这也是很多人选择的原因。

2、 小项目中应用简单的串行并行流转基本能满足需求。

4. Activiti存在问题4.1. 节点定义概念不同

节点理解不同:在Activiti中将节点理解为脚本任务,用户任务等,这样表达有点让人容易产生理解偏差,通常在我们的理解里如果是一个任务那么任务就是一件具体的事情,比如让一个人去挑水,就是一件很具体不可再细分的事情,所以把节点取名用户任务是不太准确,因为节点来说必然是可再细分的对象,有可能多个人处理,或者其它可再分的情况。

在微软的WF工作流中把节点叫作“活动”Activity(活动),我认为是比较好的,因为一个节点就是一个集体活动的事情,一个流程是由一个个集体事务(活动)组成的,流程是最大集体事务,分解成一个个节点活动,活动是由人员参与进来的,多个人参与一个活动共同完成这个活动。

这里谈的其实涉及到表达的问题,其实都是一些看法和思考,采用什么“粒度划分”,采用哪个名词表示从中国式的流程来看,个人认为将节点使用“活动”来表达表示可再分,任务仅仅就表示一个任务已经是最细颗粒度不可再分,这样表述更好更易理解。

思想定了就会影响设计,通常在设计代码写法上也会把这种表达用来命名。

4.2. 缺乏详细的节点实例和任务实例关系轨迹,缺乏可“追溯”性

缺少节点实例轨迹数据的持久化,Activiti运行时紧紧围绕act_ru_execution这张表来工作,此表也是整个流程引擎的运行核心表,执行时是一个树型表,这张表就是节点运行实例的过程,而且使用PARENT_ID_来从一个节点到多个节点的过程,只是仅仅有一个Parent_Id_来维护是不够的,因为我们知道关系有可能这是样的正向生成的树,也有倒生长的树:

运行引擎2010,vs2005中文版下载(1)

如上图:E到F,G 是正向成长的,而F,G到H是倒挂的树,虽然上图有点简单,但意思也能表达到,就是正向树与倒向树时,仅有一个ParentId是不能满足的,当Activiti倒向树时这个表的数据相对会复杂很多,对于这情况情如果你不能很精深理解Activiti或者因二次开发功能上的需求强制使用代码来修改这张表,那么将会埋下不少的“坑”,给将来程序留下不少隐患。Activiti对于这表的执行过后会进行删除数据,节点完成一个就会删除一条数据,也就是节点实例数据并不持久保存, 执行完就删除掉还节点数据库容易,其实这样问题又来了,驳回怎么办,这也是Activti对驳回的支持很弱的原因,几乎也在告诉你不好意思,我们国外没有驳回的概念。通常办法就是在节点上做事件切面然后记录下来,但往往记录的也只能是节点定义Id之关的过程,并没有实例紧密性的关系层次记录。

二次开发住住因业务要求,中国式的流程审批的要求,对此表的修改估计是很多基于Activiti为基础开发的工作流必不可少的事情,如果是正向树通过删除或修改数据来改变流程的流转相对危险没有那么高,如果是一个倒挂树的模型时,那将会很麻烦,同时不可预见性的概率将增大。

比如下图模型。

运行引擎2010,vs2005中文版下载(2)

同时Activiti缺少任务实例轨迹(此任务并不是Activiti对节点叫任务的表达),因为业务过程往往需要有追溯,工作流的好处正因为有流程的理念并有“追溯”明确到人的责任痕迹,所以精确清晰的“追溯”是必不可少的,需要知道A任务是由哪个任务传递过来的,知道从哪里来然后又去了哪里,哪些人参与了,发生了什么事情。

缺乏详细的轨迹也是导致Activiti先天关于驳回功能的脆弱性的原因,当然强制扩展轨迹记录也是做得到,只是所记录的也并不是完全正确。Ativiti的执行过程是必须依赖流程图的,如果图上没有画线是不能执行的。

4.3. 扩展需要与很多的Event来实现

Activiti需要经过大量的扩展才能应用起来,直接从官网下载下来的Activiti要达到企业级应用还需要一段痛苦的改造之路要走。Activti的扩展非常依懒事件监听和AOP切面事件,其中一个常用的扩展之一就是在执行过程修改Activiti的源代码,然后在网关节点的代码中广播各种事件通过SpringMVC来捕获这些事件,交给事件来进行流程执行过程中的数据进行记录,从而达到扩展的目的,从表面上来看似乎问题不大,但从日积月累后你会发现,整个执行过程就像一个GOTO语法,代码执行到处乱跳,非常的不好维护,可读性也差,一是维护人员的技术门槛非常高,二是越到后面代码越难维护。久而久之会把项目拖垮。

4.4.重要功能缺失

1、Activiti缺乏动态表单,意味着每新增一个审批流程,都得上版本,虽说Activiti流程设计可以在线用Modeler设计,但前端缺少动态表单且未和流程相绑定,所以每个流程都需要人肉维护;
2、Activiti缺乏对复杂组织架构的支撑,只适合用在扁平简单的组织架构中,对稍复杂的组织架构明显支持不足;
3、可视化流程建模工具Modeler只能算作一个半成品,跟表单、组织架构等的关联在线设计基本没有;
4、缺少报表、流程监控干预等方面的配套,需要自己开发,工作量不小。

4.5. 二次开发难度大,门槛高

要真正把Activti用好的话,其实还需要做大量的开发封装,首先得对Activiti有进行学习研究,理解透了才能进行改造。

Activti最明显的一个地方就是事件机制,简单来说把Activti执行过程理解为一条直线,这条执行直线上你要做很多的AOP拦截,对这个拦截进行事件抛出,然后自己再捕获这个事件进行扩展开发。如下图:正如下图所示,AOP是非常好的设计思想,只是一个核心逻辑通过大量的AOP来扩展后达到核心运行逻辑这势必数据容易导致混乱和数据的脆弱性,使用过度事件广播来达到改造的目的,而且事件之间还存在相关联。

运行引擎2010,vs2005中文版下载(3)

可视化流程建模工具Modeler只能算作一个半成品,跟表单、组织架构等的关联在线设计基本没有;
缺少报表、流程监控干预等方面的配套,需要自己开发,工作量不小。

5. 总结

Activti的学习价值比较高,是工作流入门的好教材,可以学习里面好的代码风格和思路。但是要拿Activiti做到中国式的企业级应用门槛和难度很高。想用Activiti来做企业应用,还需要经地大量的改造,本文提到的缺点仅仅也只是一部份,实际中碰到的问题将更多。

栏目热文

已知抛物线对称轴可以得知什么信息(抛物线关于原点对称解析式怎样变)

已知抛物线对称轴可以得知什么信息(抛物线关于原点对称解析式怎样变)

二次函数是中考的重点、热点,可与多个知识点相结合,本篇主要简单介绍下二次函数中几何图形线段、周长、面积最值问题。线段最值...

2022-12-19 16:52:51查看全文 >>

上海瑞虹新城属于什么街道

上海瑞虹新城属于什么街道

位于虹口嘉兴路街道的瑞虹新城,是上海具有代表性的国际化社区,从一期到九期,总开发面积约170万平方米,社区居民近1.8万...

2022-12-18 12:26:56查看全文 >>

河南省内大学排名2019(河南省内大学实力排名)

河南省内大学排名2019(河南省内大学实力排名)

河南有百万考生,但是河南省的全国知名高校不多。在外省考生印象中,除了郑州大学,估计印象中的河南名校,可能并不多。今天我们...

2022-12-22 02:12:56查看全文 >>

印度疫情最新消息意大利疫情最新消息(印度疫情最新消息世界疫情排行)

印度疫情最新消息意大利疫情最新消息(印度疫情最新消息世界疫情排行)

来源:环球时报【环球时报综合报道】据印度报业托拉斯6日报道,一架从意大利飞往印度旁遮普邦阿姆利则市的航班上,有125名乘...

2022-12-09 08:38:00查看全文 >>

手机怎样设置自动锁屏(手机不要自动锁屏怎么设置)

手机怎样设置自动锁屏(手机不要自动锁屏怎么设置)

想要了解更多热门资讯、玩机技巧、数码评测、科普深扒,可以点击右上角关注我们的头条号:雷科技---------------...

2023-09-13 03:29:51查看全文 >>

游戏人生zero(游戏人生zero大结局)

游戏人生zero(游戏人生zero大结局)

比起不做而后悔,不如做了再后悔。《no game no life》整部动画其实让我印象最深刻的是空这句台词。没有必胜的斗...

2022-12-17 03:47:26查看全文 >>

怎么和男朋友好好告别(如何和男朋友做最后的告别)

怎么和男朋友好好告别(如何和男朋友做最后的告别)

有些时候,恋爱是非常具有戏剧性的,怎么才能在分手的时候给别人留下非常深刻的印象呢?今天我们就来为大家仔细的介绍一下,分手...

2023-02-04 23:19:50查看全文 >>

电子琴的e7和弦怎么按(电子琴上的e7和弦怎么弹)

电子琴的e7和弦怎么按(电子琴上的e7和弦怎么弹)

2020-04-16 转自紫鷰书屋说起电子琴和弦的学习,很多人都会感到头晕脑胀的,刚一接触总是不得要领,毕竟和弦种类繁多...

2022-12-11 12:09:29查看全文 >>

文档排行