`
isiqi
  • 浏览: 16593950 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

OCL指南:业务规则

阅读更多
主题

解释 返回页首

业务规则是对如何操作业务(包括业务工具)的各种要求。它们可以是业务需要遵守的法律或规范,也可以表示选定的业务构架和风格。

正式等级 返回页首

必须严格、正式地表述业务规则,这样它们才能成为自动化的基础。作为一种备选的方法,可以使用统一建模语言中指定的对象约束语言 (OCL)。[RUM98]

示例:

您可能要表示对团队规模的某个限制,比如说,团队不能超过 10 个成员。使用 OCL,您可以将这个业务规则表示为一个不变量:

context Team inv:

self.numberOfMembers <= 10

但是,您必须知道一点,许多涉众可能不容易理解这种规范的语言,所以一种较自然的语言类型可能更适用。您可以确定一组保留表达式用于定义规则。这些表达式可以与 [ODL98] 中定义的相同:

  • IF
  • ONLY IF
  • WHEN
  • THEN
  • ELSE
  • IT MUST ALWAYS HOLD THAT
  • IS CORRECTLY COMPLETED

示例:

如果使用这种较自然的语言,上例中的规则表示为:

IT MUST ALWAYS HOLD THAT the number of team members is less or equal to 10(必须总是满足团队中成员的数目小于或等于 10)。

业务规则分类 返回页首

规则可以按多种方法进行分类,但我们常将它们分为约束规则和推导规则。[ODL98] 两类规则还可以进一步细分为以下类别:

  • 约束规则规定了限制对象结构和行为的策略和条件。
  • 激励和响应规则对某一行为进行约束,方法是通过指定何时触发该行为以及是否必须满足某些条件才能触发该行为。
  • 操作约束规则规定了在操作前后必须符合的条件,以确保操作正确执行。
  • 结构约束规则规定了有关类、对象和它们之间关系的不可违背的策略和条件。
  • 推导规则规定了从一些事实经过推理和计算得到其他事实的策略和条件。
  • 推论规则规定如果某些事实为真,则可以推出一个结论。
  • 计算规则通过处理运算法则(一种更精确完善的推论规则)得出结果。

应该把业务规则分类看作是对“业务规则是什么”、“如何找到业务规则”以及“如何使用业务规则”的解释,而没必要把它看作是工作中始终要参考的一个固定分类。所以,我们的业务规则工件模板并不显示这种分类 - 在您的项目中,很可能有其他分类方法(按域、按用户或者按产品组进行分类),这些分类方法可能更有价值。

如何在模型中反映业务规则 返回页首

业务规则会影响模型的外观。它还能影响在活动图中对活动进行排序的方法,甚至影响业务实体之间的关联关系。有些规则难以直接转换为图的形式,可能需要存在于模型元素的说明中。

不管怎样,使用文字注释表述业务规则并链接到图中适用相应规则的模型元素,这种做法十分有用。

激励和响应规则

这类业务规则影响业务用例的工作流程,而且可以被追踪到应用规则的业务用例。可以在工作流程中显示条件路径或备选路径。如果涉及的操作不太重要,则只需将对业务规则的考虑体现在活动状态中即可。

在业务对象模型中,此类规则可以影响您对业务实体生命周期的描述,也可以是对业务角色所进行操作的部分说明。

示例:

在订单管理组织中,可能会有以下规则:

WHEN an Order is cancelled

IF Order is not shipped

THEN close Order.

该业务规则通过在工作流程中显示两个备选路径来表示。具体说来,即使用转换的判定条件和警戒条件。

此例中的业务规则转化为一个通过工作流程的备选路径

操作约束规则

此类业务规则通常转化为工作流程的“前置条件”或“后置条件”,或者转化为工作流程中的条件路径或备选路径。它可以是要达到的性能目标或某个应该追踪到应用该规则的业务用例的其他非行为性规则。

示例:

在订单管理组织中,可能会有以下规则:

Ship Order to Customer

ONLY IF Customer has a shipping address.

业务规则转化为工作流程中的一个备选路径

示例:

以下是操作约束规则的另一个示例:

IT MUST ALWAYS HOLD THAT

All customer inquiries must be responded to within 24 hours of their receipt

此业务规则可以转化为业务用例的一个性能目标。请参见指南:业务用例中的“性能目标”部分。

结构约束规则

这类业务规则影响业务实体实例之间的关系。它们通过两个业务实体之间的关联关系表现出来;有时也表现为关联关系的多重性。

示例:

在订单管理组织中,可能会有以下规则:

IT MUST ALWAYS HOLD THAT

an Order refers to at least 1 Product.

此业务规则转化为一个多重性为 1..* 的关联关系。

推论规则

推论规则看上去常与激励和响应规则、操作约束规则或结构约束规则类似;不同之处在于,需要对其中的一些步骤进行思考才能得出结论。此规则为一种方法,需要在工作流程的活动状态中得以体现,最终在对业务角色或业务实体的操作中得以体现。

示例:

您可能已经建立了以下规则来确定客户的状态:

A Customer is a Good Customer IF AND ONLY IF

the unpaid invoices sent to this Customer are less than 30 days old.

该业务规则和工作流程中的一个备选路径相对应,指定的方法将是评估客户 (Evaluate Customer) 行为的一部分

计算规则

计算规则和推论规则有些类似,不同之处在于它更正式,而且看上去象一个运算法则。和推论规则一样,此方法也需要被追踪到工作流程中的一个活动,并且最终追踪到对业务角色或业务实体的一个操作。

示例:

计算规则可以规定值的计算:

The net price of a Product IS COMPUTED AS FOLLOWS

product price * (1+tax percentage/100).

在开具随货发出的发票时,计算净价是发货 (Ship Order) 活动的一部分内容。在业务对象模型中,规则转化为关联关系和操作。

规则在计算净价的操作中必须作为一种方法表示,同时也是表示模型中类之间关系的一种需要。

分享到:
评论

相关推荐

    OCL_sobel_descriptor

    "OCL_sobel_descriptor"是一个项目,利用OpenCV(OCV)库并结合OpenCL(OCL)技术,对图像进行Sobel算子特征提取。Sobel算子是一种常用的边缘检测算法,它通过计算图像像素的梯度强度和方向来检测图像的边缘。下面将...

    Object Constraint Language (OCL)_OCL语言

    它提供了一种表达复杂业务规则和技术约束的方式,这些规则和技术约束不能仅通过UML图来充分表达。 ##### 为什么选择OCL? 1. **提高模型的一致性与完整性**:UML图可以直观地表示系统结构和行为,但它们并不能表达...

    OCL:用于Rust的OpenCL

    在Rust项目中使用OCL,首先需要添加库依赖到`Cargo.toml`文件,然后通过`ocl::Platform`、`ocl::Device`、`ocl::Context`、`ocl::CommandQueue`和`ocl::Buffer`等结构体来管理OpenCL环境。开发者可以创建缓冲区,将...

    ocl.rar_ocl_oracle_oracle OCL_oracle OCL

    此外,OCL也可以在PL/SQL代码中引用,增强业务逻辑的规范性。 6. **学习路径**:掌握OCL技术,首先需要熟悉UML基础,然后深入学习OCL的语法和语义。实践是提升的关键,通过编写和测试OCL表达式,可以逐步提高对OCL...

    OCL语言说明

    2. **设计验证**:在设计阶段,OCL约束可以用来检查设计模型是否符合预期的业务规则。 3. **代码生成**:OCL表达式可以被编译成实际的源代码,用于实现业务逻辑。 4. **静态分析**:工具可以分析OCL约束,提前发现...

    OCL 官方正式文档

    标题“OCL 官方正式文档”和描述告诉我们本文档是关于对象约束语言(OCL)的官方正式文件,OCL是一种用来描述UML模型上表达式的正式语言。表达式通常指定系统建模时必须遵守的不变条件或对模型中描述的对象进行查询...

    对象约束语言(OCL)的简介

    OCL表达式通常用于定义对象的不变量、操作的前置和后置条件,以确保模型满足预定的业务规则和逻辑。 总之,OCL是UML建模中不可或缺的一部分,它提供了一种形式化的方法来描述模型的约束,从而增强了模型的准确性和...

    Object Constraint Language (OCL)规范

    OCL允许模型者在模型中明确指定业务规则、完整性约束、不变性条件等,确保了模型的正确性和一致性。 二、OCL的特点 OCL的主要特点包括: 1. **形式化表达**:OCL提供了一种形式化的语法来表达约束,这使得它能够...

    OTL,OCL,BTL电路的性能特点和差别

    OCL:无输出电容功放电路,优点是省去体积较大的输出电容,频率特性好,效率较高,缺点是需要双电源供电,对电源的要求稍高。 BTL:平衡桥式功放电路,由两个相同的OCL电路组成一个功率更大的功放电路,无论使用单...

    OCL功率放大器电路Multisim仿真实例

    OCL( Operational Class L)功率放大器是一种双电源、互补对称的电路设计,它具有无输出电容的特点,因此在音频应用中非常常见,能提供平坦的频率响应。本篇文章将详细探讨OCL功率放大器的工作原理、电路结构,并...

    OCL功率放大器电路电路multisim仿真源文件.zip

    1. **电路构建**:放置晶体管、电阻、电容、电源等元器件,按照OCL放大器的设计规则连接它们。 2. **参数设置**:为每个元器件设置合适的参数值,如晶体管的β值、电源电压等。 3. **仿真配置**:选择适当的仿真类型...

    oracle c++ 调用库 ocl 3.3 文档

    Oracle C++调用库(Oracle Call Interface, OCL)是Oracle数据库提供的一种API,用于C++程序员在C++应用程序中与Oracle数据库进行交互。OCL是Oracle OCI(Oracle Call Interface)的一部分,OCI是一个全面的、低级的接口...

    OCL功率放大器报告.pdf

    OCL功率放大器以其高效、低失真的特点,在音频放大器领域占据了重要地位。本报告详细介绍了OCL功率放大器的设计过程、电路构成以及实际应用,旨在提供一种实用的音频功率放大器设计方案。 首先,报告对音频功率放大...

    ocl-examples:使用OCL的(玩具)示例的集合

    ocl-examples (玩具)示例的集合,这些示例演示了在UML和SecureUML模型的上下文中使用OCL。 大多数模型是在HOL-OCL和SecureUML项目的背景下开发的。楷模使用ControllerUML的简单日历/会议模型。 一种简单的日历/...

    OCL的教程(对象约束语言)

    OCL提供了一种精确且无歧义的语言结构,使得建模者可以清晰地表述模型中的业务规则和逻辑,而不涉及具体的实现细节。以下是OCL的一些关键特性、表达式及应用场景的详细解释: 1. **精确性与无二义性**:OCL设计的...

    OCL Specification v2.4.pdf

    This clause introduces the Object Constraint Language (OCL), a formal language used to describe expressions on UML models. These expressions typically specify invariant conditions that must hold for...

    react-ocl:集成OpenChemLib的React组件

    该库提供了三个版本,例如openchemlib: react-ocl/minimal (也可以作为react-ocl ), react-ocl/core和react-ocl/full 。 如果仅使用SvgRenderer组件,则可以选择任何版本,最小版本为最小版本。 如果要使用...

    基于OCL文法的测试用例自动生成方法研究

    ### 基于OCL文法的测试用例自动生成方法研究 #### 一、引言 随着软件行业的快速发展,软件测试技术也在不断进步。在软件开发生命周期中,测试阶段的成本占据了相当大的比例(大约40%-50%)。为了提高测试效率并...

    ocl资源文件dll

    标题中的"ocl资源文件dll"指的是Oracle Call Interface (OCI) 的动态链接库文件"ocl.dll"。这个文件是Oracle数据库客户端的重要组成部分,主要用于在非Oracle环境下调用Oracle数据库的功能。当你遇到“Navicat is ...

Global site tag (gtag.js) - Google Analytics