全流程跟踪和业务流程图-》插件干预显示原创
金蝶云社区-eris
eris
75人赞赏了该文章 1,005次浏览 未经作者许可,禁止转载编辑于2024年03月05日 13:53:32

一、说明

备注:由于存在问题,目前还未发布

1、上下查可以使用插件干预,故全流程跟踪和业务流程图也增加插件事件使其可以干预。

2、预计支持版本2024年06月份。

3、插件增加的节点会在表单名后面加星号。

4、特别注意1,会在整条链路的所有表单插件中触发OnShowTrackAllFlows事件,故一条链路只要一个表单中干预即可;如果一条链路有多个表单干预,要特别注意处理。

5、特别注意2,业务流程图,它是依据设计好的流程图,只能激活相应的节点,不存在增加删除的情况,并且激活要符合流程图关系。

二、插件事件 OnShowTrackAllFlows

1、OnShowTrackAllFlows,全流程跟踪显示之前干预事件,可以增加需要显示的节点,禁止删除里面的节点。

2、OnShowTrackAllFlows,业务流程图显示之前干预事件,可以在已有的业务流程图单据中激活相应的节点。

3、在表单插件中进行实现即可,不需要列表插件中干预,此事件中的view 为动态创建的BillView。

三、事件参数 ShowTrackAllFlowsEventArgs

1、List<BusinessFlowInstance> Instances 属性.,此实例数据是平台解析后的数据,

包括跨实例数据,删除了无需显示的分支路线,删除了阻断节点和它的路线后的数据。

2、FormOperation属性,触发此操作的来源,只有全流程跟踪操作和业务流程图操作,分别对应的操作名为“TrackAllFlows”和“Track”。

3、IsCancelNextForm属性,默认false, 设置为true, 会停止触发下面的表单OnShowTrackAllFlows事件。

四、简单示例

1、插件在节点B后面增加单据C节点,在A和B单据上做全流程跟踪效果

image.png

image.png

2、增加或激活的节点会在表单名后面增加星号,鼠标悬浮在节点上显示时。

image.png

五、代码示例

1、表单插件,节点B下面增加单单据C节点

特别注意1、增加的表名,一定得在定义表(t_bf_tableDefine)中有值

using System;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.Log;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.BusinessEntity.BusinessFlow;
using Kingdee.BOS.Core.List.PlugIn.Args;
using  Kingdee.BOS.Core.Bill.PlugIn;
namespace Kingdee.BOS.TestPlugIn22.FormPlugin
{
    [HotUpdate]
    [Description("单据测试插件")]
    public class TestFormPlugIn : AbstractBillPlugIn
    {
        public override void OnShowTrackAllFlows(ShowTrackAllFlowsEventArgs e)
        {
            base.OnShowTrackAllFlows(e);
            //传入的流程实例数据不为空
            if (e.Instances.IsEmpty() == false)
            {
                //得到所有单据B的节点
                List<RouteTreeNode> allBillBNodes = new List<RouteTreeNode>();
                foreach (var instItem in e.Instances)
                {
                    var instAllNodes = this.GetAllNodes(instItem.FirstNode);
                    foreach (var node in instAllNodes)
                    {
                        if (node.Id.Tbl.EqualsIgnoreCase("BillB_Entry"))
                        {
                            allBillBNodes .Add(node);
                        }
                    }
                }
                //所有单据A节点增加单据C孩子节点
                long cNodePkValue =0;
                foreach (var node in allBillBNodes )
                {
                    cNodePkValue++;
                    RouteTreeNode childNode = new RouteTreeNode();
                    //"BillC_Entry1" 一定得在 t_bf_tabldeDefine中的 FTableNumber中对应的值
                    childNode.Id = new Id("BillC_Entry1", cNodePkValue);
                    childNode.ParentNode = node;
                    node.ChildNodes.Add(childNode);
                }
            }
        }
        private List<RouteTreeNode> GetAllNodes(RouteTreeNode parentNote, int parentDepth = 0)
        {
            List<RouteTreeNode> allNode = new List<RouteTreeNode>();
            allNode.Add(parentNote);
            foreach (var child in parentNote.ChildNodes)
            {
                int currDepth = parentDepth;
                RecursionLimitUtils.Run(ref currDepth, 200, "TestFormPlugIn->GetAllNodes"); //防止死循环
                var childs = this.GetAllNodes(child, currDepth);
                allNode.AddRange(childs);
            }
            return allNode;
        }
    }
}




图标赞 75
75人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!