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文件,勾选添加的工作流类文件,点击添加,完成

使用工作流

  • 流程中心,流程

  • 新建流程

    输入流程名称,类型为工作流,选择关联的实体,创建

  • 配置工作流

    勾选流程执行时机,添加步骤,添加注册的工作流

  • 配置属性

    若流程有输入属性,可设置输入属性关联信息(绑定值,默认值等)

到达胜利之前无法回头!
原文地址:https://www.cnblogs.com/weiyongguang/p/14061664.html