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、如果登录的审批人是部件的创建者才能是部件流程从第一个活动节点进入下一个活动节点;然而登录的审批人不是部件的创建者时候部件监听抛出异常提示
新手记录知识,有什么错误请指点一下。



