zoukankan      html  css  js  c++  java
  • 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文件,勾选添加的工作流类文件,点击添加,完成

    使用工作流

    • 流程中心,流程

    • 新建流程

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

    • 配置工作流

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

    • 配置属性

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

    到达胜利之前无法回头!
  • 相关阅读:

    卖了5个月水果之后再看互联网思维
    实时流式计算框架Storm 0.9.0发布通知(中文版)
    Top100Summit全球案例研究峰会第一天总结——云计算和大数据
    [若有所悟]提升工作效率的一些小技巧——资源管理器篇
    [若有所悟]主持会议的八大戒条
    惊魂36小时,一次生产事故,动态磁盘删除卷分区丢失,数据恢复案例实战
    一个不用的域名到期导致整个服务器上其他网站都无法访问的线上事故
    guava cache大量的WARN日志的问题分析
    IDEA下运行 mybatis报错 Parameter 'arg0' not found. Available parameters are [autoRecharge, id, param1, param2]
  • 原文地址:https://www.cnblogs.com/weiyongguang/p/14061664.html
Copyright © 2011-2022 走看看