行业知识
Power Apps 学习笔记 -- Plugin
2026-11-01 03:49:57
来源:互联网转载
文章目录
- 1. Plugin 简介
- 2. Plugin 配置
- 2.1 步骤Step核心分析
- 3. 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 Toolpac tool prt
##使用Plugin1. 创建 Class Library(.NET FrameWork)2. Manuget包:Microsoft.CrmSdk.CoreAssemblies3. 代码编写4. 进入属性当中进行密钥签名、检查属性为Debug5. 解决方案生成 --> 生成文件资源管理器 \bin\Debug\BasicPlugin.dll6. 登录进入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 ex) { throw new InvalidPluginExecutionException("An error occurred in FollowUpPlugin.", ex); } catch(Exception ex) { tracingService.Trace("FollowUpPlugin: {0}", ex.ToString()); throw; } } } }}