zoukankan      html  css  js  c++  java
  • 工作流数据模式-传递模式7种

    版权声明:工作流模式版权归 Workflow Patterns 组 织 ( http://www.workflowpatterns.com ) 所 有 。 经 Workflow Patterns授权,中文简体版由辛鹏和荣浩翻译。未经译者书面许可,不得将该中文简体版用于商业目的。

    数据传递模式共有7种,讨论数据在工作流系统各组件以及外部环境之间的传递方式。

    1. 通过传值传入数据:当流程组件之间不共享一个通用的数据存储仓库时,我们通过传值传入数据。
    2. 通过传值传出数据:当流程组件之间不共享一个通用的数据存储仓库时,我们通过传值传出数据。
    3. 复制传入/传回数据:为了使流程组件能够各自独立的使用数据,我们通过复制传入/传回数据传递数据。
    4. 通过传引用传递数据——不加锁:当流程组件共享一个通用的数据存储仓库时,我们通过传引用直接使用数据。
    5. 通过传引用传递数据——加锁:当通过传引用传递数据时,我们通过加锁来避免并发的读写冲突。
    6. 转换传入数据:当传递的数据与目标数据类型不一致时,我们应用数据转换函数对传入数据进行转换。
    7. 转换传出数据:当传递的数据与目标数据类型不一致时,我们应用数据转换函数对传出数据进行转换。

    图C-45 工作流数据传递模式

    通过传值传入数据(WDP_27: Data Transfer by Value - Incoming)

    描述

    流程组件能够通过传值接受传入数据。

    图C-46 通过传值传递数据

    应用

    在流程组件不共享一个通用的数据存储仓库时传递数据。

    通过传值传出数据(WDP_28: Data Transfer by Value - Outgoing)

    描述

    流程组件能够通过传值传出数据,如图C-46所示。

    复制传入/传回数据(WDP_29: Data Transfer – Copy In/Copy Out)

    描述

    流程组件能够在开始执行时从外部资源(包括工作流系统内部的数据,也包括外部环境的数 据)复制数据,并在执行结束时将数据传回。

    图C-47 复制传入、传回数据

    应用

    父子流程实例之间的数据传递以及给多实例活动传递数据。

    通过传引用传递数据——不加锁(WDP_30: Data Transfer by Reference - Unlocked)

    描述

    流程组件之间能够通过传递数据的引用实现数据传递,该数据处于这些流程组件都能访问的 位置。对数据没有并发读写控制。

    应用

    图C-48 通过传引用传递数据

    当流程组件共享一个通用的数据存储仓库时,不显式的传递数据。

    该模式是应用最为广泛的数据传递模式,因为它足够简单。如图C-49所示,通过唯一的变量 名直接使用数据。

    图C-49 通过唯一变量名直接使用数据

    该模式最大的问题正如它的名字:不加锁。因为数据没有并发的读写控制,所以如果存在多个执行中的活动实例同时修改同一数据或者读写同时发生时,就会产生冲突。

    通过传引用传递数据——加锁(WDP_31: Data Transfer by Reference – With Lock)

    描述

    流程组件之间能够通过传递数据的引用实现数据传递,该数据处于这些流程组件都能访问的 位置。为了避免读写冲突,通过读写锁对这些数据进行并发读写控制。

    应用

    当通过传引用传递数据时,避免并发的数据读写冲突。活动实例在使用数据时,我们对变量进行加锁。如果是只读,我们加读锁;如果是写,我们 加写锁。我们在进行活动定义时在活动节点上声明活动对该变量是只读还是写。

    图C-50 使用写锁控制活动的触发

    图C-51 使用读锁控制活动的触发

    转换传入数据(WDP_32: Data Transformation - Input)

    描述

    在将数据传递给流程组件前能够应用转换函数对数据进行转换。

    图C-52 转换传入数据

    应用

    当传递的数据与目标数据类型不一致时,对数据进行转换。

    转换传出数据(WDP_33: Data Transformation - Output) 描述

    在将数据从流程组件传出前能够应用转换函数对数据进行转换。

    图C-53 转换传出数据

    应用

    当传递的数据与目标数据类型不一致时,对数据进行转换。

    本文来源:http://www.cnblogs.com/x3d/,转载请注明。
  • 相关阅读:
    TCP/IP协议三次握手流程
    MySQL 单向同步复制
    源码编译安装MySQL(rhel6.5)
    Android Studio编译输出apk文件修改文件名
    Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
    android通知栏Notification点击,取消,清除响应事件
    Android平板上开发应用的一点心得——精确适配不同的dpi和屏幕尺寸
    Android SharePreference 在主进程和次进程间共享数据不同步出错
    Android API 21 Toolbar Padding
    Android Studio UML 插件 PlantUML 使用语法
  • 原文地址:https://www.cnblogs.com/x3d/p/15451108.html
Copyright © 2011-2022 走看看