您的位置: 德州资讯网 > 科技

解读:如何在SOA中实现业务规则和业务流程

发布时间:2019-10-09 17:07:34

使用面向服务的体系结架构(SOA)的其中一大动力在于提升企业的敏捷度,并将不可避免的改变所带来的影响减到最小。这一般通过把经常改变和相当稳定的实现工件进行分离来完成。支持这种分离的常用方法是分解(decomposition)和封装(encapsulation)。SOA的分解导致服务的定义代表更稳定的工件,而业务流程则代表更经常变化的工件。在一个典型的SOA实现中,服务不会经常改变,但是非常经常地被组合和重组来构建/修改企业的解决方案。

这种分解不会直接标明业务规则的位置——整体IT实现中另一个频繁改变组件。由于业务规则可能相当经常地改变的事实,其中一种被广泛采用的实践是将它们与业务流程关联起来——更加频繁地变化的SOA组件。这种方法的普及又得到了“许多实践者将业务规则当作更广义的业务流程管理(BMP)的一部分”这一事实的支持,往往把业务规则和业务流程捆绑在一起。结果,许多人把业务规则引擎和业务流程引擎当作业务流程/业务规则实现的两种相互竞争的技术。这是由于下列几种普遍的误解:

业务规则和业务流程有着相同的设计模型和实现模型

业务规则和业务流程提供相同的工件,并且能以同样的方式使用。在本文中,我们将概括业务规则和业务流程之间的相同点和不同点,并介绍关于在SOA实现中配置业务规则的一些指导方针,以及每种技术的适当用法。

业务规则

“业务规则描述在实现一个组织的目标时所应用到的操作、定义和约束。这些规则用来帮助组织去更好地达成目标,在委托方和代理方内部进行更好的沟通,以及在组织和有兴趣的第三方之间的更好沟通,更好地示范了法定义务的履行,操作更有效率,操作更好地自动化,在当前的实践中更好地执行分析,等等”。业务规则可以被看作是业务实践的一个集合,定义实际的实现——业务逻辑。这种逻辑的实现经常可以通过使用专门的工具进行简化——业务规则语言和业务规则引擎。

规则语言是一种特定于领域的语言,包含定义业务规则的构造。这些构造可以根据业务需求而大相径庭。从文本描述(使用一种特定于规则的语言或者简单英语),到决策表或者决策树的使用,都有可能。在有些情况下,也可能以图形的形式确定使用规则流的那些业务规则的执行顺序。最后一种经常是导致业务流程和业务规则之间产生混淆的原因。虽然它们看起来类似,但是业务流程流定义的是可以跨许多不同且异构系统的服务的执行顺序。另一方面,业务规则流则受限于规则执行顺序的编制(orchestration)。

特定于领域的编程语言

“特定于领域的编程语言(DSL)是一种对特定的任务组特别有用的编程语言。这是相对于通用编程语言(GPL)如C、Java、C#等等而言的3。DSL一般专门针对特定的问题领域进行量身定做。因而它能精确地捕捉领域的语义。为了进一步简化它们的用法,DSL一般是高度声明式的,并描述需要发生什么,而不是如何完成(后者是语言实现者的责任)。由于这一点,DSL经常被当作(可执行的)规范,而不是编程语言。

特定的DSL的主要优点在于特定于领域的抽象和符号,以及有限制(或者相当集中)的表达功能。对于应用程序的有些类而言,使得DSL比GPL更具吸引力的原因有几个:

·更容易编程

因为它使用了一个更高级别的抽象,与问题领域密切结合,定义要实现的内容,而不是如何实现,相比于GPL实现,DSL程序一般来说更加精确(由于它与领域的密切结合),并且更容易实现和理解(不仅对于开发人员,对于领域专家们也是如此)。这一般会致使缩短开发时间,减少昂贵的维护成本。此外,DSL还有高级的数据处理(debagging)支持,允许直接在领域概念级别上分析和调试代码。

淮北治疗卵巢炎方法
盘锦治疗阴道炎费用
玉林白癜风
淮北治疗卵巢炎费用
盘锦治疗阴道炎医院
猜你会喜欢的
猜你会喜欢的