流程插件开发系列1:审批动作服务插件,可输出审批人到单据

背景:
流程审批过程中,用户希望同时做一些其他的数据处理,比如将当前审批节点的审批人、审批意见等信息输出到单据上,就可以通过审批动作服务插件实现。
此前比较遗憾的是在服务插件中无法获取流程信息;很高兴地告诉各位伙伴们,在K/3 Cloud_V6.X补丁(2017-04-21)、以及预计V7.0,支持在服务插件获取流程任务信息。新版本的工作流将逐步开放插件体系,以增强个性化定制开发。
1. 如何开发审批动作服务插件
审批动作服务插件,开发过程和通用的服务插件一样,本文主要介绍如何在插件中与流程进行交互;在K/3 Cloud_V6.X补丁(2017-04-21)、新版本V7.0支持从服务插件获取流程任务信息。
服务插件开发请参考K3Cloud在线SDK文档,http://open.kingdee.com/K3Cloud/SDK/webframe.html:使用教程> 插件开发 > 单据插件开发 > 创建一个业务单据操作服务插件。
1.1. 示例插件代码
以下示例插件,举例说明在用户审批的时候,如何获取一级审批节点的审批人、审批意见信息,并输出到单据上,示例未经测试仅供参考思路。首先到K/3 Cloud安装目录的WebSite\Bin子目录,引用如下基本组件(其他组件按需引用):
Kingdee.BOS.dll
Kingdee.BOS.Contracts.dll
Kingdee.BOS.Core.dll
Kingdee.BOS.DataEntity.dll
Kingdee.BOS.ServiceHelper.dll
2017-06-21 14:51 上传
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core.Const;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Workflow.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Demo.Workflow.ServicePlugIn
{
/// <summary>
/// 输出审批人、审批意见到单据上
/// </summary>
[Description("服务插件,输出审批人、审批意见到单据上")]
public class ApprovalInfoServicePlugIn : AbstractOperationServicePlugIn
{
private const string KEY_User1 = "FUserId1_Id";
private const string KEY_Opinion1 = "FRemarks1";
private const string KEY_TaskTitle1 = "FTaskTitle1";
private const int KEY_FirstNodeId = 5;
public override void EndOperationTransaction(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.EndOperationTransactionArgs e)
{
base.EndOperationTransaction(e);
// 获取流程任务信息
var activityCollection = this.Option.GetVariableValue<ObjectActivityInstanceCollection>(BOSConst.CST_KEY_WfActivityInstance, null);
if (activityCollection != null)
{
IMetaDataService metaService = ServiceFactory.GetMetaDataService(this.Context);
IViewService viewService = ServiceFactory.GetViewService(this.Context);
List<DynamicObject> rowList = new List<DynamicObject>();
// 每个任务传入一个ObjectActivityInstance对象,批量审批任务时会传入多个对象
foreach (ObjectActivityInstance actRow in activityCollection)
{
// 本例演示获取当前处理人的信息(每个任务可能有多个处理人,所有处理人存储在ReceiverList属性中)
IActivityInstance actInstance = actRow.ActivityInstance;
var currentReceiver =actInstance.CurrentReceiver;
流程插件开发系列1:审批动作服务插件,可输出审批人到单据
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



