在运用面向对象分析设计的基础上利用中间件技术
构建SOA构架实现多元化可扩展的Workflow引擎组
—— 在听取“工作流”技术讲座后对其技术应用的思考与理解
在听取了
Workflow(工作流)技术讲座后,结合最近一段时间网络上广泛宣传的SOA架构即(Service-oriented architecture,面向服务架构)。我觉得是否能利用SOA架构来开发工作流引擎呢?
一、工作流技术与SOA架构的基本概念与特点分析
(一)工作流
工作流的基本概念:
工作流(
Workflow)就是“业务过程的部分或整体在
计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。
通过理解后,我觉得工作流就是一系列相互衔接、自动进行的业务活动或任务。一个工作流包括一组任务(或活动)及它们的相互顺序关系,还包括流程及任务(或活动)的启动和终止条件,以及对每个任务(或活动)的描述。
在查阅了互联网上很多资料后,根据目前工作流系统的应用情况可以认为:工作流是在网络、服务器和多台计算机
客户端的硬件平台上,业务过程按照预先设定的规则并借助应用程序和人对相关数据的处理而完成。例如,在日常办公中,当撰写好某份报告之后,可能需要将其提交给领导进行审阅或批示;审批意见可能需要汇集并提交给另外一个人,以便对报告进行进一步的修改。这样,可能会形成同一篇文档在多个人之间的顺序或同时传递。对于这样的情况,我们可以使用工作流技术来控制和管理文档在各个计算机之间自动传递,而非手工传递。这就可以称之为工作流。
类似的关于文档的自动化处理只是工作流技术的一种简单应用。事实上,工作流技术在现实生活中能够完成更多更复杂的任务。如企业(或机构)内部的各种数据或信息的自动处理,多种业务流程的整合,企业(或机构)之间的数据交换,借助
Internet技术实现跨地域的数据传输和处理等等。
工作流的特点:
1,图形化、可视化设计流程图
2,支持各种复杂流程
3,组织结构级处理者指定功能
4,
B/S结构,纯浏览器应用
5,强大的安全性特色
6,表单功能强大,扩展便捷
7,灵活的外出、超时管理策略
8,处理过程可跟踪、管理
9,丰富的统计、查询、报表功能
10,与
MAIL系统集成
工作流的优点:
1,要处理的事项已自动传递到个人电脑上
2,不再需要对员工进行流程的培训,平滑实现流程变更
3,员工只需将精力集中在处理自己关心的数据上
4,随时得到历史数据
5,随时生成处理效率报表
6,达到无纸化办公的目标
7,完全支持移动办公,使作业同步化
8,科学管理更进一层,办公效率明显提高
9,企业的核心竞争力将有提升
10,通过流程自动化与数据库集成,以及各类表单统计查询功能,提高决策能力
通过上述描述,我们可以更加直观地了解到,工作流技术其实是一种面向用户业务流程的一种技术。它主要解决的是当问题域或用户需求发生改变时能对其流程进行快速修改的问题,并以此达到快速适应用户需求的目的。
(二)SOA架构模型
SOA
架构的基本概念:
SOA是一种架构模型,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是
SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
SOA的关键是“服务”的概念,
W3C将服务定义为:“服务提供者完成一组工作,为服务使用者交付所需的最终结果。最终结果通常会使使用者的状态发生变化,但也可能使提供者的状态改变,或者双方都产生变化”。
SOA
架构的特点:
1,可从企业外部访问
2,随时可用
3,粗粒度的服务接口
4,分级
5,松散耦合
6,可重用的服务
7,服务接口设计管理
8,标准化的服务接口
9,支持各种消息模式
10,精确定义的服务契约
SOA
架构的优点:
1,编码灵活性
可基于模块化的低层服务、采用不同组合方式创建高层服务,从而实现重用,这些都体现了编码的灵活性。此外,由于服务使用者不直接访问服务提供者,这种服务实现方式本身也可以灵活使用。
2,明确开发人员角色
例如,熟悉
BES的开发人员可以集中精力在重用访问层,协调层开发人员则无须特别了解BES的实现,而将精力放在解决高价值的业务问题上。
3,支持多种客户类型
借助精确定义的服务接口和对
XML、Web服务标准的支持,可以支持多种客户类型,包括PDA、手机等新型访问渠道。
4,更易维护
服务提供者和服务使用者的松散耦合关系及对开放标准的采用确保了该特性的实现。
5,更好的伸缩性
依靠服务设计、开发和部署所采用的架构模型实现伸缩性。服务提供者可以彼此独立调整,以满足服务需求。
6,更高的可用性
该特性在服务提供者和服务使用者的松散耦合关系上得以体现。使用者无须了解提供者的实现细节,这样服务提供者就可以在
WebLogic集群环境中灵活部署,使用者可以被转接到可用的例程上。
通过
SOA的描述我们可以了解到,SOA主要是为了将各个问题域及用户需求分解为一个个功能模块,并将各个功能模块分布到网络的各种服务器当中,利用统一的一种标准在各个模块间进行相互通讯,同时,在利用各模块进行二次开发后的系统也能够快速地进行扩展与变更,提高开发人员开发效率以及系统运行速度。
二、SOA架构与工作流引擎间的关系模型
通过工作流和
SOA的定义我们可以得知,工作流关心的主要是业务流程的运作以及业务整合应用,而SOA架构则是将各种业务以服务的方式提供给客户,客户按照一种标准化的访问方式来对其进行应用。工作流强调的是业务流程的整体化及自动化,SOA架构强调的是松耦合关系和开放式的模块化重组。
工作流技术更倾向于用户业务流程的映射、建模和管理。而
SOA架构则倾向于软件服务商及开发人员的开发、重用与维护。
那么为什么要将
SOA架构与工作流技术放到一起讨论呢?其实,我们完全可以利用SOA架构来实现工作流引擎技术,并将其应用到各个企业用户当中。因为SOA为我们的工作流引擎提供了任务目标的系统功能实现。我通过下图中的模型来思考了基于SOA架构的工作流引擎模型:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/ktcserver/22.jpg)
通过上图可以看到,
Workflow引擎通过SOA提供的功能即业务功能模块来进行业务流程处理,这样做的好处是利用SOA满足用户需求的不断膨胀所带来的功能变更或扩展。而利用Workflow来规范化系统业务流程,而当业务流程发生改变时,也能够通过Workflow引擎来实现变更。这种变更性我们可以通过下列图示得以体现:
![](https://p-blog.csdn.net/images/p_blog_csdn_net/ktcserver/23.jpg)
随着组合式应用(
composite application)的开发方式和观念的不断加强,必然带来的是快速开发与系统快速集成的企业化应用得以实现。通过Workflow与SOA架构的整合,必然使系统得以灵活地配合任务的调整,对各项以SOA架构服务方式提供的服务进行不同形式的串联和协作,同时快速地加以部署。