PLM.对象启动流程增加自定义校验条件

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

PLM.对象启动流程增加自定义校验条件

【应用场景】

对象在提交状态的变更中,控制不允许启动流程


【案例演示】

文档库列表提交状态的变更对象不允许启动流程


【实现步骤】

1>编写表单插件(如何编写二开插件配置等请参考:二次开发扩展程序开发之插件模式https://vip.kingdee.com/article/83591896433330944?productLineId=1其他星空PLM开发指南也可以参考 【汇总】星空PLM二开指南(持续更新)https://vip.kingdee.com/article/329914697153905408?productLineId=1&isKnowledge=2更多详细的金蝶云星空BOS二次开发指南:https://vip.kingdee.com/article/94751030918525696?productLineId=1&isKnowledge=2

添加引用:

代码如下:


namespace ISV.StartFlow.Common.BusinessEntity
{
    [Description("启动流程校验")]
    public class StartFlowList : AbstractPLMListPlugIn
    {
        public override void BeforeDoOperation(BeforeDoOperationEventArgs e)
        {
            if (e.Operation.FormOperation.Operation == "DoStartFlow")
            {
                var lst = this.ListView.SelectedRowsInfo;
                var selectDatas = lst.Select(x => x.DataRow).ToList().ToDictionary(w => w["FID"], w => long.Parse(w["FCategoryID_Id"].ToString()));
                var pdmObjList = new List<DynamicObject>();
                foreach (var objs in selectDatas.GroupBy(w => w.Value))
                {
                    var pdmobj = DomainObjectManager.Instance(PLMContext, objs.Key).Load(PLMContext, objs.Select(w => w.Key).ToArray());
                    pdmObjList = pdmObjList.Concat(pdmobj).ToList();
                }
                foreach (var pdmobj in pdmObjList)
                {
                                    if (pdmobj != null)
                                    {
                                        bool isChange = pdmobj.GetDynamicObjectItemValue<bool>("IsChange");
                                        bool isChangeObject = pdmobj.GetDynamicObjectItemValue<bool>("IsChangeObject");
                                        string lifeCircleStage = pdmobj.GetDynamicObjectItemValue<string>("LifeCircleStage");
                                        string code = pdmobj.GetDynamicObjectItemValue<string>("Code");
                                        LocaleValue name = pdmobj.GetDynamicObjectItemValue<LocaleValue>("Name");
                                        if (isChange && lifeCircleStage == "AJ")
                                        {
                                            this.View.ShowWarnningMessage(string.Format("名称:{0}  编码:{1},对象在提交状态的变更中,不允许提交;", name, code));
                                            e.Cancel = true;
                                            return;
                                        }
                                    }
                }
                base.BeforeDoOperation(e);
            }
        }
    }
}


<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。

<3>BOSIDE扩展研发文档,注册列表插件,保存元数据,开发完毕。

上传图片



【功能验证】

<1>登录业务站点,打开文档库列表,可以看到提交状态的变更对象不允许启动流程。


【参考资料】

【汇总】星空PLM二开指南(持续更新)https://vip.kingdee.com/article/329914697153905408?productLineId=1&isKnowledge=2

【合辑】金蝶云.星空 PLM知识合辑(持续更新) https://vip.kingdee.com/article/329662872047302912?productLineId=1&isKnowledge=2

二次开发扩展程序开发之插件模式 https://vip.kingdee.com/article/83591896433330944?productLineId=1

PLM云 -- 基于BOS平台的二次开发扩展 https://vip.kingdee.com/article/10875?productLineId=1

PLM云 -- 基于配置系统的二次开发扩展(对象属性扩展)https://vip.kingdee.com/article/10887?productLineId=1

PLM云 -- 基于标准业务系统的二次开发扩展 https://vip.kingdee.com/article/10901?productLineId=1

金蝶云星空BOS二次开发指南 https://vip.kingdee.com/article/94751030918525696?productLineId=1&isKnowledge=2

金蝶云星空数据字典V7.6 https://open.kingdee.com/K3Cloud/WenKu/DocumentView.aspx?docId=102613


PLM.对象启动流程增加自定义校验条件

【应用场景】对象在提交状态的变更中,控制不允许启动流程【案例演示】文档库列表提交状态的变更对象不允许启动流程【实现步骤】1>编写表单...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息