Dialog中的变量和输入参数

在以前的博客Dialog Part 1和Dialog Part 2中,我们讲述了Microsoft Dynamics CRM 2011中的新功能Dialog。Dialog支持变量(Variables)和输入参数(Input Arguments)。在这篇博客中,我将介绍他们是什么,如何使用它们。Dialog编辑器中有一个区域可以定义变量和输入参数,如下图所示:    图1:变量和输入参数区域   什么是变量?  变量被用来在Dialog运行时提供临时数据存储。你可以在图1中的变量区域点击Add来创建一个新的变量。每个变量都有名称、类型和值。当创建一个变量时,你按照下图来填入相应值。在这里,我们创建了一个变量叫做CustomerName, 类型是单行文本,默认值为John Doe。默认值是这个变量最初的值。       图2:创建新变量   什么是输入参数? 输入参数和子Dialog(Child Dialog)一起使用。当你希望从一个Dialog转向控制另一个Dialog,这时就可以使用子Dialog。之前运行的Dialog叫做父Dialog(Parent Dialog),得到控制的Dialog叫做子Dialog。考虑这样一种情况,你希望创建多个Dialog,他们的最后几步都是相同的。这时,最好为这些相同步骤创建一个单独的子Dialog。这样,如果你要修改这些相同的步骤,就不必去修改多个Dialog。你只需要修改这个子Dialog而不需要修改父Dialog。在父子Dialog之间传递控制时,可能需要传递数据,这就是通过输入参数来实现的。在创建Dialog时,你可以在Available to run区域中来指定这是一个子Dialog,如图1所示:  ·         勾选As a child process ·         去掉As an on-demand process 这样,你就可以创建输入参数来指定希望从父Dialog得到什么数据。可以点击图1中Input Arguments section的区域的Add链接来创建输入参数。跟变量一样,输入参数也有名称、类型和值。配置输入参数属性的用户界面和创建变量的界面很相似。对于输入参数来说,当父Dialog没有指定任何值时,子Dialog就会使用默认值。   在创建父Dialog时,你需要将它连接到子Dialog。你可以在编辑器中点击Link Child Dialog步骤来实现。你可以查找到子Dialog进行链接,如图3所示:    图3:链接到子Dialog   当然,你可以点击Set Properties按钮来设置链接的属性(图3所示)。在设置属性UI中,你可以为每个输入参数设置一个值。你也可以使用动态值,例如一个变量或者dialog运行在的CRM记录的一个属性。唯一需要注意的是,两种数据类型必须相同(或者能够转换)。图4是链接属性的一个截图。在这里输入参数Name(显示为String_Name)是从当前account所关联的Primary contact的Full Name属性传递来,输入参数Age是从用户对于Request for age的输入传递来,输入参数DiscountRate是从父dialog中定义的变量DiscountRate的值传递而来。    图4:设置子dialog的属性  …