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的属性
其他注意事项
除了使用目的,变量和输入参数还有一些共通的特性。这一小节,我将介绍一些他们之间共通的特性。之前曾提到过,每一个变量/输入参数都有名称、类型和值。
· 名称:在一个dialog中,一个变量的名称必须是唯一的。而且,名称不能设为变量或者输入参数。名称的长度限制在1000个字符以内,仅能包括字母、数字或下划线“_”。
· 类型:变量和输入参数支持三种类型:单行文本、整数和浮点数。整数支持的范围为2,147,483,648 至 2,147,483,647;浮点数支持的范围为-100,000,000,000 至 100,000,000,000。
· 值:创建变量时,你可以给它设置一个默认值。你可以将其值更改为一些操作的结果,例如Append With (若变量的类型为单行文本),或者更改为运行dialog的用户所输入的值。你可以在需要赋值的时候使用/引用变量的值:创建/更新记录或显示提示信息。当给变量或输入参数赋值时,其数据类型必须和变量或输入参数的数据类型兼容。下表列出了可能的组合:
变量或输入参数的类型 |
所赋值的类型 |
Single Line of Text |
Single Line of Text, Whole Number, and Floating Point Number |
Whole Number |
Whole Number, and Floating Point Number (after rounding) |
Floating Point Number |
Whole Number, and Floating Point Number |
· 在创建dialog时,在删除变量或输入参数时要注意,如果它们被一些其他步骤所引用(如Prompt and Response步骤),那么这些步骤会失效(disabled)。 因此,建议在删除变量/输入参数之前移除这些引用关系。
· 一旦创建了变量或输入参数,他们的类型就不能被改变。
· 链接到子dialog的步骤必须是父dialog中的最后一步。Link child dialog步骤会将控制传递给子dialog。在运行父dialog时,一旦控制传递给了子dialog,就无法回到父dialog中之前的步骤了。
· 使用数字类型的变量和输入参数时没有溢出保护。需要再创建dialog时候注意这点。
· 如果在父dialog发布以后更改了子dialog中的输入参数, 那么父dialog不会自动更新。这可能会导致运行父dialog时出现错误。
谢谢!
Jackie Chen
https://blogs.msdn.com/b/crm/archive/2011/02/15/dialogs-using-variables-and-input-arguments.aspx