Queue Item的Pick、Release按钮点击传参及Plugin获取方案咨询
队列项Pick/Release按钮操作插件触发方案
参数读取说明
原生Dataverse/Dynamics 365的Queue Item的Pick、Release按钮触发的是两个完全独立的系统标准消息,不需要额外传递自定义参数,插件可以直接通过消息名称区分两个操作:
- 点击Pick按钮对应
PickQueueItem消息 - 点击Release按钮对应
ReleaseQueueItem消息
首选实现方案(无自定义改造场景)
直接在插件注册工具中针对两个消息分别注册插件步骤即可:
- 打开Plugin Registration Tool,连接到对应环境
- 针对Pick操作新建插件步骤:
- 消息选择
PickQueueItem,主实体选择queueitem - 执行阶段根据需求选择:需要拦截操作显示告警选
PreValidation/PreOperation,操作完成后提示选PostOperation
- 消息选择
- 针对Release操作重复上述步骤,消息选择
ReleaseQueueItem即可 - 两个操作的插件逻辑独立编写,不需要额外判断参数,如需获取队列项相关属性可从执行上下文的
InputParameters中读取:PickQueueItem参数包含QueueItemId(队列项ID)、WorkerId(拾取的主体ID)ReleaseQueueItem参数包含QueueItemId(队列项ID)
代码示例
public void Execute(IServiceProvider serviceProvider) { IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); // Pick操作告警逻辑,Release操作同理写在对应消息的插件中即可 if (context.MessageName.Equals("PickQueueItem", StringComparison.OrdinalIgnoreCase)) { Guid queueItemId = (Guid)context.InputParameters["QueueItemId"]; // 抛出异常即可显示告警提示,如需自定义提示内容直接修改异常消息 throw new InvalidPluginExecutionException("告警:拾取该队列项前请确认已处理完手中待办项"); } }
替代方案(自定义按钮场景)
如果你替换了原生按钮使用自定义命令,可在按钮的前端调用逻辑中添加自定义标识参数:
- 前端调用Web API执行操作时,在请求参数中添加自定义标识,比如
op_type = "pick" - 插件中从
IPluginExecutionContext.InputParameters中读取该标识区分操作类型即可
内容的提问来源于stack exchange,提问作者Mohammad Khubaib Nasir
相关产品推荐
相关产品推荐

