操作插件之-AfterExecuteOperationTransaction事件,工作流服务插件原创
11人赞赏了该文章
2,931次浏览
编辑于2020年08月27日 15:10:03
1.用途
操作执行后(事务外)事件,在操作处理完毕,事务提交完毕后触发。
所以那种次业务不影响主流程的操作都可以放置在这个方法中。
2.备注
通常用于在操作完毕后,进行后续的处理,但因为操作的事务已经提交,不能够撤销操作。
如操作完毕后,修饰操作提示信息,使之更加人性化。
3.个人操作代码讲解
/// <summary> /// 操作执行后,事务结束后 /// </summary> /// <param name="e"></param> /// <remarks> /// 1. 此事件在操作执行后,操作的内部逻辑已经执行完毕; /// 2. 此事件在操作事务提交之后; /// 3. 此事件中的数据库处理,不受操作的事务保护 /// 4. 通常此事件,也可以做同步数据,但是此同步数据的成功与否,不需影响操作 /// </remarks> public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) { base.AfterExecuteOperationTransaction(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); //每个任务传入一个ObjectActivityInstance对象,批量审批任务时会传入多个对象 foreach (ObjectActivityInstance actRow in activityCollection) { //获取当前处理人的信息(每个任务可能有多个处理人,所有处理人存储在ReceiverList属性中) IActivityInstance actInstance = actRow.ActivityInstance; //当前节点审批信息 var currentReceiver = actInstance.CurrentReceiver; //根据节点ID把审批人等信息输出到相应字段上,比如一级审核节点 if (actInstance.ActivityDefineId == KEY_DataSynNodeId && currentReceiver != null) { //加载单据数据 FormMetadata rowMeta = metaService.Load(this.Context, actRow.ObjectFormId, true) as FormMetadata; //获取销售订单关联所有数据 var rowData = viewService.LoadSingle(this.Context, actRow.ObjectKeyValue, rowMeta.BusinessInfo.GetDynamicObjectType()); //获取单据体分录信息 DynamicObjectCollection saleOrderEntries = rowData["SaleOrderEntry"] as DynamicObjectCollection; //循环分录信息获取物料信息 foreach (var entityRow in saleOrderEntries) { } } } } }
3.1.this.Option.GetVariableValue<>();
从选项中获取定义的值
3.2.ServiceFactory.GetMetaDataService(this.Context)
获取领域模型元数据服务类实例
3.3.ServiceFactory.GetViewService(this.Context);
获取对应业务对象的值
操作步骤:
获取工作流数据。
循环工作流获取指定流程节点的单据信息。
数据解析处理。
赞 11
11人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!