Microsoft Dynamics CRM 2011 中的Dialog-Part 1
Dialog(对话)是Microsoft CRM 2011建立在Windows Workflow Foundation 4之上的一个全新的功能。在我们深入讨论Dialog的强大功能前,我们需要知道在Microsoft CRM 2011中,Workflows(工作流)和Dialogs统称为Processes(过程)。简单来讲,在Microsoft CRM 2011中,Workflows和Dialogs都是具有由创建者定义的一系列操作的process。Workflow是在后台运行的process,用来完成创建者定义的一些任务;而Dialog是一个前端的,和用户有交互界面的process,它可以接受用户输入然后同步地处理创建者定义的任务。跟workflow一样,dialog也是基于Windows Workflow Foundation,能够通过添加新的.Net 4.0支持的Custom Workflow Activities来进行扩展。
你能用Dialog来做什么?
Dialog是一个前端的按需触发的process,它通过一个美观的界面向运行它的用户提供弹出框和提示语,接受用户输入来执行后端预先定义的任务。它有很多功能,一些是新功能,一些是从CRM 已有的workflow中借用的。下面是Dialog的功能列表。
1. 提出一些问题,收集客户的答案。你可以使用“Prompt and Response” 步骤来实现这个功能。你能够通过以下方式获取答案:文本框(多行、单行),选择集(单选按钮、下拉菜单)。答案可以有三种类型:整数、小数和文本。一个页面上可以有一个或多个“Prompt and Response” 步骤提供给客户。
2. 你可以创建一个静态页面链接,这个链接可以单独出现在Dialog页面上,也可以嵌入在一些“Prompt and Response”文本中。定义网页链接的选项在“Prompt and Response”编辑页面上。
3. 你可以使用CRM 查询(类似于Advance Find查询)来核实或呈现客户的数据。查询可以带有参数,你可以将客户输入的答案作为参数。使用Dialog编辑页面的“Query CRM Data” 步骤可以实现这些功能。
4. 你可以在Dialog中定义变量和公式。通过使用“Variable” 或 “Input Arguments” 和 “Assign Value” 步骤来实现。
5. 你可以使用“Link Child Dialog”或 “Start Child Workflow”来将一些任务委任给其他Dialog或Workflow中定义的一系列操作。子Dialog是一个基于UI的前端process,它会从父Dialog接过控制;而子Workflow将会异步地执行任务,父Dialog 会继续运行。
6. 跟Workflow类似,Dialog能够使用这些步骤来进行条件判断:“Check Condition” (if <condition is true> then <take following actions>), “Conditional Branch” (if <condition 1 is true> then <take following actions> else-if <condition 2 is true> then < take following actions >), 和 “Default Action” (if <condition is true> then <take following actions> else <take following actions>) 步骤。
7. 在上述条件判断中,执行一系列所定义操作后,Dialog创建者不希望继续执行条件判断后的操作,这时可以使用“Stop Dialog”来终止Dialog。如果不使用“Stop Dialog”,条件判断后的操作将在其中一个条件判断(Check Condition or Conditional Branch or Default Action)后继续执行。
8. 一些用Workflow中借用的操作“Create Record”, “Update Record”, “Assign Record”, “Send Email” 和 “Change Status”。唯一的区别是这些操作在Dialog过程中同步地执行;而在Workflow中会交给Async Server。
9. 你可以写一些注释,在Dialog运行时能被用到。
10. 你可以使用Dialog Session 来进行分析。每次运行一个Dialog,所有的信息例如客户响应、创建\更新的记录、运行Dialog的用户所写的注释都会被记录在Dialog Session记录中。Dialog Session实体和Dialog、Dialog中所创建的实体有N:1的关系。注意若出于隐私考虑,可以在创建Dialog时关闭记录客户响应到Dialog Session中的功能。
在Dialog编辑器中有上述所有的步骤,如上图所示。熟悉创建Workflow的用户能够很容易的关联到Dialog中可用的步骤。除了CRM自带的步骤,用户还可以像Workflows一样使用Windows Workflow Foundation创建Custom Activities 来进行扩展。请注意只有使用.Net 4.0创建的custom activities对Dialog才有用。我们将在下面继续解释。
作为上述列表的一个补充,Dialog最大的一个优点是你能够在Solution中创建或添加Dialog,从而在新系统中使用Dialog。
开始创建Dialog
在我们创建Dialog之前,我们先熟悉一下CRM 2011中workflow和Dialog的一些新变化和一些我们在后面会用到的术语。
Process类型:Dialog或workflow
就像我在这篇文章前面所提到的,Dialog和workflow都是Process。同一个实体表示了两者:Dialog和workflow。实际上,以前版本中的Workflow仅仅将显示名称更改为了“Process“。仅仅在Process实体上增加了一个新的属性“category”类表明这个process是Dialog还是workflow。
创建Dialog/Process的位置
你可以在Web或Outlook 客户端的Setting栏下找到Processes,如下图所示
Workflow创建UI的变化
以前版本中,当你创建一个workflow,你会看到一个web对话框让你填入workflow的名字和所基于的实体。创建新的process也有这些过程,唯一的区别是你需要选择category来确定需要创建Dialog还是Workflow。
Category列有两个选项,Dialog和workflow。“Workflow Name”变为了“Process Name”。
Process编辑器
输入上述值并点击OK后你将会看到下述页面。我们称之为Process编辑器。
在Process编辑器中你可以编辑Dialog中的步骤。
‘Publish/Unpublish’ 更改为 Activate/Deactivate’
CRM 2011中,“Publish” 按钮更名为 “Activate”。 “UnPublish” 按钮更名为 “Deactivate”。这个变化的效果是Process的状态能够为Draft 或 Activate 。 一个Process在你Activate之前都处于Draft状态。
Context Entity
Dialog总是为某个CRM实体创建的。一旦Dialog被发布并准备运行,它只能在某个实体的记录下运行。
现在我们来创建我们的第一个Dialog
在创建Dialog之前,我们需要计划这个Dialog如何运作,然后再开始创建。最后进行测试,看Dialog是否按照我们的计划运作的。请参见下图
很多编程语言都选用Hello World来展开介绍,我们也从Hello World开始,创建一个Dialog来显示”Hello World!”。
计划
1. 我们需要选择一个Dialog所基于的实体,在这里选择Account。
2. 我们需要向运行Dialog的用户显示”Hello World!”
创建
1. 点击Setting下的Process。
2. 点击New,为Process取名为Hello World,在下拉菜单中分别选择Account和Dialog。如下图所示
3. 点击OK。你会看到编辑器页面。
4. 在编辑器中点击Add Step菜单,选择Add Page。
5. 然后你会看到以下页面。
6. 现在输入页面描述,选择“Select this row and add click Add Step”。然后点击Add Step菜单选择“Prompt and Response”。
7. 然后你会看到以下页面。
8. 点击Set Properties,你会看到一个新窗口去定义“Prompt and Response”。按照下图填写相关属性。
9. 由于我们的Dialog只需要显示“Hello World”,所以我们将Response Type保持默认的None即可。当然,你可以在下拉菜单中查看除了None以外的其他选项。下面,点击Save and Close,你会看到“Prompt and Response”定义如下
激活
点击Activate按钮来激活这个Dialog,这样你的第一个Dialog就可以运行了。
测试
1. 在CRM中打开Account列表并选择一个Account记录。
2. 你可以留意到Ribbon上的Start Dialog按钮可用了。
3. 点击Start Dialog按钮,选择“Hello World”Dialog。
4. 点击OK,可以看到所显示的“Hello World”。
5. 点击Next,你可以看到这个Dialog Session的最后一页。
所有的Dialog都有这最后一页,用户可以回到前面的页面。
下面,我们需要检查Dialog Session看这个Dialog中的信息是否被记录。打开刚才那条account记录,点击Dialog Session,你可以看到Session记录已经在列表中。
打开列表中的Dialog Session记录,如下图所示。
你可以看到Dialog运行所获取的所有信息都被记录在其中。
Dialog Session生命周期
你一开始运行Dialog,Dialog Session就会被创建。点击Dialog运行时窗口中的Summary就可以看到这个过程记录的信息。最初,Dialog Session是在In Progress状态。如果你结束了这个Dialog,那么状态会变为Completed。如果你在运行中途取消了Dialog,那么Dialog Session的状态会变为Canceled。
记住,若取消了Dialog Session,以后将无法继续。
结束语
我们创建了一个Dialog并进行了测试。在以后的博客中会继续介绍Dialog相关的细节。
谢谢!
Jackie Chen
原文:https://blogs.msdn.com/b/crm/archive/2011/02/02/welcome-to-the-world-of-dialogs-part-1.aspx