自学内容网 自学内容网

Power Apps 学习笔记 -- Plugin

1. Plugin 简介

  Plugin基础教程 : Plugin基础教程

插件Plugin:
1. 插件Plugin通常用于默认数据处理操作区间,增加数据默认行为的方法。(无重用性)

2. Plugin 配置

 .NET环境:.NET环境

##安装配置
 1. 安装.NET 环境
 2. 安装 PowerPlatform CLI (使用.NET命令行安装)
dotnet tool install --global Microsoft.PowerApps.CLI.Tool
 3. 安装 Plugin Registration Tool
pac tool prt
##使用Plugin
1. 创建 Class Library(.NET FrameWork)
2. Manuget包:Microsoft.CrmSdk.CoreAssemblies
3. 代码编写
4. 进入属性当中进行密钥签名、检查属性为Debug
5. 解决方案生成 --> 生成文件资源管理器 \bin\Debug\BasicPlugin.dll
6. 登录进入Plugin Registration Tool (注意选择对应环境)
7. 注册程序集 Assembly(注意这里必须全选所有插件,否则会导致其他已有插件被撤掉)
8. 注册步骤Step(核心:定义插件的触发条件、)
9. 运行
10. 调试(install profiler - start profiling - 执行操作 - 附加进程 - startExecution) 

2.1 步骤Step核心分析

  事件执行管道模型(Plugin插件遵循其规律)
在这里插入图片描述

  PreCalidation: 数据库事务管理前,可加入用户过滤等相关取消逻辑的操作。可用于用户安全验证、权限检查等.
  PreOperation: 核心操作前,可调整传入核心操作消息实体的值。可用于核心操作实体值修改等
  MainEvent: 该阶段是执行关键操作(增删改等)的阶段,不允许注册插件.
  PostOperation: 核心操作后,可以获取消息最初传入、操作结束后消息返回的值。尽可能不要修改实体值,避免触发其他事件。
可执行事务管理外的异步操作。可用于创建、修改、更新实体等操作。

  Step注册参数含义
在这里插入图片描述

3. Plugin 代码

 IPluginExecutionContext接口:IPluginExecutionContext接口

  IPulginExecutionConext: 提供了有关 plugin 执行上下文的信息,包括当前操作的实体记录、操作的类型、执行 plugin 的用户等,
可以使用相关属性和方法进行访问.
using System;
using System.ServiceModel;
using Microsoft.Xrm.Sdk;

namespace BasciPlugin {
    public class FollowupPlugin : IPlugin {
        public void Execute(IServiceProvider serviceProvider) {
            // 跟踪日志
            ITracingService tracingService =(ITracingService)serviceProvider.GetService(typeof(ITracingService));
            // Plugin上下文信息
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

            // InputParameters包含请求的实体集(可以是EntityCollection)
            if(context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) {

                // 组织服务工厂及相关 
                IOrganizationServiceFactory serviceFactory =(IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
                try {
                    // context.OutputParameters 核心操作后的响应消息参数
                    // 具体的Plugin相关操作
                    tracingService.Trace("FollowupPlugin: Creating the task activity.");
                }

                catch(FaultException<OrganizationServiceFault> ex) {
                    throw new InvalidPluginExecutionException("An error occurred in FollowUpPlugin.", ex);
                }

                catch(Exception ex) {
                    tracingService.Trace("FollowUpPlugin: {0}", ex.ToString());
                    throw;
                }
            }
        }
    }
}


原文地址:https://blog.csdn.net/weixin_51566349/article/details/135082133

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!