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

com.jk.services.client.workflow.JKWorkflowServiceClient Maven / Gradle / Ivy

There is a newer version: 7.0.0-M7
Show newest version
package com.jk.services.client.workflow;

import java.util.List;

import com.jk.core.config.JKConstants;
import com.jk.core.http.JKHttpStatus;
import com.jk.core.util.JK;
import com.jk.core.util.JKObjectUtil;
import com.jk.services.client.JKMatureServiceClient;
import com.jk.services.client.JKServiceClientException;
import com.jk.services.client.workflow.models.NewPayloadRequestModel;
import com.jk.services.client.workflow.models.PayloadModel;
import com.jk.services.client.workflow.models.SystemModel;
import com.jk.services.client.workflow.models.WorkflowEntityModel;

/**
 * @author Jalal
 */
public class JKWorkflowServiceClient extends JKMatureServiceClient {
	/**
	 * @author Jalal
	 */
	public enum UserAction {
		CREATE, MODIFY, DELETE
	}

	/**
	 * 
	 * @author Jalal
	 *
	 */
	public enum WorkflowAction {
		APPROVE, REJECT
	}

	@Override
	/**
	 * 
	 */
	public String getServiceUrlPropertyName() {
		return JKConstants.Microservices.WORKFLOW_URL;
	}

	@Override
	public NewPayloadRequestModel insert(NewPayloadRequestModel model) {
		String json = callJsonWithPost("/services/payloads/", model);
		return (NewPayloadRequestModel) JKObjectUtil.jsonToObject(json, model.getClass());
	}

	/**
	 * @param code
	 * @return
	 */
	public SystemModel getSystem(String code) {
		return callSingleJson(SystemModel.class, "/services/workflow/" + code);
	}

	/**
	 * @param system
	 * @param code
	 * @return
	 */
	public WorkflowEntityModel getWorkflowEntity(String system, String code, String className) {
		try {
			return callSingleJson(WorkflowEntityModel.class, String.format("/services/workflow/%s/%s/%s", system, code,className));
		} catch (JKServiceClientException e) {
			if (e.isNotFound() && e.getResponseMessage().contains("Entity with name")) {
				return null;
			}
			throw e;
		}
	}

	/**
	 * @param system
	 * @return
	 */
	public List getPayLoads(String system, String role) {
		List list = callJsonAsListOfObjects(PayloadModel.class,
				"/services/payloads/" + system + "/" + role);
		
		return list;
	}

	/**
	 * @param system
	 * @return
	 */
	public List getPayLoads(String system, String entity, String role) {
		List list = callJsonAsListOfObjects(PayloadModel.class,
				"/services/payloads/" + system + "/" + entity + "/" + role);
		return list;
	}

	/**
	 * 
	 * @param payloadId
	 * @return
	 */
	public String processWorkflow(int payloadId, String userAction) {
		return callJsonWithPut(String.format("/services/payloads/%s/%s", payloadId, userAction), null);
	}

	/**
	 * @param payloadId
	 * @return
	 */
	public String approveWorkflowEntity(Integer payloadId) {
		return processWorkflow(payloadId, WorkflowAction.APPROVE.toString());
	}

	/**
	 * @param payloadId
	 * @return
	 */
	public String rejectWorkflowEntity(Integer payloadId) {
		return processWorkflow(payloadId, WorkflowAction.REJECT.toString());
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		JKWorkflowServiceClient c = new JKWorkflowServiceClient();
		NewPayloadRequestModel p = c.insert(new NewPayloadRequestModel().withEntity("Contacts")
				.withAction(UserAction.CREATE.toString()).withBody("{'name': 'Ata'}").withSystem("CMON"));
		List payLoads = c.getPayLoads("CMON","");

		System.out.println("......");
		for (PayloadModel payloadModel : payLoads) {
			if (payloadModel.isActive()) {
				JK.print(payloadModel);
			}
		}
		String action = c.rejectWorkflowEntity(p.getId());
		System.out.println("Next action: " + action);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy