以工作流引擎技术选型为例,浅谈如何进行技术选型
在研发过程中,我们会面临各种技术抉择。应该如何选择?选择哪种技术?为何选择这种技术?我们不认真考虑的话,往往会说不清道不明。下面根据常用的技术选型套路,来说明如何进行技术选型。文中以工作流引擎技术选型为例详细说明。
(一)了解内部情况,确定问题范围
不确定“问题”就无所谓“解”。我们分析了解到电子政务领域的各种活动中,工作流程无处不在。我们系统包括综合办事系统、联合审批系统、社区事件管理等的业务审批,都存在各式各样的业务流程。我们对主要业务流程进行分析,了解各产品部门对流程控制要求。当前工作流程管理、控制上主要存在三大问题:
1、流程逻辑与其它业务逻辑耦合,对业务流程的修改“伤筋动骨”
2、业务流程可视化程度低,可管理程度低
3、流程过程数据缺乏有效的记录
工作流引擎技术就是主要为解决这三大问题。
(二)研究外部发展,跟踪业界动态
研究外部技术领域的发展,主要关注相关业界规范的发展及主要厂家对规范支持情况。了解到BPMN2.0是业务流程最新规范。BPMN2.0定义了业务流程的元模型和执行语义,解决了存储、交换和执行的问题。BPMN目前已经被广泛接受,各大厂商都支持BPMN标准定制出各自的工作流引擎。
(注:工作流技术选型在2013年)
(三)锁定目标,定义效果
结合内部现状和外部发展,我们就可以基本锁定要解决问题范围,进而细化出我们的“解”需要达到的目标与效果。我们要在现有开发平台集成成熟的工作流技术,统一实现业务流程控制逻辑,使业务系统不需要关心业务流程控制,而专注于自身业务功能的开发,加快业务系统的建设。我们要实现目标和效果主要有:
1、 统一控制流程逻辑,使之与业务逻辑脱离
2、 具备开放性和可扩展能力:基于业界标准规范BPMN2.0;支持自定义流程,方便与业务表单整合关联。
3、 可视化可管理能力:实时掌握流程状态,图形化展示;业务流程全过程档案,支持统计分析。
4、 快速实施能力:支持流程编排;流程快速部署实施。
(四)遵循选型标准,做出初步选择
技术选型主要原则“主流,适用,简单”,且符合一定性能和安全要求。其中主流指是技术应为事实标准,社区支持强大,成熟、稳定、好找人,发展向好;适用是指需求驱动,满足我们的应用要求;简单指可控可驾驭,可扩展,轻量级。
根据工作流引擎的特点,我们定义以下选型标准;并比较当前主要技术,初步确定在Activiti5和jBPM5之间选择。
根据选型标准对比如下:
序号 |
选型依据 |
具体内容 |
比较说明 |
1 |
公司的未来发展 |
与公司技术架构规划及技术路线相匹配。 |
都匹配。 |
2 |
与开发平台融合 |
符合J2EE规范,易于与Spring整合。 |
都符合J2EE规范,但Activiti5更易于与Spring整合,jBPM5与Spring整合要做大量工作。Activiti5 持久层虽然是采用MyBatis3,但其支持JPA规范的扩展,能够很方便运用Hibernate实现扩展。 |
3 |
行业标准的支持 |
符合BPMN2.0规范。尽量兼容其他规范。 |
都符合BPMN2.0规范。Activiti对多种流程格式都支持,jBPM5稍弱。 |
4 |
技术先进性与完整性 |
流程设计开发能力,支持可视化建模快速开发,支持流程快速变更,支持流程版本控制;人工任务处理能力;流程仿真、监控能力。 |
基本平手。Activiti版本更新更频繁,技术跟进及时。 |
5 |
稳定性、成熟度 |
多线程并发下稳定运行,能适应分布式部署要求,易于测试。 |
测试报告及社区使用显示都足够成熟稳定。 |
6 |
开源、易用 |
作为开发平台的一个功能插件,必须开源。并且要能快速上手易于学习,相关文档资料齐全,对应技术社区成熟活跃。 |
都为开源,均基于Apache License。JBoss社区名气大,但在工作流引擎方向社区活跃相当。 Activiti5更忠于原有业界最流行的jBPM4以前的实现,其概念模型,编程模型等更加容易接受。 |
7 |
集成整合能力 |
易接入平台,易于集成规则引擎。 |
Activiti能够很好支持规则引擎; jBPM5基于Drools构建,对规则引擎天然支持。 |
锁定主要选型后,必要情况要做更多的技术比较:
序号 |
技术组成 |
Activiti5 |
jBPM5 |
1 |
数据库持久层ORM |
MyBatis3 |
Hibernate3 |
2 |
持久化标准 |
支持JPA规范 |
支持JPA规范 |
3 |
事务管理 |
MyBatis机制/Spring事务控制 |
Bitronix,基于JTA事务管理 |
4 |
数据库连接方式 |
Jdbc/DataSource |
Jdbc/DataSource |
5 |
支持数据库 |
Oracle、SQL Server、MySQL等多数数据库 |
Oracle、SQL Server、MySQL等多数数据库 |
6 |
内部服务通讯 |
Service间通过API调用 |
基于Apache Mina异步通讯 |
7 |
集成接口 |
SOAP、Mule、RESTful |
消息通讯 |
8 |
支持的流程格式 |
BPMN2、xPDL、jPDL等 |
目前仅只支持BPMN2 xml |
9 |
引擎核心 |
PVM(流程虚拟机) |
Drools |
10 |
技术前身 |
jBPM3、jBPM4 |
Drools Flow |
11 |
所属公司 |
Alfresco |
jBoss.org |
(五)评审确认最终选型
召开技术选型评审会,借助其他人员的视觉,帮助发现选型问题。如果涉及重大技术选型,需要重点参考技术总监、产品总监的意见,甚至可以请教更高层级。各位专家技术与业务敏锐度,结合足够精细前置分析,容易做出适合现状判断。
我们最终确定选择Activiti5作为我们的工作流引擎。
我们研发过程的技术选型,甚至其他生产或管理过程的工具选择,都可以参考以上技术选型套路。虽然某些工具层面的选型要求也许不那么细致,仍然需要考虑周全。我们的创造之源就在于我们对事物客观、精确、全面的了解与分析。
————————————————
版权声明:本文为****博主「coolstone007」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.****.net/coolstone007/article/details/80907477