浅谈如何进行技术选型 (以工作流引擎技术选型为例说明)

                在研发过程中,我们会面临各种技术抉择。应该如何选择?选择哪种技术?为何选择这种技术?我们不认真考虑的话,往往会说不清道不明。下面根据常用的技术选型套路,来说明如何进行技术选型。文中以工作流引擎技术选型为例详细说明。

            (一)了解内部情况,确定问题范围

    不确定“问题”就无所谓“解”。我们分析了解到电子政务领域的各种活动中,工作流程无处不在。我们系统包括综合办事系统、联合审批系统、社区事件管理等的业务审批,都存在各式各样的业务流程。我们对主要业务流程进行分析,了解各产品部门对流程控制要求。当前工作流程管理、控制上主要存在三大问题:

    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

集成整合能力

易接入ESB平台,易于集成规则引擎。

Activiti能够很好支持规则引擎;jBPM5基于Drools构建,对规则引擎天然支持。在对ESB平台接入方面,Activiti对更多现有ESB平台提供支持,尤其支持我们的ESB选型Mule。

    锁定主要选型后,必要情况要做更多的技术比较:

技术组成

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作为我们的工作流引擎。

 

    我们研发过程的技术选型,甚至其他生产或管理过程的工具选择,都可以参考以上技术选型套路。虽然某些工具层面的选型要求也许不那么细致,仍然需要考虑周全。我们的创造之源就在于我们对事物客观、精确、全面的了解与分析。