You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by rr...@apache.org on 2010/07/01 00:37:25 UTC
svn commit: r959466 - in /ode/trunk: axis2/src/main/wsdl/pmapi.wsdl
bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
utils/src/main/java/org/apache/ode/utils/DOMUtils.java
Author: rr
Date: Wed Jun 30 22:37:24 2010
New Revision: 959466
URL: http://svn.apache.org/viewvc?rev=959466&view=rev
Log:
SetVariable in PMAPI
Modified:
ode/trunk/axis2/src/main/wsdl/pmapi.wsdl
ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
ode/trunk/utils/src/main/java/org/apache/ode/utils/DOMUtils.java
Modified: ode/trunk/axis2/src/main/wsdl/pmapi.wsdl
URL: http://svn.apache.org/viewvc/ode/trunk/axis2/src/main/wsdl/pmapi.wsdl?rev=959466&r1=959465&r2=959466&view=diff
==============================================================================
--- ode/trunk/axis2/src/main/wsdl/pmapi.wsdl (original)
+++ ode/trunk/axis2/src/main/wsdl/pmapi.wsdl Wed Jun 30 22:37:24 2010
@@ -172,6 +172,14 @@
<message name="getVariableInfoOutput">
<part name="scope-info" type="typ:tVariableInfo"/>
</message>
+ <message name="setVariableInput">
+ <part name="sid" type="xsd:string"/>
+ <part name="varName" type="xsd:string"/>
+ <part name="value" type="xsd:anyType"/>
+ </message>
+ <message name="setVariableOutput">
+ <part name="scope-info" type="typ:tVariableInfo"/>
+ </message>
<message name="listEventsInput">
<part name="instanceFilter" type="xsd:string"/>
<part name="eventFilter" type="xsd:string"/>
@@ -340,6 +348,11 @@
<output message="tns:getVariableInfoOutput"/>
<fault name="ManagementFault" message="tns:managementFault"/>
</operation>
+ <operation name="setVariable">
+ <input message="tns:setVariableInput"/>
+ <output message="tns:setVariableOutput"/>
+ <fault name="ManagementFault" message="tns:managementFault"/>
+ </operation>
<operation name="listEvents">
<input message="tns:listEventsInput"/>
<output message="tns:listEventsOutput"/>
@@ -626,6 +639,18 @@
<soap:fault name="ManagementFault" use="literal"/>
</fault>
</operation>
+ <operation name="setVariable">
+ <soap:operation soapAction="" style="rpc"/>
+ <input>
+ <soap:body namespace="http://www.apache.org/ode/pmapi" use="literal"/>
+ </input>
+ <output>
+ <soap:body namespace="http://www.apache.org/ode/pmapi" use="literal"/>
+ </output>
+ <fault name="ManagementFault">
+ <soap:fault name="ManagementFault" use="literal"/>
+ </fault>
+ </operation>
<operation name="listEvents">
<soap:operation soapAction="" style="rpc"/>
<input>
Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java?rev=959466&r1=959465&r2=959466&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessAndInstanceManagementImpl.java Wed Jun 30 22:37:24 2010
@@ -19,6 +19,7 @@
package org.apache.ode.bpel.engine;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.text.ParseException;
import java.util.ArrayList;
@@ -141,6 +142,8 @@ import org.apache.ode.utils.msg.MessageB
import org.apache.ode.utils.stl.CollectionsX;
import org.apache.ode.utils.stl.MemberOfFunction;
import org.apache.ode.utils.stl.UnaryFunction;
+import org.apache.xmlbeans.XmlObject;
+import org.apache.xmlbeans.XmlOptions;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -478,6 +481,44 @@ public class ProcessAndInstanceManagemen
});
return ret;
}
+
+ public VariableInfoDocument setVariable(final String scopeId, final String varName, final XmlObject value) throws ManagementException {
+ VariableInfoDocument ret = VariableInfoDocument.Factory.newInstance();
+ final TVariableInfo vinf = ret.addNewVariableInfo();
+ final TVariableRef sref = vinf.addNewSelf();
+ dbexec(new BpelDatabase.Callable<Object>() {
+ public Object run(BpelDAOConnection session) throws Exception {
+ ScopeDAO scope = session.getScope(new Long(scopeId));
+ if (scope == null) {
+ throw new InvalidRequestException("ScopeNotFound:" + scopeId);
+ }
+
+ sref.setSiid(scopeId);
+ sref.setIid(scope.getProcessInstance().getInstanceId().toString());
+ sref.setName(varName);
+
+ XmlDataDAO var = scope.getVariable(varName);
+ if (var == null) {
+ throw new InvalidRequestException("VarNotFound:" + varName);
+ }
+
+ {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ value.save(out, new XmlOptions().setSaveOuter());
+ Node value2 = DOMUtils.getFirstChildElement(DOMUtils.stringToDOM(out.toString()));
+ var.set(value2);
+ }
+
+ Node nval = var.get();
+ if (nval != null) {
+ TVariableInfo.Value val = vinf.addNewValue();
+ val.getDomNode().appendChild(val.getDomNode().getOwnerDocument().importNode(nval, true));
+ }
+ return null;
+ }
+ });
+ return ret;
+ }
//
// INSTANCE ACTIONS
Modified: ode/trunk/utils/src/main/java/org/apache/ode/utils/DOMUtils.java
URL: http://svn.apache.org/viewvc/ode/trunk/utils/src/main/java/org/apache/ode/utils/DOMUtils.java?rev=959466&r1=959465&r2=959466&view=diff
==============================================================================
--- ode/trunk/utils/src/main/java/org/apache/ode/utils/DOMUtils.java (original)
+++ ode/trunk/utils/src/main/java/org/apache/ode/utils/DOMUtils.java Wed Jun 30 22:37:24 2010
@@ -134,6 +134,14 @@ public class DOMUtils {
return out.toString();
}
+
+ public static Element getFirstChildElement(Node node) {
+ NodeList l = node.getChildNodes();
+ for (int i = 0; i < l.getLength(); i++) {
+ if (l.item(i) instanceof Element) return (Element) l.item(i);
+ }
+ return null;
+ }
/**
* Returns the value of an attribute of an element. Returns null if the