zoukankan      html  css  js  c++  java
  • Dynamics CRM

    需求说明:

          当一个 Entity 存在 Business Process Process 时,有时我们需要改变其状态,在之前写的博客有讲了可以通过 JavaScript 来实现,本篇就来讲一下如何通过 C# Plugin 来实现对 BPF 的 abandon( abandon 后的 BPF 会变成灰色,BPF 里的  Stages 变成不可编辑,不能点击上一步和下一步,也不能 Set Active;如果想要使 Steps 也不可编辑,可通过 JavaScript 控制)。

    解决方案:

          通过 Solution 查看 Entities 组件时可以发现:在为一个 Entity 添加一个 Business Process Flow 的时候,实际上也是创建了一个新的 Entity(后面简称 BPF Entity),Entity 与 BPF Entity 之间的关系是 1:N。BPF Entity 中存在 Lookup 其 Primary Entity 的 Field,可以通过这个字段来查询当前 Entity 下的 BPF,之后改变其 State 和 Stauts 的值就可以将 BPF abandon 了。

    Note:State -> statecode,Status -> statuscode,这两个字段都是 BPF Entity 的 Default Field,每个 Entity 都有的,表示状态,通过改变这两个字段的值来改变 Entity 的状态。

    示例代码:

    private void AbandonBPF(IOrganizationService service, Guid new_entity_id)
    {
        using (OrganizationServiceContext orgService = new OrganizationServiceContext(service))
        {
            var bpf_entity = (from _bpf_entity in orgService.CreateQuery<Entities.new_bpfentity>()
                              where _bpf_entity.bpf_new_entityid.Id == new_entity_id
                              select _bpf_entity).FirstOrDefault();
    
            if (bpf_entity != null && bpf_entity.GetAttributeValue<OptionSetValue>("statecode").Value == 0)
            {
                //statecode = 1 and statuscode = 3 for abandon workflow
                SetStateRequest setStateRequest = new SetStateRequest()
                {
                    EntityMoniker = new EntityReference
                    {
                        Id = bpf_entity.BusinessProcessFlowInstanceId.Value,
                        LogicalName = Entities.new_bpfenity.EntityLogicalName,
                    },
                    State = new OptionSetValue(1),
                    Status = new OptionSetValue(3)
                };
                service.Execute(setStateRequest);
            }
        }
    }

    Note:这里 new_entity 是 Entity name,new_bpfentity 是其对应 BPF Entity 的 name。

    函数调用:

    Entities.new_entity entity =  ((Entity)context.InputParameters["Target"]).ToEntity<Entities.new_entity>();
    AbandonBPF(service, entity.id);
  • 相关阅读:
    10-SAP PI开发手册-ERP发布服务供外围系统调用(RFC类型)
    出口增强:已知SMOD查CMOD
    SAP开发系统中开发和配置客户端请求号变更
    ABAP接口之Http发送json报文
    ABAP 常见系统表
    .net程序员转战android第三篇---登录模块之静态登录
    .net程序员转战android第二篇---牛刀小试
    .net程序员转战android第一篇---环境部署
    将一个字符串转变成2元素的数组
    字节小程序客服推送消息
  • 原文地址:https://www.cnblogs.com/Sunny20181123/p/10936465.html
Copyright © 2011-2022 走看看