二开案例.单据插件.工作流提交

【应用场景】
模拟在单据界面上,提交单据并启动工作流。
【案例演示】
币别,新增菜单【工作流提交】tbBillSubmit,点击后,根据当前单据的工作流配置,执行提交操作。
【实现步骤】
<1>编写单据插件,代码如下。
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using Kingdee.BOS.Workflow.Models.EnumStatus;
using Kingdee.BOS.Workflow.Models.Template;
using Kingdee.BOS.Workflow.ServiceHelper;
using System.ComponentModel;
using System.Linq;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【单据插件】工作流提交
/// </summary>
[Description("【单据插件】工作流提交"), HotUpdate]
public class WorkflowBillSubmitPlugIn : AbstractBillPlugIn
{
public override void BarItemClick(BarItemClickEventArgs e)
{
base.BarItemClick(e);
if (e.BarItemKey.EqualsIgnoreCase("tbBillSubmit"))
{
BillSubmit();
}
}
private void BillSubmit()
{
var formId = this.View.BillBusinessInfo.GetForm().Id;
var submitOperation = this.View.BillBusinessInfo.GetForm().FormOperations.FirstOrDefault(o => o.OperationId == 9);
if (submitOperation == null)
{
return;
}
var ids = new[] { this.Model.DataObject[0] };
var billStatus = ObjectUtils.Object2String(this.View.BillBusinessInfo.GetBillStatusField().DynamicProperty.GetValue(this.Model.DataObject));
if (billStatus != "A" && billStatus != "D")
{
// 单据状态异常,无法提交
return;
}
var orgId = this.Context.CurrentOrganizationInfo.ID; // 有主业务组织,取主业务组织,没有主业务组织,取当前登录组织
// 获取流程模板类型
var wfTemplatePermissionResult = WorkflowSubmitServiceHelper.ValidatePermission(this.Context, formId, orgId, submitOperation.PermissionItemId);
if (wfTemplatePermissionResult.TemplateModels.Length > 1)
{
// TODO:同时存在工作流模板和审批流模板,请选择模板类型
}
var param = new TemplateParameter()
{
TemplateModel = wfTemplatePermissionResult.TemplateModels[0],
BillBusinessInfo = this.View.BillBusinessInfo,
OriginatorPost = null
};
//二开案例.单据插件.工作流提交
【应用场景】模拟在单据界面上,提交单据并启动工作流。【案例演示】币别,新增菜单【工作流提交】tbBillSubmit,点击后,根据当前单据的工...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



