All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nz.co.senanque.workflow.WorkflowManagerMock Maven / Gradle / Ivy

There is a newer version: 2.4.0
Show newest version
/*******************************************************************************
 * Copyright (c)2014 Prometheus Consulting
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *******************************************************************************/
package nz.co.senanque.workflow;

import java.util.Collection;
import java.util.Map;
import java.util.StringTokenizer;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

import nz.co.senanque.forms.WorkflowForm;
import nz.co.senanque.messaging.MessageMapper;
import nz.co.senanque.messaging.MessageSender;
import nz.co.senanque.process.instances.ComputeType;
import nz.co.senanque.process.instances.ProcessDefinition;
import nz.co.senanque.process.instances.TaskBase;
import nz.co.senanque.schemaparser.FieldDescriptor;
import nz.co.senanque.validationengine.ValidationEngine;
import nz.co.senanque.workflow.instances.Audit;
import nz.co.senanque.workflow.instances.ProcessInstance;
import nz.co.senanque.workflow.instances.TaskStatus;

import org.apache.commons.lang.NotImplementedException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.messaging.Message;

/**
 * Used as a mock for the workflow manager. It is used in tests but it is also used by the plugin parser which
 * only needs to validate rather than actually run a process.
 * 
 * @author Roger Parkinson
 *
 */
public class WorkflowManagerMock extends WorkflowManagerAbstract {

	private static final Logger log = LoggerFactory
			.getLogger(WorkflowManagerMock.class);
	
	public WorkflowManagerMock() {
		
	}

	public WorkflowManagerMock(String messageNames, String computeNames) {
		if (messageNames != null) {
			StringTokenizer st = new StringTokenizer(messageNames, ",");
			MessageSender ms = new MessageSender(){

				@Override
				public boolean send(String graph, long correlationId) {
					return false;
				}};
			while (st.hasMoreTokens()) {
				getMessages().put(st.nextToken(), ms);
			}
		}
		if (computeNames != null) {
			ComputeType ct = new ComputeType(){

				@Override
				public void execute(ProcessInstance processInstance,
						String context, Map map) {
				}};
			StringTokenizer st = new StringTokenizer(computeNames, ",");
			while (st.hasMoreTokens()) {
				this.getComputeTypes().put(st.nextToken(), ct);
			}
		}
	}

	@PostConstruct
	public void init() {
		findBeans();
	}
	@PreDestroy
	public void shutdown() {
	}

	@Override
	public Object getField(ProcessInstance processInstance, FieldDescriptor fd) {
		throw new NotImplementedException();
	}

	@Override
	public ProcessInstance launch(String processName, Object o, String comment,
			String bundleName) {
		ProcessDefinition processDefinition = getProcessDefinition(processName);
		if (processDefinition == null) {
			throw new WorkflowException("Failed to find process definition named "+processName);
		}
		ProcessInstance processInstance = new ProcessInstance();
		processInstance.setComment(comment);
		processInstance.setBundleName(bundleName);
		return processInstance;
	}

	@Override
	public void execute(long id) {
		
	}

	@Override
	public void executeDeferredEvent(long deferredEventId) {
	}

	@Override
	public void processMessage(ProcessInstance processInstance,
			Message message, MessageMapper messageMapper) {
	}

	@Override
	public Object getContext(String objectInstance) {
		return null;
	}

	@Override
	public void mergeContext(Object context) {
	}

	@Override
	public String createContextDescriptor(Object o) {
		return null;
	}

	@Override
	protected void tickleParentProcess(ProcessInstance processInstance,
			TaskStatus status) {
	}

	@Override
	protected TaskBase endOfProcessDetected(ProcessInstance processInstance,
			Audit currentAudit) {
		return null;
	}

	@Override
	public long save(WorkflowForm workflowForm) {
		return 0;
	}
	@Override
	public WorkflowForm getLaunchForm(String processName) {
		return null;
	}
	@Override
	public WorkflowForm getCurrentForm(ProcessInstance processInstance) {
		return null;
	}
	@Override
	public long launch(WorkflowForm launchForm, String comment,
			String bundleName) {
		return 0;
	}
	@Override
	public ValidationEngine getValidationEngine() {
		return null;
	}
	@Override
	public Collection getAudits(ProcessInstance processInstance) {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public ProcessInstance refresh(ProcessInstance processInstance) {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public ProcessInstance lockProcessInstance(ProcessInstance processInstance,
			boolean techSupport, String userName) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void finishLaunch(long processId) {
		// TODO Auto-generated method stub
		
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy