package com.vci.server.workflow.server.service; import java.util.Set; import org.jbpm.api.task.Task; import com.vci.corba.common.VCIError; import com.vci.server.base.persistence.dao.HibernateSessionFactory; import com.vci.server.workflow.common.resouce.WorkflowProperties; import com.vci.server.workflow.server.JbpmEngine; import com.vci.server.workflow.server.interfaces.PLMWorkItemInterface; public class WorkFlowService { private static WorkFlowService instance = null; private PLMWorkItemInterface pwService = null; private WorkFlowService() { } public static WorkFlowService getInstance() { if (instance == null) { instance = new WorkFlowService(); } return instance; } /** * 获取当前执行task所在流程实例关联的对象 * * @param task * @return */ public Object getWorkFlowRelatedObjs(Task task) { Object objs = JbpmEngine.getProcessEngine().getTaskService().getVariable(task.getId(), "objId"); return objs; } private String getWorkitemHandlerClassName() { String workitemClass = WorkflowProperties.getStringProperty("workflow.plmworkitem"); return workitemClass; } public void saveForComplete_v1(String[] userNames, String[] objectOids, Task task, String btmType, String btmDesc, String processName, String nextTaskId, int m, String[] objectProperty, String[][] objectPropertyValues) throws VCIError, InstantiationException, IllegalAccessException, ClassNotFoundException { Object obj = JbpmEngine.getProcessEngine().getTaskService().getVariable(task.getId(), "objectPropertyValues"); if (obj != null && obj instanceof String[][]) { objectPropertyValues = (String[][]) obj; } String userName = userNames[m]; getWorkItemService().saveForComplete_v1(userName, objectOids, task, btmType, btmDesc, processName, nextTaskId, HibernateSessionFactory.getVciSessionInfo().userName, objectProperty, objectPropertyValues); } public void saveForCompleteAndSaveOpinion_v1(String[] userNames, String[] objectOids, Task task, String btmType, String btmDesc, String processName, String nextTaskId, int m, String[] objectProperty, String[][] allObjectPropertyValues, String outcome, String approvalNote, Set selecedOidSet) throws VCIError, InstantiationException, IllegalAccessException, ClassNotFoundException { String userName = userNames[m]; getWorkItemService().saveForCompleteAndSaveOpinion_v1(userName, objectOids, task, btmType, btmDesc, processName, nextTaskId, HibernateSessionFactory.getVciSessionInfo().userName, objectProperty, allObjectPropertyValues, outcome, approvalNote, selecedOidSet); } private PLMWorkItemInterface getWorkItemService() throws VCIError { if (pwService != null) { return pwService; } try { pwService = (PLMWorkItemInterface) (Class.forName(getWorkitemHandlerClassName()).newInstance()); } catch (Throwable e) { e.printStackTrace(); throw new VCIError("", new String[] { e.getMessage() }); } return pwService; } }