package de.codecentric.wundershop.transformers; import org.apache.log4j.Logger; import org.camunda.bpm.BpmPlatform; import org.camunda.bpm.engine.runtime.ProcessInstance; import org.mule.api.MuleMessage; import org.mule.api.transformer.TransformerException; import org.mule.transformer.AbstractMessageTransformer; import de.codecentric.wundershop.process.Constants; import de.codecentric.wundershop.process.ProcessVariableAccessor; public class CreateWorkflowTransformer extends AbstractMessageTransformer { private static Logger logger = Logger.getLogger(CreateWorkflowTransformer.class); @Override public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException { String orderJSON = (String) message.getPayload(); logger.info("#### RECEIVED BESTELLUNG : " + orderJSON); ProcessVariableAccessor variables = new ProcessVariableAccessor(); variables.setBestellungJSON(orderJSON); String orderId = variables.getBestellung().getId(); ProcessInstance processInstance = BpmPlatform.getDefaultProcessEngine().getRuntimeService().startProcessInstanceByKey(Constants.PROCESS_NAME, orderId, variables.asHashMap()); // aligned properties with camel component // https://github.com/camunda/camunda-bpm-camel/blob/master/camunda-bpm-camel-common/src/main/java/org/camunda/bpm/camel/component/CamundaBpmConstants.java message.setOutboundProperty("CamundaBpmProcessInstanceId", processInstance.getId()); return message; } }