You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by ms...@apache.org on 2007/10/31 03:40:52 UTC

svn commit: r590543 - in /ode/branches/extvar/bpel-api/src/main/java/org/apche: ./ ode/ ode/bpel/ ode/bpel/evar/ ode/bpel/evar/ExternalVariableModule.java ode/bpel/evar/ExternalVariableModuleException.java

Author: mszefler
Date: Tue Oct 30 19:40:51 2007
New Revision: 590543

URL: http://svn.apache.org/viewvc?rev=590543&view=rev
Log:
experimental: external variables

Added:
    ode/branches/extvar/bpel-api/src/main/java/org/apche/
    ode/branches/extvar/bpel-api/src/main/java/org/apche/ode/
    ode/branches/extvar/bpel-api/src/main/java/org/apche/ode/bpel/
    ode/branches/extvar/bpel-api/src/main/java/org/apche/ode/bpel/evar/
    ode/branches/extvar/bpel-api/src/main/java/org/apche/ode/bpel/evar/ExternalVariableModule.java   (with props)
    ode/branches/extvar/bpel-api/src/main/java/org/apche/ode/bpel/evar/ExternalVariableModuleException.java   (with props)

Added: ode/branches/extvar/bpel-api/src/main/java/org/apche/ode/bpel/evar/ExternalVariableModule.java
URL: http://svn.apache.org/viewvc/ode/branches/extvar/bpel-api/src/main/java/org/apche/ode/bpel/evar/ExternalVariableModule.java?rev=590543&view=auto
==============================================================================
--- ode/branches/extvar/bpel-api/src/main/java/org/apche/ode/bpel/evar/ExternalVariableModule.java (added)
+++ ode/branches/extvar/bpel-api/src/main/java/org/apche/ode/bpel/evar/ExternalVariableModule.java Tue Oct 30 19:40:51 2007
@@ -0,0 +1,142 @@
+package org.apche.ode.bpel.evar;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * Representation of an external source for variable data.
+ * 
+ * @author Maciej Szefler <mszefler at gmail dot com>
+ *
+ */
+public interface ExternalVariableModule {
+
+    /**
+     * Get the QName of this external variable engine; this method must always return a valid non-null value. 
+     * The name of the external variable engine is used to identify it in the external variable declaration.
+     * @return
+     */
+    public QName getName();
+
+    
+    /** 
+     * Start the external variable subsystem. This method is called before the engine is started. 
+     *
+     */
+    public void start();
+    
+    /**
+     * Stop the external variable subsystem. This method is called right after the engine is stopped.
+     *
+     */
+    public void stop();
+    
+    /**
+     * Shutdown the external variable subsystem. This method is called right after the engine is shutdown. 
+     *
+     */
+    public void shutdown();
+    
+    
+    /**
+     * Report whether this engine is transactional, i.e. do the update/fetch methods use the JTA TX?  
+     * @return <code>true</code> if transactional, <code>false</code> otherwsie.
+     */
+    public boolean isTransactional();
+    
+ 
+    /**
+     * Configure an external variable. 
+     * @param pid process 
+     * @param extVarId external variable identifier
+     * @param config configuration element
+     * @throws ExternalVariableModuleException 
+     */
+    public void configure(QName pid, String extVarId, Element config) throws ExternalVariableModuleException;
+
+    
+    /**
+     * The the value of an external variable. 
+     * @param locator variable locator
+     * @param initialize indicates if this is the first time the value is being read
+     * @return value of the variable
+     */
+    public Value readValue(Locator locator) throws ExternalVariableModuleException;
+    
+    /**
+     * Update the value of the external variable.
+     * @param newval new variable value 
+     * @param initialize indicates if this is a variable initialization
+     */
+    public Value writeValue(Value newval) throws ExternalVariableModuleException;
+    
+    
+    /**
+     * Structure used to identify an external variable to the external variable subsystem.
+     * 
+     * @author Maciej Szefler <mszefler at gmail dot com>
+     *
+     */
+    public class Locator extends HashMap<String, String>{
+        
+        private static final long serialVersionUID = 1L;
+
+        public final String varId;
+        
+        /** Instance identifier. */
+        public final Long iid;
+        
+        /** Process identifier. */
+        public final QName pid;
+                
+        public Locator(String varId, QName pid, Long iid) {
+            this.varId = varId;
+            this.pid = pid;
+            this.iid = iid;
+        }
+
+        public Locator(String varId, QName pid, Long iid, Map<String,String> keys) {
+            this(varId,pid,iid);
+            putAll(keys);
+        }
+        
+    }
+
+    /**
+     * Data structure used to report the value of the variable to the BPEL engine from the external
+     * sub system.
+     * 
+     * @author Maciej Szefler <mszefler at gmail dot com>
+     *
+     */
+    public class Value {
+        /** Variable locator. See {@link Locator}. */
+        public final Locator locator; 
+        
+        /** Value of the variable. */
+        public final Node value;
+        
+        /** Advisory indicating when the variable becomes stale (or null if non-perishable). */
+        public final Date useByDate;
+        
+        public Value(Locator locator, Node value) {
+            this(locator,value, null);
+        }
+        
+        public Value(Locator locator, Node value, Date useByDate) {
+            this.locator = locator;
+            this.value = value;
+            this.useByDate = useByDate;
+        }
+    }
+
+
+    
+
+}

Propchange: ode/branches/extvar/bpel-api/src/main/java/org/apche/ode/bpel/evar/ExternalVariableModule.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: ode/branches/extvar/bpel-api/src/main/java/org/apche/ode/bpel/evar/ExternalVariableModuleException.java
URL: http://svn.apache.org/viewvc/ode/branches/extvar/bpel-api/src/main/java/org/apche/ode/bpel/evar/ExternalVariableModuleException.java?rev=590543&view=auto
==============================================================================
--- ode/branches/extvar/bpel-api/src/main/java/org/apche/ode/bpel/evar/ExternalVariableModuleException.java (added)
+++ ode/branches/extvar/bpel-api/src/main/java/org/apche/ode/bpel/evar/ExternalVariableModuleException.java Tue Oct 30 19:40:51 2007
@@ -0,0 +1,20 @@
+package org.apche.ode.bpel.evar;
+
+/**
+ * Exception thrown by external variable engines.
+ *  
+ * @author Maciej Szefler <mszefler at gmail dot com>
+ */
+public class ExternalVariableModuleException extends Exception {
+
+    private static final long serialVersionUID = 1L;
+
+    
+    public ExternalVariableModuleException(String msg, Throwable cause) {
+        super(msg, cause);
+    }
+    
+    public ExternalVariableModuleException(String msg) {
+        super(msg);
+    }
+}

Propchange: ode/branches/extvar/bpel-api/src/main/java/org/apche/ode/bpel/evar/ExternalVariableModuleException.java
------------------------------------------------------------------------------
    svn:eol-style = native