IBM WebSphere Business Modeler(以下称为 Modeler)是用于创建流程模型的强大工具。您可以使用它来对业务流程进行文档记录或模拟,以及执行分析以支持流程改进。可以将业务模型导出到 WebSphere Process Server 和其他 IBM 运行时环境。
作为使用 Modeler 已有很长时间的人,我在电子邮件中收到了有关 Modeler 某些方面的问题。随着时间推移,我注意到其中许多问题是重复的。在本文中,我将回答所收到的十个最常见问题。如果您是 Modeler 新手,本文将回答一些在您开始起步时可能遇到的问题。如果您拥有丰富的 Modeler 经验,通过了解自己在不加思索的情况下知道多少答案,您可以对自己的知识进行检验。
并非所有流程都从单个点开始。取决于业务逻辑,流程可能从不同的点开始。其他流程也许有多种可能触发流程运行的渠道。要对类似如此的流程进行模拟,将需要简单线性流程所不需要的两个额外步骤。图 1 显示了一个示例流程,此流程有一个针对纸质请求的输入,以及另一个针对 Web 请求的输入。
在此流程中,如果到达纸质形式的请求,角色为“接收”的人员需要将表单中的数据输入系统。如果请求从 Web 到达,则会有一个自动程序执行同样的工作。然后请求继续到下一个步骤,该步骤由“处理”角色执行,然后流程结束。只有在工作日的白班才有人力资源可用。
如果尝试对每个输入总共使用 10 个令牌来模拟此流程,模拟似乎可以工作。但是,统计数据仅显示了该流程的 10 个实例的结果,而不是您预期的 20 个实例。您还将看到一条错误消息,它表明模拟已结束,但是并非所有任务都已成功完成。怎么回事呢?
流程具有输入逻辑,在中级模式或高级模式下可以看到这一点。输入逻辑用于确定流程如何开始。缺省情况下,当流程有多个输入时,将对输入执行 AND 操作。必须完成以下步骤将此操作更改为 OR,才能正确模拟流程:
- 切换到中级模式或高级模式。
- 在 Attributes 选项卡上,单击 Input Logic 选项卡,如图 2 所示。当前条件为 Input AND Input:2。
图 2. 设置输入逻辑 - 为了将 AND 更改为 OR,每个输入需要在该列表中具有自己的条目。单击 Add。向输入逻辑添加第二个名为 Input Criterion:2 的行。
- 取消选中 Input Criterion 行中的 Input:2,然后选中 Input Criterion:2 行中的 Input:2。该输入逻辑现在应该类似如图 3 所示。这表示在该模型中,流程可以从 Input Criterion 或 Input Criterion:2 开始。
图 3. 更新后的输入逻辑 - 严格地讲,流程不需要开始节点即可进行模拟。如果您的确选择使用开始节点,则流程中的每个输入都需要一个对应的开始节点。
请确保处于中级模式或高级模式,然后单击某个开始节点。
- 在 Attributes 选项卡上,选择对应于该开始节点的输入,如图 4 所示。
- 对流程中的所有开始节点重复此步骤。
图 4. 开始节点设置
如果流程具有多个输出,但是每次仅使用其中一个输出,您将面对类似的问题。缺省行为是对两个输出条件执行 AND 操作。为了使模拟能够正常工作,您需要执行以下操作步骤:
- 在 Output Logic 选项卡上,确保在每一行上选择一个输出条件,以便执行 OR 操作。
- 对于每个停止节点,将该停止节点与相应的输出标准相关联。与开始节点不同,停止节点是必需的。
现在您可以对具有多个输入和输出的流程进行模拟了。
您是否创建了这样的模型,您最终在诸如决策和合并等网关构造上获得额外的输入和输出?图 5 显示了在两个分支上都具有额外输入并具有两个额外输出的示例。对于具有许多路径的较大模型,拥有许多额外的输入和输出不仅占据空间,而且会在模拟和导出模型时导致问题。
结果证明,罪魁祸首经常是业务项与基本模式的组合。为了尽量简化您的工作,基本模式有时自动执行在其他模式下不会执行的操作。有时,这对您非常有用,但在此情况下,基本模式的行为可能不是您所希望的。下面让我们通过一个示例了解此模式的行为:
- 首先从三个将合并在一起的任务开始。请确保处于基本模式。将第一个任务连接到合并,然后将一个业务项添加到新的连接,如图 6 所示。
图 6. 基本模式下的建模 - 将 Task:2 连接到合并。
- 该合并的中间部分现在有一个额外的输入,如图 7 所示。
图 7. 已添加的连接
为什么会发生这种情况呢?基本模式在此情况下做出了不利于我们的假设。
- 当您将业务项 RequestData 添加到从 Task 到合并的链接时,合并上的每个输入都设置为需要一个带 RequestData 的输入。
- 当您将 Task:2 添加到合并时,链接上没有数据。
- 基本模式判断您一定会在合并上需要一个输入。
如果将 RequestData 业务项添加到您刚才添加的新链接,则会看到一个弹出菜单,要求您选择源输出和目标输入,如图 8 所示。您现在可以选择要在合并中使用哪一个输入:没有关联业务项的当前输出或带有 RequestData 的现有输入。您通常希望的是第二个选择。但是,缺省值是使用没有关联业务项的输入。
当您使用中级或更高级模式时,Modeler 的行为稍微有所不同。与假设您要做什么不同,这些模式为您提供了直接的控制。下面让我们看看这些模式是如何工作的:
- 撤消先前的步骤,直到流程重新类似如图 6 所示。
- 切换到中级模式或高级模式。关系图将更改为显示输入和输出。
- 创建从 Task:2 到合并的第二个输入中间的连接,如图 9 中的红色圆圈所示。这样将会创建该连接、关联业务项 RequestData,并且没有向合并添加额外的输入。
图 9. 中级模式下的建模 - 创建从 Task:3 到底部输入的连接。这次连接到输入的底部,如图 9 中的蓝色椭圆所示。这样将创建没有关联业务项的连接,并创建一个额外的输入。
- 图 10 显示了添加连接后的流程。
图 10.添加连接后的流程
可以看到,使用中级模式或更高级模式时,您可以控制行为,而不是让 Modeler 假设您希望做什么。仅当您需要的时候才会创建额外的输入。
第 8 个问题:Modeler XML 导入和导出是如何工作的?
第一次设置建模项目时,一个常见要求是使用可能已存在于组织中的信息填充目录,而不是必须手动输入所有信息。输入菜单上的选项之一是 WebSphere Business Modeler XML。那么任何 XML 是如何工作的呢?相关局限性是什么?如何开始起步呢?
结果表明,Modeler 包括了两个示例 XML 文件以帮助您开始起步。您可以在 [Modeler install directory]\samples\xml 找到这些文件。您将看到两个文件:types.xsd 和 wbimodeler.xsd。XSD 文件为 XML 模式定义 (XML Schema Definition)。这些文件指定应该如何对文件进行格式设置。但是,如果您不是 XML 专家,仔细查看 XSD 可能有点令人畏惧。
与研究模式不同,了解 Modeler XML 的更容易方法是从简单的导出开始。假设您希望导入有关组织中角色的信息。可以通过定义角色开始:
- 创建名为 Data Processing 的角色。添加任何可能需要的属性,例如成本和可用性。
- 保存新角色。
- 在项目树中,右键单击该角色并选择 Export。
- 单击 Next。
- 选择您希望将文件导出到的目录。确认仅选择了 Data Processing 角色,然后单击 Finish。
- 这将创建一个与建模项目具有相同名称的文件,如清单 1 所示。
<?xml version="1.0" encoding="UTF-8"?> 18.0 |
此清单表明了 XML 所需具备的大致情况。可以使用此 XML 作为您希望添加到模型的其他角色的模板。要测试此功能,请执行以下步骤:
- 使用文本编辑器打开该 XML 文件。
- 将角色名称从 Data Processing 更改为 Quality Control。
- 将 costValue 从 18.0 更改为 22.5。
- 保存更改。
- 在 Modeler 中,右键单击您的建模项目,并选择 Import。
- 选择 WebSphere Business Modeler XML,然后单击 Next。
- 浏览以查找您的源目录,然后从列表中选择您的文件。确保选择您的项目作为目标,然后单击 Finish。
- 在 Resources 文件夹中,您应该看到角色 Quality Control,其成本定义为每小时 22.5 美元。
Modeler V6.1.2 还可以从电子表格进行导入。您也应该考虑此选项,以便将现有数据引入建模项目。
业务流程通常可以分解为子流程。Modeler 调用这些局部流程,并允许您展开它们以定义详细信息。局部流程可能包含另一个局部流程,以此类推,直到到达任何数量的级别。在 Modeler 中还可以展开循环。图 11 显示了分解为三个局部流程的流程示例。
通常,您希望创建流程的打印输出。理想的情况是使用 WebSphere Business Modeler Publishing Server 消除纸质输出,但有些时候您可能仍然需要硬拷贝。图 11 的打印输出仅显示了高级视图。您可以展开到每个局部流程,并将其也打印出来,但是这样将会失去高级视图。如何创建同时显示高级视图和每个局部流程中的详细信息的打印输出呢?
创建同时带有高级和详细视图的打印输出的诀窍是创建模拟快照。为此,请完成以下操作步骤:
- 在项目树中右键单击您的流程,并选择 Simulate。模拟随即打开。
- 在模拟图的空白中单击鼠标右键,选择 Expand All。所有级别的流程将展开以向您显示其中的详细信息,如图 12 所示。
- 在模拟图的空白中单击鼠标右键并选择 Print。
图 12. 展开的流程部分屏幕
此视图在模拟视图中可用,以便您在打开动画时能看到流程中的所有任务。结果表明,当您希望打印输出展开了所有容器活动的流程时,该视图也是非常有用的。
注意:Modeler V6.2 可以就地展开循环和局部流程,从而消除了使用此诀窍的需要。
在创建流程的初始模型时,用户通常单击面板中的任务图标,然后在流程图单击以添加任务。然后他们再次单击任务图标,并再次在流程图中单击。然后是一次又一次的重复。问题是:如何能够将多个任务(或其他构造)添加到模型,而不必每次使用两次单击呢?
答案非常简单:使用 Shift 键。
- 单击面板上的任务图标。将鼠标指针移到流程图之上。指针更改为添加图标。
- 按下 Shift 键。
- 单击以将任务放到流程图中。这样就添加了一个任务。
- 移动鼠标并单击流程图中的其他某个地方。这样就添加了另一个任务。
只要您按住 Shift 键,就可以不断将更多任务添加到模型中。当您完成时,释放 Shift 键,鼠标将返回到正常指针状态。
第 5 个问题:如何导出到 Rational Software Architect?
创建业务模型以后,您可能发现了某个需要创建的候选可重用服务。Rational® Software Architect(以下称为 Software Architect)是 IBM® 用于在设计阶段中进行 UML2 建模的工具。它基于 UML2 模型生成代码框架,然后可在 Rational Application Developer 中对该框架进行编码和测试。业务模型中的元素转换为 UML 模型的元素。例如,业务模型变为业务用例。角色变为业务参与者或者拥有某个界面的业务工作者。业务项变为业务实体,等等。问题是:Export 菜单上没有针对 Rational Software Architect 的选项,那么如何导出到 Rational Software Architect 呢?
第 5 个问题是个伪问题——您不需要导出到 Software Architect!相反,Software Architect 直接读取 Modeler 工作区。一旦将 Software Architect 指向 Modeler 工作区,就可以将业务模型中的元素拖放到 UML2 模型中。不需要导出。
注意:如果将 Software Architect 安装在不同的计算机上,您可以使用诸如 Rational Clear Case 之类的源代码控制存储库存储 Modeler 中的项目,然后从 Rational Software Architect 访问该存储库。
与流程图相比,业务模型的优点之一在于模型包含元数据以及可视化的表示形式。有时,将其他文档与模型包括在一起会非常有用。问题是:如何能够将现有文件附加到模型呢?
您可以使用流程的 Specification 选项卡添加文件附件,如图 13 所示。可以通过单击 Add 添加一个或多个附件。然后该文件将与模型包括在一起,甚至可以在将模型发布到 WebSphere Business Modeler Publishing Server 以后查看该文件。附件是在流程级别添加的;您不能将文件附加到诸如角色和业务项等其他构造。
第 3 个问题:如何导入 WSDL 以便在导出到 WebSphere Integration Developer 时能够工作?
可以使用 Import 菜单将 Web 服务描述语言(Web Services Definition Language,WSDL)文件导入 Modeler。如果您使用 WebSphere Service Registry and Repository,则还可以通过执行业务服务搜索导入服务。在任一种情况下,都会使用导入的服务填充业务服务目录,并且相关的 XSD 进入业务服务对象目录中。如果希望使用业务服务,您可以在多个级别将业务服务拖放到业务模型中。为了使导入的业务服务在导出到 Integration Developer 以后能够正常工作,导入业务服务的正确方法是什么呢?
答案在于,您需要拖放的内容是业务服务的操作,而不是 WSDL 文件本身。为此,请完成以下操作步骤:
- 右键单击您的 Modeler 项目并选择 Import。
- 选择 Business services and service objects (.wsdl, .xsd),然后单击 Next。
- 单击 Browse,并导航到 .wsdl 文件所在的目录。选择该目录,您将立即看到其中包含的所有 .wsdl 和 .xsd 文件的列表。单击您希望导入的文件所对应的复选框,然后单击 Finish。
- 文件将导入您的建模项目。
图 14 显示了导入的服务的一个示例。在此例中,ABCBankServices 文件夹表示 WSDL 文件本身。ABCBank 文件夹表示 WSDL 端口,而 checkCompanyCredit 和 checkCompanyHealth 则是操作。CompanyInfo 是该 WSDL 文件引用的外部 XSD。
图 14. 导入的业务服务
对于此示例,您将把其中一个操作 checkCompanyCredit 或 checkCompanyHealth 拖放到流程中,以表示所调用的业务服务。将流程导出到 Integration Developer 时,WSDL 和 XSD 将包括在导出中。业务服务将变成 BPEL 调用。在 SCA 关系图中,调用的引用连接到带有 Web 服务绑定的导入。
注意:并非所有 WSDL 均受支持,但是此过程适用于许多 WSDL。
在打开动画的情况下执行模拟时,通常的行为如下:
- 某个令牌到达某个任务。
- 活动任务实例的数量(模拟处于活动状态时任务上面的框中的数字)增加。
- 当任务完成时,随着令牌流出并继续到达下一个步骤,活动任务实例数量减少。
麻烦在于,如果您的资源数量有限,则有些活动实例正在进行处理,而有些则正在等待资源被释放。问题是:如何对模型进行设置,以便能够看到排入队列中正在等待资源的工作?
图 15 显示了一个具有两个步骤的简单流程的示例。两个步骤使用不同的角色,每个角色在资源池中设置为 2。Step 1 上面的数字表明存在三个活动的实例。但是,其中一个实例正在等待某个资源。没有办法看到哪些实例是活动的,以及哪些实例正在等待。
答案是使用最大同时任务数量设置。通过控制此参数,您可以告诉模拟引擎一次只能激活特定数量的任务。任何传入令牌将必须在前面排队等待,并等待各自的机会。要设置此参数,请执行以下步骤:
- 在模拟快照中,单击 Step 1。
- 在 Attributes 视图的 General 选项卡上,将最大同时任务数量设置为 2。缺省设置 0 表示无限数量。
- 对 Step 2 重复此操作。
- 保存更改,然后从模拟控制面板启动模拟。
图 16. 最大同时任务数量设置为 2 的模拟
图 16 显示了将两个任务的最大同时任务数量均设置为 2 的相同模拟。Step 1 的两个实例是活动的,其他传入令牌必须在该任务前面的队列中等待。随着队列的增大,将以图形和数字的方式显示队列深度。如果队列中的令牌超过 20 个,颜色将变为红色以指示重大的任务积压。
通过设置最大同时任务数量,您能够可视化地看到您的任务所积压的工作。
图 17 显示了一个简单流程的示例。创建模型以后,如果您决定模拟该流程,则会遇到一个问题:如何运行多个模拟呢?如果从控制面板启动模拟,则只有一个令牌将流经该流程。这不足以了解工作积压位置、流程案例和其他重要信息以便分析。问题是:如何启用多个模拟运行呢?
答案在于,为了运行多个模拟,需要有某个内容流入流程的第一个任务。图 15 显示了一个类似的流程,该流程有一个流向 Step 1 的输入。要创建此输入,请执行以下操作:
- 在流程编辑器中,将鼠标指针移到流程的最左侧边缘,直到指针更改为指示您正在添加连接的图标。单击以开始该连接,然后将指针移到 Step 1 并再次单击。
- 这样将创建从流程边缘到 Step 1 的连接。缺省情况下,将向连接添加 Text 类型的业务项以指示数据流。
- 或者,可以将某个业务项拖放到新连接上,以将 Text 替换为更有意义的内容。
- 在流程树中右键单击该流程,并选择 Simulate。在 Add Elements 窗口中单击 OK 以继续。
- 在模拟 Attributes 视图中,选择 Inputs 选项卡。单击 Input 以选择它,如图 18 所示。
图 18. 模拟输入属性 - 单击 Edit 以设置令牌总数。每个令牌表示该流程的一个输入。如果到达的流程输入大小不为 1,则单击 Edit 以设置每个包的令牌数量。令牌包表示一批同时到达的工作。或者,如果流程的每个输入具有关联的成本,可以单击 Edit 以选择每个令牌的一次性成本。
- 令牌可由时间触发器创建,这是缺省设置。您可以设置令牌之间的时间间隔,或者使用缺省的一分钟间隔。
- 如果令牌之间的时间不同,您可以使用随机时间触发器,并使用某个分布来改变时间。
- 如果令牌之间的时间间隔在一天的不同时间是不同的,您可以使用时间表触发器。可以将一天划分为多个区间,每个区间具有不同的令牌创建频率。
- 单击 Save 以保存更新。
当您从控制面板启动模拟时,现在将会运行流程的多个实例。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14789789/viewspace-582732/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14789789/viewspace-582732/