blob: e1c1ca242fe25d550d0898ac6d747ebab6c82196 [file] [log] [blame]
/**
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
///*
// *
// * Licensed to the Apache Software Foundation (ASF) under one
// * or more contributor license agreements. See the NOTICE file
// * distributed with this work for additional information
// * regarding copyright ownership. The ASF licenses this file
// * to you 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 org.apache.airavata.workflow.model.ode;
//
//import java.util.Iterator;
//import java.util.LinkedList;
//import java.util.Map;
//
//import javax.xml.namespace.QName;
//
//import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
//import org.apache.airavata.common.utils.StringUtil;
//import org.gpel.model.GpelActivity;
//import org.gpel.model.GpelAssign;
//import org.gpel.model.GpelAssignCopy;
//import org.gpel.model.GpelAssignCopyFrom;
//import org.gpel.model.GpelAssignCopyTo;
//import org.gpel.model.GpelElse;
//import org.gpel.model.GpelElseIf;
//import org.gpel.model.GpelFlow;
//import org.gpel.model.GpelIf;
//import org.gpel.model.GpelInvoke;
//import org.gpel.model.GpelProcess;
//import org.gpel.model.GpelReceive;
//import org.gpel.model.GpelReply;
//import org.gpel.model.GpelSequence;
//import org.gpel.model.GpelVariable;
//import org.gpel.model.GpelVariablesContainer;
//import org.xmlpull.infoset.XmlElement;
//import org.xmlpull.infoset.XmlNamespace;
//
//import xsul5.XmlConstants;
//import xsul5.wsdl.WsdlDefinitions;
//import xsul5.wsdl.WsdlMessage;
//import xsul5.wsdl.WsdlMessagePart;
//import xsul5.wsdl.WsdlPortType;
//import xsul5.wsdl.WsdlPortTypeInput;
//import xsul5.wsdl.WsdlPortTypeOperation;
//
//public class ODEBPELTransformer {
//
// /**
// * KEEP_SRC_ELEMENT_NAME_STR
// */
// private static final String KEEP_SRC_ELEMENT_NAME_STR = "keepSrcElementName";
// /**
// * WORKFLOW_INPUT_STR
// */
// private static final String WORKFLOW_INPUT_STR = "WorkflowInput";
// /**
// * LEAD_HEADER_STR
// */
// private static final String LEAD_HEADER_STR = "leadHeader";
// /**
// * NO_STR
// */
// private static final String NO_STR = "no";
// /**
// * VALIDATE_STR
// */
// private static final String VALIDATE_STR = "validate";
// /**
// * INPUT_VARIABLE_STR
// */
// private static final String INPUT_VARIABLE_STR = "inputVariable";
// /**
// * VARIABLE_STR
// */
// private static final String VARIABLE_STR = "variable";
// /**
// * PART_STR
// */
// private static final String PART_STR = "part";
// /**
// * OPERATION_STR
// */
// private static final String OPERATION_STR = "operation";
// /**
// * PORT_TYPE_STR
// */
// private static final String PORT_TYPE_STR = "portType";
// /**
// * QUERY_STR
// */
// private static final String QUERY_STR = "query";
// /**
// * YES_STR
// */
// private static final String YES_STR = "yes";
// /**
// * CREATE_INSTANCE_STR
// */
// private static final String CREATE_INSTANCE_STR = "createInstance";
// /**
// * NAME
// */
// private static final String NAME = "name";
//
// public ODEBPELTransformer() {
// }
//
// public void generateODEBPEL(GpelProcess gpelProcess, String workflowName, WsdlDefinitions workflowWSDL,
// Map<String, WsdlDefinitions> wsdls) {
//
// XmlElement bpelXml = gpelProcess.xml();
// if (null != bpelXml.attributeValue(NAME)) {
// // already done
// return;
// }
//
// gpelProcess.xml().setAttributeValue(NAME, StringUtil.convertToJavaIdentifier(workflowName));
// GpelActivity activity = gpelProcess.getActivity();
//
// addImports(gpelProcess, workflowWSDL, wsdls);
//
// if (activity instanceof GpelSequence) {
//
// LinkedList<GpelAssign> result = new LinkedList<GpelAssign>();
//
// formatXpathFromValueCopy(((GpelSequence) activity).activities().iterator());
// evaluateFlowAndSequenceForAddingInits(wsdls, workflowWSDL, ((GpelSequence) activity).activities()
// .iterator(), result);
// addVariableManipulationBeforeInvoke(((GpelSequence) activity).activities().iterator());
// findReplaceAssign(((GpelSequence) activity).activities().iterator());
// Iterator<GpelActivity> iterator = ((GpelSequence) activity).activities().iterator();
// while (iterator.hasNext()) {
// GpelActivity next = iterator.next();
// if (next instanceof GpelReceive) {
// ((GpelReceive) next).xml().setAttributeValue(CREATE_INSTANCE_STR, YES_STR);
// break;
// }
// }
//
// for (GpelAssign gpelAssignCopy : result) {
// // second element because the receive would be the first element
// activity.xml().addChild(1, gpelAssignCopy.xml());
// }
// }
// LinkedList<GpelInvoke> invokeList = new LinkedList<GpelInvoke>();
//
// replaceVariableMessageTypeValuesWithMessageNameInsteadOfPortType(gpelProcess, wsdls, activity, invokeList);
//
// }
//
// private void replaceVariableMessageTypeValuesWithMessageNameInsteadOfPortType(GpelProcess gpelProcess,
// Map<String, WsdlDefinitions> wsdls, GpelActivity activity, LinkedList<GpelInvoke> invokeList) {
// if (isSequence(activity)) {
// findInvokes(activity, invokeList);
// GpelVariablesContainer variables = gpelProcess.getVariables();
// for (GpelInvoke gpelInvoke : invokeList) {
// String variable = gpelInvoke.getInputVariableName();
// String opName = gpelInvoke.getOperationNcName();
// QName portType = gpelInvoke.getPortTypeQName();
// GpelVariable gpelVar = findVariable(variables, variable);
// QName messageQname = findMessage(gpelProcess, portType, opName, true, wsdls);
// String nsPrefix = findNamespacePrefix(gpelProcess, messageQname);
// gpelVar.setMessageTypeQName(new QName(messageQname.getNamespaceURI(), messageQname.getLocalPart(),
// nsPrefix));
//
// variable = gpelInvoke.gelOutputVariableName();
// gpelVar = findVariable(variables, variable);
// messageQname = findMessage(gpelProcess, portType, opName, false, wsdls);
// nsPrefix = findNamespacePrefix(gpelProcess, messageQname);
// gpelVar.setMessageTypeQName(new QName(messageQname.getNamespaceURI(), messageQname.getLocalPart(),
// nsPrefix));
// }
//
// }
// }
//
// /**
// * @param gpelProcess
// * @param messageQname
// * @return
// */
// private String findNamespacePrefix(GpelProcess gpelProcess, QName messageQname) {
// Iterator<XmlNamespace> iterator = gpelProcess.xml().namespaces().iterator();
// while (iterator.hasNext()) {
// XmlNamespace xmlNamespace = (XmlNamespace) iterator.next();
// if (xmlNamespace.getName().equals(messageQname.getNamespaceURI())) {
// return xmlNamespace.getPrefix();
// }
// }
//
// throw new WorkflowRuntimeException("Cannot locate the Namespace for Qname:" + messageQname + " in the BPEL");
// }
//
// /**
// * @param portType
// * @param opName
// * @param b
// */
// private QName findMessage(GpelProcess gpelProcess, QName portType, String opName, boolean input,
// Map<String, WsdlDefinitions> wsdls) {
// Iterator<String> iterator = wsdls.keySet().iterator();
// while (iterator.hasNext()) {
// String key = (String) iterator.next();
// WsdlDefinitions wsdlDefinitions = wsdls.get(key);
// WsdlPortType pType = wsdlDefinitions.getPortType(portType.getLocalPart());
// WsdlPortTypeOperation operation = null;
// if (null != pType && null != (operation = pType.getOperation(opName))) {
//
// if (input) {
// WsdlPortTypeInput messageRef = operation.getInput();
// if (null != messageRef && null != messageRef.getMessage()) {
// WsdlMessage message = wsdlDefinitions.getMessage(messageRef.getMessage().getLocalPart());
// if (null != message) {
// return new QName(wsdlDefinitions.getTargetNamespace(), message.getName(), key);
// }
// }
// } else {
// xsul5.wsdl.WsdlPortTypeOutput messageRef = operation.getOutput();
// if (null != messageRef && null != messageRef.getMessage()) {
// WsdlMessage message = wsdlDefinitions.getMessage(messageRef.getMessage().getLocalPart());
// if (null != message) {
// return new QName(wsdlDefinitions.getTargetNamespace(), message.getName(), key);
// }
// }
// }
//
// }
// }
// throw new WorkflowRuntimeException("Unable to find the Message for the PortType " + portType + " operation:"
// + opName);
// }
//
// private GpelVariable findVariable(GpelVariablesContainer variables, String variable) {
// Iterator<GpelVariable> iterator = variables.variables().iterator();
//
// while (iterator.hasNext()) {
// GpelVariable gpelVariable = iterator.next();
// if (variable.equals(gpelVariable.getName())) {
// return gpelVariable;
// }
// }
// throw new WorkflowRuntimeException("Unable to fine the variable :" + variable + " in the BPEL variables "
// + variables);
// }
//
// /**
// * @param invokeList
// */
// private void findInvokes(GpelActivity activity, LinkedList<GpelInvoke> invokeList) {
// if (isFlow(activity)) {
// Iterator<GpelActivity> iterator = ((GpelFlow) activity).activities().iterator();
// findInvokes(iterator, invokeList);
//
// } else if (activity instanceof GpelSequence) {
// Iterator<GpelActivity> iterator = ((GpelSequence) activity).activities().iterator();
// findInvokes(iterator, invokeList);
// } else if (activity instanceof GpelIf) {
// Iterator<GpelActivity> iterator = ((GpelIf) activity).activities().iterator();
// findInvokes(iterator, invokeList);
// iterator = ((GpelIf) activity).getElse().activities().iterator();
// findInvokes(iterator, invokeList);
// }
//
// }
//
// /**
// * @param invokeList
// */
// private void findInvokes(Iterator<GpelActivity> iterator, LinkedList<GpelInvoke> invokeList) {
// while (iterator.hasNext()) {
// GpelActivity next = iterator.next();
// if (isSequence(next) || isFlow(next) || isIf(next)) {
// findInvokes(next, invokeList);
// } else if (isInvoke(next)) {
// invokeList.add((GpelInvoke) next);
// }
// }
// }
//
// /**
// *
// */
// private void addImports(GpelProcess process, WsdlDefinitions workflowWSDL, Map<String, WsdlDefinitions> wsdls) {
// Iterator<String> iterator = wsdls.keySet().iterator();
// while (iterator.hasNext()) {
// String id = iterator.next();
// WsdlDefinitions wsdl = wsdls.get(id);
// XmlElement importElement = process.xml().newElement(process.xml().getNamespace(), "import");
// importElement.setAttributeValue("importType", "http://schemas.xmlsoap.org/wsdl/");
// importElement.setAttributeValue("location", wsdl.xml().attributeValue("name") + ".wsdl");
// importElement.setAttributeValue("namespace", wsdl.getTargetNamespace());
// process.xml().addChild(0, importElement);
//
// }
//
// XmlElement importElement = process.xml().newElement(process.xml().getNamespace(), "import");
// importElement.setAttributeValue("importType", "http://schemas.xmlsoap.org/wsdl/");
//
// importElement.setAttributeValue("location", workflowWSDL.xml().attributeValue("name") + ".wsdl");
// importElement.setAttributeValue("namespace", workflowWSDL.getTargetNamespace());
// process.xml().addChild(0, importElement);
//
// process.xml().declareNamespace(
// XmlConstants.BUILDER.newNamespace("leadcntx",
// "http://lead.extreme.indiana.edu/namespaces/2005/10/lead-context-header"));
//
// }
//
// private void findReplaceAssign(GpelActivity activity) {
// if (isFlow(activity)) {
// Iterator<GpelActivity> iterator = ((GpelFlow) activity).activities().iterator();
// findReplaceAssign(iterator);
//
// } else if (activity instanceof GpelSequence) {
// Iterator<GpelActivity> iterator = ((GpelSequence) activity).activities().iterator();
// findReplaceAssign(iterator);
// }
// }
//
// private void findReplaceAssign(Iterator<GpelActivity> iterator) {
// while (iterator.hasNext()) {
// GpelActivity next = iterator.next();
// if (isSequence(next) || isFlow(next)) {
// findReplaceAssign(next);
// } else if (isAssign(next)) {
// GpelAssign assign = (GpelAssign) next;
// Iterator<GpelAssignCopy> itr = assign.copyOperations().iterator();
// while (itr.hasNext()) {
// GpelAssignCopy copy = itr.next();
// String query = copy.getFrom().xml().attributeValue(QUERY_STR);
// if (query != null) {
// copy.getFrom().xml().addElement(copy.getFrom().xml().getNamespace(), QUERY_STR)
// .addChild("<![CDATA[" + query + "]]>");
// }
// query = copy.getTo().xml().attributeValue(QUERY_STR);
// if (query != null) {
// copy.getTo().xml().addElement(copy.getFrom().xml().getNamespace(), QUERY_STR)
// .addChild("<![CDATA[" + query + "]]>");
// }
// }
// }
// }
// }
//
// private void formatXpathFromValueCopy(GpelActivity activity) {
// if (isFlow(activity)) {
// Iterator<GpelActivity> iterator = ((GpelFlow) activity).activities().iterator();
// formatXpathFromValueCopy(iterator);
//
// } else if (activity instanceof GpelSequence) {
// Iterator<GpelActivity> iterator = ((GpelSequence) activity).activities().iterator();
// formatXpathFromValueCopy(iterator);
// }
// }
//
// private void formatXpathFromValueCopy(Iterator<GpelActivity> iterator) {
// while (iterator.hasNext()) {
// GpelActivity next = iterator.next();
// if (isSequence(next) || isFlow(next)) {
// formatXpathFromValueCopy(next);
// } else if (isAssign(next)) {
// GpelAssign assign = (GpelAssign) next;
// Iterator<GpelAssignCopy> itr = assign.copyOperations().iterator();
// while (itr.hasNext()) {
// GpelAssignCopy copy = itr.next();
// String query = copy.getFrom().xml().attributeValue(QUERY_STR);
// XmlElement copyElmt = copy.getFrom().xml();
// // remove if attribute is found earlier
// if (null != query) {
// copyElmt.removeAttribute(copyElmt.attribute(QUERY_STR));
// copyElmt.setAttributeValue(QUERY_STR, "/" + extractDataType(query));
// }
//
// query = copy.getTo().xml().attributeValue(QUERY_STR);
// XmlElement toElmt = copy.getTo().xml();
// // remove if attribute is found earlier
// if (null != query) {
// toElmt.removeAttribute(toElmt.attribute(QUERY_STR));
// toElmt.setAttributeValue(QUERY_STR, "/" + extractDataType(query));
// }
//
// }
// }
// }
// }
//
// private void evaluateFlowAndSequenceForAddingInits(Map<String, WsdlDefinitions> wsdls,
// WsdlDefinitions workflowWSDL, GpelActivity activity, LinkedList<GpelAssign> list) {
// if (isFlow(activity)) {
// Iterator<GpelActivity> iterator = ((GpelFlow) activity).activities().iterator();
// evaluateFlowAndSequenceForAddingInits(wsdls, workflowWSDL, iterator, list);
//
// } else if (activity instanceof GpelSequence) {
// Iterator<GpelActivity> iterator = ((GpelSequence) activity).activities().iterator();
// evaluateFlowAndSequenceForAddingInits(wsdls, workflowWSDL, iterator, list);
// }
// }
//
// private void evaluateFlowAndSequenceForAddingInits(Map<String, WsdlDefinitions> wsdls,
// WsdlDefinitions workflowWSDL, Iterator<GpelActivity> iterator, LinkedList<GpelAssign> list) {
// GpelActivity last = null;
// while (iterator.hasNext()) {
// GpelActivity next = iterator.next();
// if (isSequence(next) || isFlow(next)) {
// evaluateFlowAndSequenceForAddingInits(wsdls, workflowWSDL, next, list);
// } else if (isInvoke(next) || isReply(next)) {
// if (last == null || !isAssign(last)) {
// throw new WorkflowRuntimeException("Assign activity not found for the Invoke "
// + next.xmlStringPretty());
// }
//
// GpelAssign assign = (GpelAssign) last;
// XmlNamespace ns = assign.xml().getNamespace();
//
// XmlElement container = XmlConstants.BUILDER.parseFragmentFromString("<dummyelement></dummyelement>");
//
// String portTypeattr = next.xml().attributeValue(PORT_TYPE_STR);
// String operation = next.xml().attributeValue(OPERATION_STR);
// if (null == portTypeattr || "".equals(portTypeattr)) {
// throw new WorkflowRuntimeException("No Porttype found for Invoke:" + next);
// }
// String portTypeName = portTypeattr.substring(portTypeattr.indexOf(':') + 1);
// String messagePartName = null;
// if (isInvoke(next)) {
// Iterator<String> keys = wsdls.keySet().iterator();
//
// while (keys.hasNext()) {
// String key = keys.next();
// WsdlDefinitions wsdl = wsdls.get(key);
// WsdlPortType portType = wsdl.getPortType(portTypeName);
// if (null != portType) {
// WsdlPortTypeOperation wsdlOperation = portType.getOperation(operation);
// WsdlMessagePart part = wsdl
// .getMessage(wsdlOperation.getInput().getMessage().getLocalPart()).parts()
// .iterator().next();
// XmlElement childElement = container.addElement(part.getElement().getLocalPart());
// Iterator<GpelAssignCopy> copyItr = assign.copyOperations().iterator();
// while (copyItr.hasNext()) {
// GpelAssignCopy copyItm = copyItr.next();
// childElement.addElement(getElementName(copyItm.getTo().getQuery()));
// if (messagePartName == null) {
// messagePartName = copyItm.getTo().xml().attributeValue(PART_STR);
// }
// }
// break;
// }
// }
// } else {
// // reply
//
// WsdlPortType portType = workflowWSDL.getPortType(portTypeName);
// if (null != portType) {
// WsdlPortTypeOperation wsdlOperation = portType.getOperation(operation);
// WsdlMessagePart part = workflowWSDL
// .getMessage(wsdlOperation.getOutput().getMessage().getLocalPart()).parts().iterator()
// .next();
// XmlElement childElement = container.addElement(part.getElement().getLocalPart());
// Iterator<GpelAssignCopy> copyItr = assign.copyOperations().iterator();
// while (copyItr.hasNext()) {
// GpelAssignCopy copyItm = copyItr.next();
// childElement.addElement(getElementName(copyItm.getTo().getQuery()));
// if (messagePartName == null) {
// messagePartName = copyItm.getTo().xml().attributeValue(PART_STR);
// }
// }
// }
// }
//
// GpelAssignCopyFrom from = new GpelAssignCopyFrom(ns);
// from.setLiteral(container);
//
// GpelAssignCopyTo to = new GpelAssignCopyTo(ns);
// to.xml().setAttributeValue(PART_STR, messagePartName);
// if (isInvoke(next)) {
// to.xml().setAttributeValue(VARIABLE_STR, next.xml().attributeValue(INPUT_VARIABLE_STR));
// } else {
// to.xml().setAttributeValue(VARIABLE_STR, next.xml().attributeValue(VARIABLE_STR));
// }
// GpelAssignCopy newAssign = new GpelAssignCopy(ns, from, to);
// newAssign.xml().setAttributeValue(VALIDATE_STR, NO_STR);
// GpelAssign gpelAssign = new GpelAssign(ns, newAssign);
// list.add(gpelAssign);
//
// }
// last = next;
// }
// }
//
// /**
// * @param query
// * @return
// */
// private String getElementName(String query) {
// int index = query.indexOf('/');
// if (-1 != index) {
// return query.substring(index + 1);
// }
// return query;
// }
//
// private void addVariableManipulationBeforeInvoke(GpelActivity activity) {
//
// if (isFlow(activity)) {
// Iterator<GpelActivity> iterator = ((GpelFlow) activity).activities().iterator();
// addVariableManipulationBeforeInvoke(iterator);
//
// } else if (activity instanceof GpelSequence) {
// Iterator<GpelActivity> iterator = ((GpelSequence) activity).activities().iterator();
// addVariableManipulationBeforeInvoke(iterator);
// }
// // else do nothing
//
// }
//
// private void addVariableManipulationBeforeInvoke(Iterator<GpelActivity> iterator) {
// GpelActivity last = null;
// while (iterator.hasNext()) {
// GpelActivity next = iterator.next();
// if (isSequence(next) || isFlow(next)) {
// addVariableManipulationBeforeInvoke(next);
// } else if (isInvoke(next)) {
// if (last == null || !isAssign(last)) {
// throw new WorkflowRuntimeException("Assign activity not found for the Invoke" + next.xmlStringPretty());
// }
//
// // we are good and should add the header copy.
// XmlNamespace ns = last.xml().getNamespace();
// GpelAssignCopyFrom headerFrom = new GpelAssignCopyFrom(ns);
// headerFrom.xml().setAttributeValue(PART_STR, LEAD_HEADER_STR);
// headerFrom.xml().setAttributeValue(VARIABLE_STR, WORKFLOW_INPUT_STR);
//
// GpelAssignCopyTo headerTo = new GpelAssignCopyTo(ns);
// headerTo.xml().setAttributeValue(PART_STR, LEAD_HEADER_STR);
// headerTo.xml().setAttributeValue(VARIABLE_STR, next.xml().attributeValue(INPUT_VARIABLE_STR));
// GpelAssignCopy headerCopy = new GpelAssignCopy(ns, headerFrom, headerTo);
// GpelAssign assign = (GpelAssign) last;
// assign.addCopy(headerCopy);
//
// GpelAssignCopyFrom nodeIDFrom = new GpelAssignCopyFrom(ns);
// nodeIDFrom.setLiteral(XmlConstants.BUILDER.parseFragmentFromString("<dummyelement>"
// + next.xml().attributeValue(NAME) + "</dummyelement>"));
// GpelAssignCopyTo nodeIDTo = new GpelAssignCopyTo(ns);
//
// nodeIDTo.xml().setAttributeValue(PART_STR, LEAD_HEADER_STR);
// nodeIDTo.xml().setAttributeValue(VARIABLE_STR, next.xml().attributeValue(INPUT_VARIABLE_STR));
// // TODO is this ok?? what of the query language
// nodeIDTo.setQuery("/leadcntx:workflow-node-id");
//
// GpelAssignCopy nodeIDCopy = new GpelAssignCopy(ns, nodeIDFrom, nodeIDTo);
// nodeIDCopy.xml().setAttributeValue(KEEP_SRC_ELEMENT_NAME_STR, NO_STR);
// assign.addCopy(nodeIDCopy);
//
// GpelAssignCopyFrom timeStepFrom = new GpelAssignCopyFrom(ns);
// timeStepFrom.setLiteral(XmlConstants.BUILDER.parseFragmentFromString("<dummyelement>" + "5"
// + "</dummyelement>"));
// GpelAssignCopyTo timeStepTo = new GpelAssignCopyTo(ns);
// timeStepTo.xml().setAttributeValue(PART_STR, LEAD_HEADER_STR);
// timeStepTo.xml().setAttributeValue(VARIABLE_STR, next.xml().attributeValue(INPUT_VARIABLE_STR));
// // TODO is this ok?? what of the query language
// timeStepTo.setQuery("/leadcntx:workflow-time-step");
//
// GpelAssignCopy timeStepCopy = new GpelAssignCopy(ns, timeStepFrom, timeStepTo);
// timeStepCopy.xml().setAttributeValue(KEEP_SRC_ELEMENT_NAME_STR, NO_STR);
// assign.addCopy(timeStepCopy);
//
// }
// last = next;
// }
// }
//
// /**
// * @param query
// */
// private String extractDataType(String query) {
// int index = query.indexOf(':');
// if (index == -1) {
// throw new WorkflowRuntimeException("Invalid query no : delimeter found " + query);
// }
// String[] split = query.substring(index + 1).trim().split("/");
// if (split.length == 0) {
// throw new WorkflowRuntimeException("Unknown Xpath " + query.substring(index));
// }
// return split[split.length - 1];
// }
//
// private boolean isSequence(GpelActivity activity) {
// return activity instanceof GpelSequence;
// }
//
// private boolean isFlow(GpelActivity activity) {
// return activity instanceof GpelFlow;
// }
//
// private boolean isAssign(GpelActivity activity) {
// return activity instanceof GpelAssign;
// }
//
// private boolean isInvoke(GpelActivity activity) {
// return activity instanceof GpelInvoke;
// }
//
// private boolean isReply(GpelActivity activity) {
// return activity instanceof GpelReply;
// }
//
// private boolean isIf(GpelActivity activity) {
// return activity instanceof GpelIf;
// }
//
// private boolean isElse(GpelActivity activity) {
// return activity instanceof GpelElse;
// }
//
// private boolean isElseIf(GpelActivity activity) {
// return activity instanceof GpelElseIf;
// }
//}