package org.fireflow.service.mock;
import java.util.Date;
import java.util.Map;
import org.fireflow.client.WorkflowSession;
import org.fireflow.client.impl.WorkflowSessionLocalImpl;
import org.fireflow.engine.context.RuntimeContext;
import org.fireflow.engine.entity.repository.ProcessDescriptor;
import org.fireflow.engine.entity.runtime.ActivityInstance;
import org.fireflow.engine.entity.runtime.ProcessInstance;
import org.fireflow.engine.entity.runtime.ProcessInstanceState;
import org.fireflow.engine.entity.runtime.impl.ProcessInstanceImpl;
import org.fireflow.engine.exception.InvalidOperationException;
import org.fireflow.engine.exception.WorkflowProcessNotFoundException;
import org.fireflow.engine.modules.calendar.CalendarService;
import org.fireflow.engine.modules.instancemanager.event.ProcessInstanceEventTrigger;
import org.fireflow.engine.modules.instancemanager.impl.AbsProcessInstanceManager;
import org.fireflow.engine.modules.ousystem.User;
import org.fireflow.model.InvalidModelException;
public class ProcessInstanceManagerMock extends AbsProcessInstanceManager {
public ProcessInstance createProcessInstance(WorkflowSession session,
Object workflowProcess, String processEntryId,
ProcessDescriptor descriptor,
ActivityInstance parentActivityInstance) {
// WorkflowProcess fpdl20Process = (WorkflowProcess)workflowProcess;
WorkflowSessionLocalImpl sessionLocal = (WorkflowSessionLocalImpl)session;
RuntimeContext context = sessionLocal.getRuntimeContext();
CalendarService calendarService = context.getDefaultEngineModule(CalendarService.class);
User u = sessionLocal.getCurrentUser();
ProcessInstanceImpl processInstance = new ProcessInstanceImpl();
processInstance.setProcessId(descriptor.getProcessId());
processInstance.setVersion(descriptor.getVersion());
processInstance.setProcessType(descriptor.getProcessType());
// processInstance.setBizId(bizId);
processInstance.setProcessName(descriptor.getName());
String displayName = descriptor.getDisplayName();
processInstance.setProcessDisplayName((displayName==null||displayName.trim().equals(""))?descriptor.getName():displayName);
// processInstance.setBizCategory(fpdl20Process.getBizCategory());
processInstance.setState(ProcessInstanceState.INITIALIZED);
Date now = calendarService.getSysDate();
processInstance.setCreatedTime(now);
processInstance.setCreatorId(u.getId());
processInstance.setCreatorName(u.getName());
processInstance.setCreatorDeptId(u.getDeptId());
processInstance.setCreatorDeptName(u.getDeptName());
if (parentActivityInstance!=null){
processInstance.setParentActivityInstanceId(parentActivityInstance.getId());
processInstance.setParentProcessInstanceId(parentActivityInstance.getProcessInstanceId());
processInstance.setParentScopeId(parentActivityInstance.getScopeId());
}
// if (fpdl20Process.getDuration()!=null && fpdl20Process.getDuration().getValue()>0){
// Date expiredDate = calendarService.dateAfter(now, fpdl20Process.getDuration());
// processInstance.setExpiredTime(expiredDate);
// }
// processInstance.setExpiredTime(time);
return processInstance;
}
public void fireProcessInstanceEvent(WorkflowSession session,
ProcessInstance processInstance, Object workflowElement,
ProcessInstanceEventTrigger eventType) {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see org.fireflow.engine.modules.instancemanager.impl.AbsProcessInstanceManager#initProcessInstanceVariables(org.fireflow.engine.entity.runtime.ProcessInstance, java.lang.Object, java.util.Map)
*/
@Override
protected void initProcessInstanceVariables(
ProcessInstance processInstance, Object subflow,
Map<String, Object> initVariables) {
// TODO Auto-generated method stub
}
}