Dynamics 365-三:工作流
参考文档
流程
流程的种类
-
业务流程BusinessProcess:可视化的流程,创建流线型的业务流程让用户对客户都遵循相同的步骤,告诉用户当前在哪一步要做什么
-
脚本Dialog:使用脚本可以创建一个向导式界面,指引用户完成客户交互脚本
-
工作流Workflow:使用工作流可以在后台实现业务流程自动化,可以由事件触发,也可以按需运行
-
操作Action:操作是一种能通过API/后端代码调用的自定义代码逻辑的流程
各流程的差异
业务流程Business Process Flow、脚本/对话Dialog、工作流Workflow都可以低代码开发,而操作Action具有一定的编程能力,需要自定义代码逻辑。
-
业务流程Business Process Flow:流程指导是基于相同的步骤,为用户完成工作提供指导,例如销售线索流程、商机流程、案例解决流程等,它可以由用户启动或自动启动。
-
脚本/对话Dialog:流程指导是向导式界面交互,它是实时进程,需要由用户输入才能运行完成,它存储正在运行脚本所生成信息的实体是ProcessSession实体。
-
工作流Workflow:流程指导是后台实现业务流程自动化,例如根据客户门店关系更新客户归属导购、积分账户变化更新会员等级。它为异步或实时进程,无需用户输入即可运行完成。异步进程在后台运行,而实时进程立即运行。它存储正在运行的异步工作流的详细信息的实体为AsyncOperation,而Process用于实时工作流。
-
操作Action:流程指导是使用API/后端代码调用的自定义代码逻辑,例如订单确认、入库确认、入库签收等。它可以由用户启动或自动启动。
业务流程
业务流程阶段、步骤和类别
每个阶段只能指定一个实体;每个阶段包含一组步骤,每个步骤代表可以输入数据的一个字段。
用户可以使用下一阶段按钮前进到下一阶段;可以将某个步骤设为必需步骤,使得用户必须为对应的字段输入数据后才能继续到下一阶段,这称为“阶段门限”。
每个实体最多有10个激活的业务流程;每个业务流程可以最多包含30个阶段;每个阶段最多30个步骤。
业务流程权限
-
编辑安全角色:选择某个安全角色-业务流程选项卡-设置权限
-
创建:允许创建业务流程的实例,在创建新记录的同时完成。
-
读取:允许查看已创建记录中的业务流程。
-
写入:允许更新业务流程。 例如,更改状态和导航。
-
删除:允许删除实例,如在删除记录时。
-
追加:允许从实体的跨实体导航。 例如,潜在顾客转化为商机销售流程业务流程中的潜在顾客实体。
-
追加到:允许到实体的跨实体导航。 例如,潜在顾客转化为商机销售流程业务流程中的商机实体。
业务流程的顺序
多个业务流程显示顺序可通过点击上下箭头进行排序,业务流程默认显示的是有权限看到的第一个业务流程。另外多个业务流程时可通过自动或手动方式进行切换。
工作流
工作流的分类
-
后台工作流(异步):依赖于Windows服务(Microsoft Dynamics CRM异步处理服务),是CRM服务器上运行的服务。有可能不会立即执行。
-
实时工作流(同步):立即执行的工作流,跟插件一样,也是用事件执行管道执行。如果在执行过程中有异常发生,会取消并回滚整个操作。实时工作流里所有的活动和子流程都是一个事务。如果工作流执行成功,就看不到执行的log。如果执行失败且启用日志,则实时工作流错误记录在进程会话(ProcessSession)实体记录中。
工作流的运行方式
- 在后台运行此工作流(推荐):勾选代表异步工作流,不勾选代表同步工作流
- 作为按需流程:手动执行
- 作为子流程:由其他工作流Workflow或脚本Dialog中调用
工作流配置项
- 范围:用户/业务部门/上下级业务部门/组织。
- 启动时间:创建记录后-记录状态更改后-分派记录后-记录字段更改后-删除记录后。记录指工作流中定义的实体。启动时间可多个组合,两者间是或的条件。
Workflow步骤
- 条件:检查条件【推荐】判断当前字段是否满足某个值;等待条件;
- 操作:创建-更新-分派-发送电子邮件-启动子工作流-执行操作-更改状态-停止工作流。
自定义工作流
创建工作流项目
安装工作流项目模板
打开VS安装工具,在单组件选项中搜索windows workflow foundation
安装
创建工作流项目
打开VS,新建项目,选择workflow
分组下活动库(Activiy Lbray
)模板,点击确定创建
删除自动生成的.xaml
文件
创建工作流文件
右键项目,选择添加,新建项
选择Workflow
组下代码活动文件(code activity
),点击确定创建
引入相关库
Microsoft.crm.sdk
Microsoft.crmsdk.workflow
编写代码
using System;
using System.Activities;
using Microsoft.Xrm.Sdk.Workflow;
using Microsoft.Xrm.Sdk;
namespace T2
{
public sealed class CodeActivity1 : CodeActivity
{
// 定义一个字符串类型的活动输入参数
[Input("Text")]
public InArgument<string> Text { get; set; }
// 定义一个字符串类型的活动输出参数
[Output("OutText")]
public OutArgument<string> OutText { get; set; }
protected override void Execute(CodeActivityContext context)
{
// 获取 Text 输入参数的运行时值
string text = context.GetValue(this.Text);
IWorkflowContext workflowContext = context.GetExtension<IWorkflowContext>();
IOrganizationServiceFactory factory = context.GetExtension<IOrganizationServiceFactory>();
IOrganizationService service = factory.CreateOrganizationService(null);
Guid id = Guid.Empty;
Entity entity = new Entity("new_customer");
entity.Attributes.Add("new_phone",Text.Get(context));
id = service.Create(entity);
OutText.Set(context,id.ToString());
}
}
}
生成,签名
右键项目,属性
签名,勾选程序集签名,选择新建,取消加密,输入签名名称,确定,保存
注册工作流
- 打开注册工具
-
添加工作流DLL
-
选择DLL文件,勾选添加的工作流类文件,点击添加,完成
使用工作流
-
流程中心,流程
-
新建流程
输入流程名称,类型为工作流,选择关联的实体,创建
-
配置工作流
勾选流程执行时机,添加步骤,添加注册的工作流
-
配置属性
若流程有输入属性,可设置输入属性关联信息(绑定值,默认值等)