开发点
1.后台自动对多个对象发起流程,自动指定签发小组用户。
public void createProcess() throws Exception {
System.out.println("*start run auto create workflow and assign user handler");
TCSession session = (TCSession) AifrcpPlugin.getSessionService().getSession(“com.teamcenter.rac.kernel.TCSession”);
TCComponentTaskTemplateType templateType = (TCComponentTaskTemplateType) session.getTypeComponent(“EPMTaskTemplate”);
String tempName = “A自动发布流程指派用户”;// TCM Release Process
// String tempName = “A报价任务单工作流程”;
TCComponentTaskTemplate template = templateType.find(tempName, 0);// 系统中查找workflow模板
TCComponentProcessType tccomponentprocesstype = (TCComponentProcessType) session.getTypeComponent(“Job”);
InterfaceAIFComponent[] components = AIFUtility.getTargetComponents();
TCComponent component = (TCComponent) components[0];
if(component instanceof TCComponentItemRevision)// 选定对应为rev
{
TCComponentProcess newProcess = (TCComponentProcess) tccomponentprocesstype.create(tempName, “workflowdesc”,
template, new TCComponent[]{component}, new int[] { 1 });//参数2:流程的描述
TCComponentSignoffType signoffType = (TCComponentSignoffType) session.getTypeComponent(“Signoff”);
TCComponentTask[] oneChildren = newProcess.getRootTask().getSubtasks();
TCComponentTask taskSignoffUser = null;
TCComponentTask taskSTemp = null;
for (int i = 0; i < oneChildren.length; i++)
{
taskSTemp = oneChildren[i];
System.out.println(“the name of first layer subtask is:”+taskSTemp.toDisplayString());// 第一层workflow节点名称
if(taskSTemp.getSubtasks()!=null) {
for(int j=0;j<taskSTemp.getSubtasks().length;j++) {
TCComponentTask secondChildren=taskSTemp.getSubtasks()[j];
System.out.println(“the name of second subtask is:”+secondChildren.toDisplayString()+";the taskType is:"+secondChildren.getTaskType());
if(secondChildren.getTaskType().equalsIgnoreCase(“EPMPerformSignoffTask”)) {
// find the signoffTask, I start signoff user
taskSignoffUser=secondChildren;
}
}
}
}
// 此例为只对最后一个签发节点选择用户
TCComponentUser currentUser = session.getUser();
TCComponentUser infodbaUser = currentUser.getTypeComponent().find(“infodba”);
TCComponentGroupMember[] members = new TCComponentGroupMember[2];
members[0] = currentUser.getGroupMembers()[0];
members[1] = currentUser.getGroupMembers()[0];
TCComponentSignoff[] signoffs = new TCComponentSignoff[2];
signoffs[0] = signoffType.create(members[0], TCSignoffOriginType.ADHOC_USER, null);
signoffs[1] = signoffType.create(members[1], TCSignoffOriginType.ADHOC_USER, null);
taskSignoffUser.setRelated(“valid_signoffs”, signoffs);// 签发
taskSignoffUser.setRelated(“signoff_attachments”, signoffs);// 有效签发
// taskSignoffUser.setProperty(“wait_for_all_reviewers”, “1”);// 等待所有审核者
}
}
public void createProcess() throws Exception {
System.out.println("*******start run auto create workflow and assign user handler******");
TCSession session = (TCSession) AifrcpPlugin.getSessionService().getSession("com.teamcenter.rac.kernel.TCSession");
TCComponentTaskTemplateType templateType = (TCComponentTaskTemplateType) session.getTypeComponent("EPMTaskTemplate");
String tempName = "A自动发布流程指派用户";// TCM Release Process
// String tempName = "A报价任务单工作流程";
TCComponentTaskTemplate template = templateType.find(tempName, 0);// 系统中查找workflow模板
TCComponentProcessType tccomponentprocesstype = (TCComponentProcessType) session.getTypeComponent("Job");
InterfaceAIFComponent[] components = AIFUtility.getTargetComponents();
TCComponent component = (TCComponent) components[0];
if(component instanceof TCComponentItemRevision)// 选定对应为rev
{
TCComponentProcess newProcess = (TCComponentProcess) tccomponentprocesstype.create(tempName, "workflowdesc",
template, new TCComponent[]{component}, new int[] { 1 });//参数2:流程的描述
TCComponentSignoffType signoffType = (TCComponentSignoffType) session.getTypeComponent("Signoff");
TCComponentTask[] oneChildren = newProcess.getRootTask().getSubtasks();
TCComponentTask taskSignoffUser = null;
TCComponentTask taskSTemp = null;
for (int i = 0; i < oneChildren.length; i++)
{
taskSTemp = oneChildren[i];
System.out.println("the name of first layer subtask is:"+taskSTemp.toDisplayString());// 第一层workflow节点名称
if(taskSTemp.getSubtasks()!=null) {
for(int j=0;j<taskSTemp.getSubtasks().length;j++) {
TCComponentTask secondChildren=taskSTemp.getSubtasks()[j];
System.out.println("the name of second subtask is:"+secondChildren.toDisplayString()+";the taskType is:"+secondChildren.getTaskType());
if(secondChildren.getTaskType().equalsIgnoreCase("EPMPerformSignoffTask")) {
// find the signoffTask, I start signoff user
taskSignoffUser=secondChildren;
}
}
}
}
// 此例为只对最后一个签发节点选择用户
TCComponentUser currentUser = session.getUser();
TCComponentUser infodbaUser = currentUser.getTypeComponent().find("infodba");
TCComponentGroupMember[] members = new TCComponentGroupMember[2];
members[0] = currentUser.getGroupMembers()[0];
members[1] = currentUser.getGroupMembers()[0];
TCComponentSignoff[] signoffs = new TCComponentSignoff[2];
signoffs[0] = signoffType.create(members[0], TCSignoffOriginType.ADHOC_USER, null);
signoffs[1] = signoffType.create(members[1], TCSignoffOriginType.ADHOC_USER, null);
taskSignoffUser.setRelated("valid_signoffs", signoffs);// 签发
taskSignoffUser.setRelated("signoff_attachments", signoffs);// 有效签发
// taskSignoffUser.setProperty("wait_for_all_reviewers", "1");// 等待所有审核者
}
}