码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Dynamics CRM - 通过 C# Plugin 来 abandon Business Process Flow


    需求说明:

          当一个 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()
                              where _bpf_entity.bpf_new_entityid.Id == new_entity_id
                              select _bpf_entity).FirstOrDefault();
    
            if (bpf_entity != null && bpf_entity.GetAttributeValue("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();
    AbandonBPF(service, entity.id);

  • 相关阅读:
    【学习笔记】用线段树维护区间计数问题
    跑步运动蓝牙耳机哪个好?跑步无线运动蓝牙耳机推荐
    竞赛选题 基于深度学习的目标检测算法
    VMware Workstation中安装FusionCompute 6.5.1_CNA
    代码随想录二刷 Day 29
    asp毕业设计——基于asp+access的在线教育系统设计与实现(毕业论文+程序源码)——在线教育系统
    npm install / webdriver-manager update报错 unable to get local issuer certificate
    jenkins使用注意问题
    LinkedList集合
    【Pygame实战】再次祭出舍不得分享的学习小技巧,用游戏玩出英文能力(O基础也能轻松get)
  • 原文地址:https://blog.csdn.net/m0_72495985/article/details/127864177
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号