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<String> 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;
|
}
|
}
|