krysalis-sandbox/workflow/src/java/org/krysalis/workflow/manager DefaultWorkFlow.java,1.4,1.5 DefaultWorkFlowMapper.java,1.2,1.3 workflow.roles,1.2,1.3

[email protected]
Newsgroups gmane.comp.krysalis.sandbox
Message-ID <[email protected]>
Update of /cvsroot/metamorphosis/krysalis-sandbox/workflow/src/java/org/krysalis/workflow/manager
In directory sc8-pr-cvs1:/tmp/cvs-serv31230/src/java/org/krysalis/workflow/manager

Modified Files:
	DefaultWorkFlow.java DefaultWorkFlowMapper.java workflow.roles 
Log Message:
Fixing role configuration.
Using configuration class instead of parameters for actions
and conditions.


Index: DefaultWorkFlow.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-sandbox/workflow/src/java/org/krysalis/workflow/manager/DefaultWorkFlow.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** DefaultWorkFlow.java	15 Mar 2003 18:44:37 -0000	1.4
--- DefaultWorkFlow.java	17 Mar 2003 10:39:17 -0000	1.5
***************
*** 12,15 ****
--- 12,16 ----
  import org.apache.avalon.framework.component.ComponentException;
  import org.apache.avalon.framework.component.ComponentManager;
+ import org.apache.avalon.framework.component.ComponentSelector;
  import org.apache.avalon.framework.component.Composable;
  import org.apache.avalon.framework.configuration.Configurable;
***************
*** 17,21 ****
  import org.apache.avalon.framework.configuration.ConfigurationException;
  import org.apache.avalon.framework.logger.AbstractLogEnabled;
- import org.apache.avalon.framework.parameters.Parameters;
  import org.apache.avalon.framework.thread.ThreadSafe;
  
--- 18,21 ----
***************
*** 23,27 ****
  
  /**
!  *
   *
   * @author <a href="mailto:[email protected]">Stephan Michels </a>
--- 23,29 ----
  
  /**
!  * Default implementation of a workflow. This workflow implementation
!  * allow epsilon, event-driven, garded, conditioned transtion. If more
!  * than one transitions possible, the first one will be taken.
   *
   * @author <a href="mailto:[email protected]">Stephan Michels </a>
***************
*** 41,47 ****
    private String[][] transitionEvents;
    private WorkFlowCondition[][] transitionConditions;
!   private Parameters[][] transitionConditionParameters;
    private WorkFlowAction[][][] transitionActions;
!   private Parameters[][][] transitionActionParameters;
  
    // Intial state
--- 43,49 ----
    private String[][] transitionEvents;
    private WorkFlowCondition[][] transitionConditions;
!   private Configuration[][] transitionConditionConfigurations;
    private WorkFlowAction[][][] transitionActions;
!   private Configuration[][][] transitionActionConfigurations;
  
    // Intial state
***************
*** 86,160 ****
  
      this.transitions = new int[states.length][];
!     Configuration[] transitions, actions;
!     Configuration condition;
  
      this.transitions = new int[states.length][];
      this.transitionEvents = new String[states.length][];
      this.transitionConditions = new WorkFlowCondition[states.length][];
!     this.transitionConditionParameters = new Parameters[states.length][];
      this.transitionActions = new WorkFlowAction[states.length][][];
!     this.transitionActionParameters = new Parameters[states.length][][];
  
      for (int state = 0; state<states.length; state++)
      {
!       transitions = states[state].getChildren("transition");
!       this.transitions[state] = new int[transitions.length];
!       this.transitionEvents[state] = new String[transitions.length];
!       this.transitionConditions[state] = new WorkFlowCondition[transitions.length];
!       this.transitionConditionParameters[state] = new Parameters[transitions.length];
!       this.transitionActions[state] = new WorkFlowAction[transitions.length][];
!       this.transitionActionParameters[state] = new Parameters[transitions.length][];
!       for (int transition = 0; transition<transitions.length; transition++)
        {
!         this.transitions[state][transition] = indexOfState(transitions[transition].getAttribute("ref",
              stateNames[state]));
  
!         if (transitions[transition].getAttribute("event", null)!=null)
!           this.transitionEvents[state][transition] = transitions[transition].getAttribute("event");
          else  
            this.transitionEvents[state][transition] = null;
  
!         condition = transitions[transition].getChild("condition", false);
!         if (condition!=null)
          {
            try
            {
              this.transitionConditions[state][transition] = (WorkFlowCondition)
!               this.manager.lookup(condition.getAttribute("type"));
            }
            catch (ComponentException ce)
            {
              throw new ConfigurationException("Could not retrieve condition '"+
!                                              condition.getAttribute("type")+
                                               "'", ce);
            }
!           this.transitionConditionParameters[state][transition] = Parameters.fromConfiguration(condition);
          }
          else
          {
            this.transitionConditions[state][transition] = null;
!           this.transitionConditionParameters[state][transition] = null;
          }
  
!         actions = transitions[transition].getChildren("action");
!         this.transitionActions[state][transition] = new WorkFlowAction[actions.length];
!         this.transitionActionParameters[state][transition] = new Parameters[actions.length];
!         for (int action = 0; action<actions.length; action++)
          {
            try
            {
! /*            getLogger().debug("action="+action+" length="+this.transitionActions[state][transition].length);
!             getLogger().debug("type="+actions[action].getAttribute("type"));
!             getLogger().debug("action="+this.transitionActions[state][transition][action]);*/
              this.transitionActions[state][transition][action] = (WorkFlowAction)
!               this.manager.lookup(actions[action].getAttribute("type"));
            }
            catch (ComponentException ce)
            {
              throw new ConfigurationException("Could not retrieve action '"+
!                                              actions[action].getAttribute("type")+
                                               "'", ce);
            }
!           this.transitionActionParameters[state][transition][action] = Parameters.fromConfiguration(actions[action]);
          }
        }
--- 88,173 ----
  
      this.transitions = new int[states.length][];
!     Configuration[] transitionConfigs, actionConfigs;
!     Configuration conditionConfig;
  
      this.transitions = new int[states.length][];
      this.transitionEvents = new String[states.length][];
      this.transitionConditions = new WorkFlowCondition[states.length][];
!     this.transitionConditionConfigurations = new Configuration[states.length][];
      this.transitionActions = new WorkFlowAction[states.length][][];
!     this.transitionActionConfigurations = new Configuration[states.length][][];
  
      for (int state = 0; state<states.length; state++)
      {
!       transitionConfigs = states[state].getChildren("transition");
!       this.transitions[state] = new int[transitionConfigs.length];
!       this.transitionEvents[state] = new String[transitionConfigs.length];
!       this.transitionConditions[state] = new WorkFlowCondition[transitionConfigs.length];
!       this.transitionConditionConfigurations[state] = new Configuration[transitionConfigs.length];
!       this.transitionActions[state] = new WorkFlowAction[transitionConfigs.length][];
!       this.transitionActionConfigurations[state] = new Configuration[transitionConfigs.length][];
!       for (int transition = 0; transition<transitionConfigs.length; transition++)
        {
!         this.transitions[state][transition] = indexOfState(transitionConfigs[transition].getAttribute("ref",
              stateNames[state]));
  
!         if (transitionConfigs[transition].getAttribute("event", null)!=null)
!           this.transitionEvents[state][transition] = transitionConfigs[transition].getAttribute("event");
          else  
            this.transitionEvents[state][transition] = null;
  
!         conditionConfig = transitionConfigs[transition].getChild("condition", false);
!         if (conditionConfig!=null)
          {
+           ComponentSelector conditionselector = null;
            try
            {
+             conditionselector = (ComponentSelector)manager.lookup(WorkFlowCondition.ROLE+"Selector");
              this.transitionConditions[state][transition] = (WorkFlowCondition)
!               conditionselector.select(conditionConfig.getAttribute("type"));
            }
            catch (ComponentException ce)
            {
              throw new ConfigurationException("Could not retrieve condition '"+
!                                              conditionConfig.getAttribute("type")+
                                               "'", ce);
            }
!           finally
!           {
!             if (conditionselector!=null)
!               manager.release(conditionselector);
!           }
!           this.transitionConditionConfigurations[state][transition] = conditionConfig;
          }
          else
          {
            this.transitionConditions[state][transition] = null;
!           this.transitionConditionConfigurations[state][transition] = null;
          }
  
!         actionConfigs = transitionConfigs[transition].getChildren("action");
!         this.transitionActions[state][transition] = new WorkFlowAction[actionConfigs.length];
!         this.transitionActionConfigurations[state][transition] = new Configuration[actionConfigs.length];
!         for (int action = 0; action<actionConfigs.length; action++)
          {
+           ComponentSelector actionselector = null;
            try
            {
!             actionselector = (ComponentSelector)manager.lookup(WorkFlowAction.ROLE+"Selector");
              this.transitionActions[state][transition][action] = (WorkFlowAction)
!               actionselector.select(actionConfigs[action].getAttribute("type"));
            }
            catch (ComponentException ce)
            {
              throw new ConfigurationException("Could not retrieve action '"+
!                                              actionConfigs[action].getAttribute("type")+
                                               "'", ce);
+           } 
+           finally
+           {
+             if (actionselector!=null)
+               manager.release(actionselector);
            }
!           this.transitionActionConfigurations[state][transition][action] = actionConfigs[action];
          }
        }
***************
*** 208,212 ****
        {
          if (transitionConditions[state][transition].evaluate(currentState,
!             event, transitionConditionParameters[state][transition]))
          {
            try
--- 221,225 ----
        {
          if (transitionConditions[state][transition].evaluate(currentState,
!             event, transitionConditionConfigurations[state][transition]))
          {
            try
***************
*** 217,221 ****
                transitionActions[state][transition][action].perform(currentState,
                    event,
!                   transitionActionParameters[state][transition][action]);
  
            }
--- 230,234 ----
                transitionActions[state][transition][action].perform(currentState,
                    event,
!                   transitionActionConfigurations[state][transition][action]);
  
            }
***************
*** 241,245 ****
                action<transitionActions[state][transition].length; action++)
              transitionActions[state][transition][action].perform(currentState,
!                 event, transitionActionParameters[state][transition][action]);
  
          }
--- 254,258 ----
                action<transitionActions[state][transition].length; action++)
              transitionActions[state][transition][action].perform(currentState,
!                 event, transitionActionConfigurations[state][transition][action]);
  
          }
***************
*** 262,266 ****
              ((transitionConditions[state][transition]==null) || 
               transitionConditions[state][transition].evaluate(currentState,
!               null, transitionConditionParameters[state][transition])))
          {
            state = transitions[state][transition];
--- 275,279 ----
              ((transitionConditions[state][transition]==null) || 
               transitionConditions[state][transition].evaluate(currentState,
!               null, transitionConditionConfigurations[state][transition])))
          {
            state = transitions[state][transition];
***************
*** 274,278 ****
                transitionActions[state][transition][action].perform(currentState,
                    null,
!                   transitionActionParameters[state][transition][action]);
            }
            catch (Exception e)
--- 287,291 ----
                transitionActions[state][transition][action].perform(currentState,
                    null,
!                   transitionActionConfigurations[state][transition][action]);
            }
            catch (Exception e)

Index: DefaultWorkFlowMapper.java
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-sandbox/workflow/src/java/org/krysalis/workflow/manager/DefaultWorkFlowMapper.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** DefaultWorkFlowMapper.java	14 Mar 2003 15:06:09 -0000	1.2
--- DefaultWorkFlowMapper.java	17 Mar 2003 10:39:18 -0000	1.3
***************
*** 104,114 ****
    }
  
-   /**
-    *
-    *
-    * @param pattern    
-    *
-    * @return
-    */
    private String createRegex(String pattern)
    {
--- 104,107 ----
***************
*** 133,138 ****
      buffer.append("$");
  
-     System.out.println("pattern: '"+pattern+"' regex: '"+buffer.toString()+
-                        "'");
      return buffer.toString();
    }
--- 126,129 ----

Index: workflow.roles
===================================================================
RCS file: /cvsroot/metamorphosis/krysalis-sandbox/workflow/src/java/org/krysalis/workflow/manager/workflow.roles,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** workflow.roles	14 Mar 2003 15:06:09 -0000	1.2
--- workflow.roles	17 Mar 2003 10:39:20 -0000	1.3
***************
*** 15,34 ****
  <role-list>
  
-   <role name="org.krysalis.workflow.WorkFlowStoreSelector"
-         shorthand="stores"
-         default-class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector"/>
- 
-   <role name="org.krysalis.workflow.WorkFlowStoreSelector"
-         shorthand="stores"
-         default-class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector"/>
- 
-   <role name="org.krysalis.workflow.WorkFlowStoreSelector"
-         shorthand="stores"
-         default-class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector"/>
- 
-   <role name="org.krysalis.workflow.WorkFlowStoreSelector"
-         shorthand="stores"
-         default-class="org.apache.avalon.excalibur.component.ExcaliburComponentSelector"/>
- 
    <role name="org.krysalis.workflow.WorkFlowConditionSelector"
          shorthand="conditions"
--- 15,18 ----




-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open! 
Get cracking and register here for some mind boggling fun and 
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.