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