栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Windchill(3)新建部件流程第一个活动节点校验提交者必须是部件的创建者。部件检出提示异常

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Windchill(3)新建部件流程第一个活动节点校验提交者必须是部件的创建者。部件检出提示异常

1、思路:登录的审批人必须是部件的创建者才能是部件流程从第一个活动节点进入下一个活动节点;然而登录的审批人不是部件的创建者时候部件监听抛出异常提示

2、编写verify.java 并编译放入codebasecomcatlpartmonitor下

package com.catl.part.monitor;

import wt.fc.ObjectReference;
import wt.fc.QueryResult;
import wt.org.WTPrincipal;
import wt.org.WTPrincipalReference;
import wt.part.WTPart;
import wt.query.SearchCondition;
import wt.util.WTAttributeNameIfc;
import wt.util.WTException;
import wt.workflow.work.WfAssignedActivity;
import wt.workflow.work.WorkItem;

public class verify {
    public void verify(ObjectReference self) throws WTException {
            WTPrincipal currentUser = wt.session.SessionHelper.getPrincipal();//获取当前用户
            WfAssignedActivity acivity = (WfAssignedActivity) self.getObject();//获取当前用户被指定的活动
            QueryResult workItems = getWorkItems(acivity, null);//获取当前所有工作任务
            while (workItems.hasMoreElements()) {//便利工作任务
                WorkItem wi = (WorkItem) workItems.nextElement();//接收到当前便利到的工作任务
                long id = wt.fc.PersistenceHelper.getObjectIdentifier(wi).getId();//获取到当前任务的id

                WTPart wtParts = (WTPart) wi.getPrimaryBusinessObject().getObject();
                String createName=wtParts.getCreatorName();
                System.out.println("创建者名称="+createName);

                //获取审批人
                WTPrincipalReference wpr= wi.getOwnership().getOwner();
                String ownerName=wpr.getName();
                System.out.println("审批人="+ownerName);

                if(!ownerName.equals(createName)){
                    throw new WTException("审批不通过");
                }

            }
        }

        public static QueryResult getWorkItems(WfAssignedActivity activity, String role) throws WTException {
            wt.query.QuerySpec qs = new wt.query.QuerySpec(WorkItem.class);
            qs.appendWhere(
                    new SearchCondition(WorkItem.class, WorkItem.SOURCE + "." + WTAttributeNameIfc.REF_OBJECT_ID,
                            SearchCondition.EQUAL, activity.getPersistInfo().getObjectIdentifier().getId()),
                    new int[] { 0 });
            qs.appendAnd();
            qs.appendWhere(new SearchCondition(WorkItem.class, WorkItem.SOURCE + "." + WTAttributeNameIfc.REF_CLASSNAME,
                    SearchCondition.EQUAL, activity.getClass().getName()), new int[] { 0 });

            if (role != null) {
                qs.appendAnd();
                qs.appendOpenParen();
                qs.appendWhere(new SearchCondition(WorkItem.class, WorkItem.ROLE, SearchCondition.EQUAL, role),
                        new int[] { 0 });
                qs.appendCloseParen();
            }
            return  wt.fc.PersistenceHelper.manager.find(qs);
        }
    }


3、工作流模板在第一个节点中转变加入完成任务,转变条件调用

com.catl.part.monitor.verify.verify v=new com.catl.part.monitor.verify.verify();
v.verify(self);

4、生命周期根据工作流模板写一个

5、部件重新分配生命周期

6、如果登录的审批人是部件的创建者才能是部件流程从第一个活动节点进入下一个活动节点;然而登录的审批人不是部件的创建者时候部件监听抛出异常提示

新手记录知识,有什么错误请指点一下。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821101.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号