[jboss-svn-commits] JBL Code SVN: r20199 - in labs/jbossrules/trunk/drools-process: drools-osworkflow and 11 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed May 28 11:50:47 EDT 2008
Author: KrisVerlaenen
Date: 2008-05-28 11:50:47 -0400 (Wed, 28 May 2008)
New Revision: 20199
Added:
labs/jbossrules/trunk/drools-process/drools-osworkflow/
labs/jbossrules/trunk/drools-process/drools-osworkflow/.classpath
labs/jbossrules/trunk/drools-process/drools-osworkflow/.project
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/DroolsWorkflow.java
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/OSWorkflowParser.java
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/drools/
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/drools/SimpleOSWorkflowProcessTest.java
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/drools/SimpleProcessTest.java
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/resources/
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/resources/osworkflow.xml
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/resources/simple.xml
labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/resources/workflows.xml
Log:
Added: labs/jbossrules/trunk/drools-process/drools-osworkflow/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/.classpath (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/.classpath 2008-05-28 15:50:47 UTC (rev 20199)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/test/java"/>
+ <classpathentry kind="src" path="src/test/resources"/>
+ <classpathentry kind="lib" path="lib/osworkflow-2.8.0.jar" sourcepath="C:/development/projects/osworkflow/src/java"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
+ <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar"/>
+ <classpathentry kind="lib" path="lib/oscore-2.2.5.jar"/>
+ <classpathentry kind="lib" path="lib/propertyset-1.4.jar"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-compiler"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-core"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
Added: labs/jbossrules/trunk/drools-process/drools-osworkflow/.project
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/.project (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/.project 2008-05-28 15:50:47 UTC (rev 20199)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>drools-osworkflow</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
Added: labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/DroolsWorkflow.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/DroolsWorkflow.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/DroolsWorkflow.java 2008-05-28 15:50:47 UTC (rev 20199)
@@ -0,0 +1,187 @@
+package org.drools.osworkflow;
+
+import java.util.List;
+import java.util.Map;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
+import org.drools.process.instance.ProcessInstance;
+import org.drools.rule.Package;
+
+import com.opensymphony.module.propertyset.PropertySet;
+import com.opensymphony.workflow.FactoryException;
+import com.opensymphony.workflow.InvalidActionException;
+import com.opensymphony.workflow.InvalidEntryStateException;
+import com.opensymphony.workflow.InvalidInputException;
+import com.opensymphony.workflow.InvalidRoleException;
+import com.opensymphony.workflow.Workflow;
+import com.opensymphony.workflow.WorkflowException;
+import com.opensymphony.workflow.config.Configuration;
+import com.opensymphony.workflow.config.DefaultConfiguration;
+import com.opensymphony.workflow.loader.WorkflowDescriptor;
+import com.opensymphony.workflow.query.WorkflowExpressionQuery;
+import com.opensymphony.workflow.query.WorkflowQuery;
+
+public class DroolsWorkflow implements Workflow {
+
+ private WorkingMemory workingMemory;
+ private Configuration configuration;
+
+ public long initialize(String workflowName, int initialAction, Map inputs)
+ throws InvalidRoleException, InvalidInputException,
+ WorkflowException, InvalidEntryStateException,
+ InvalidActionException {
+ RuleBase ruleBase = workingMemory.getRuleBase();
+ Package p = ruleBase.getPackage("org.drools.osworkflow");
+ if (p.getRuleFlows().get(workflowName) == null) {
+ WorkflowDescriptor descriptor = getConfiguration().getWorkflow(workflowName);
+ if (descriptor == null) {
+ throw new IllegalArgumentException(
+ "Could not find process with name " + workflowName);
+ }
+ Package newPackage = new Package("org.drools.osworkflow");
+ newPackage.addRuleFlow(OSWorkflowParser.parseOSWorkflow(descriptor));
+ ruleBase.addPackage(newPackage);
+ }
+ // TODO initialAction
+ return workingMemory.startProcess(workflowName, inputs).getId();
+ }
+
+ public void doAction(long id, int actionId, Map inputs)
+ throws InvalidInputException, WorkflowException {
+ ProcessInstance processInstance = findProcessInstance(id);
+
+ }
+
+ private ProcessInstance findProcessInstance(long id) {
+ ProcessInstance processInstance = workingMemory.getProcessInstance(id);
+ if (processInstance == null) {
+ throw new IllegalArgumentException(
+ "Could not find process instance with id " + id);
+ }
+ return processInstance;
+ }
+
+ public int[] getAvailableActions(long id) {
+ // TODO
+ return null;
+ }
+
+ public int[] getAvailableActions(long id, Map inputs) {
+ // TODO
+ return null;
+ }
+
+ public boolean canInitialize(String workflowName, int initialStep) {
+ // TODO
+ return false;
+ }
+
+ public boolean canInitialize(String workflowName, int initialAction, Map inputs) {
+ // TODO
+ return false;
+ }
+
+ public boolean canModifyEntryState(long id, int newState) {
+ // TODO
+ return false;
+ }
+
+ public void changeEntryState(long id, int newState) throws WorkflowException {
+ // TODO
+ }
+
+ public void executeTriggerFunction(long id, int triggerId) throws WorkflowException {
+ // TODO
+ }
+
+ public List getCurrentSteps(long id) {
+ // TODO
+ return null;
+ }
+
+ public int getEntryState(long id) {
+ // TODO
+ return 0;
+ }
+
+ public List getHistorySteps(long id) {
+ // TODO
+ return null;
+ }
+
+ public PropertySet getPropertySet(long id) {
+ // TODO
+ return null;
+ }
+
+ public List getSecurityPermissions(long id) {
+ // TODO
+ return null;
+ }
+
+ public List getSecurityPermissions(long id, Map inputs) {
+ // TODO
+ return null;
+ }
+
+ public WorkflowDescriptor getWorkflowDescriptor(String workflowName) {
+ // TODO
+ return null;
+ }
+
+ public String getWorkflowName(long id) {
+ // TODO
+ return null;
+ }
+
+ public String[] getWorkflowNames() {
+ // TODO
+ return null;
+ }
+
+ public List query(WorkflowQuery query) throws WorkflowException {
+ // TODO
+ return null;
+ }
+
+ public List query(WorkflowExpressionQuery query) throws WorkflowException {
+ // TODO
+ return null;
+ }
+
+ public boolean removeWorkflowDescriptor(String workflowName) throws FactoryException {
+ // TODO
+ return false;
+ }
+
+ public boolean saveWorkflowDescriptor(String workflowName,
+ WorkflowDescriptor descriptor, boolean replace)
+ throws FactoryException {
+ // TODO
+ return false;
+ }
+
+ public void setConfiguration(Configuration configuration) {
+ this.configuration = configuration;
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ Package p = new Package("org.drools.osworkflow");
+ ruleBase.addPackage(p);
+ workingMemory = ruleBase.newStatefulSession();
+ }
+
+ private Configuration getConfiguration() {
+ Configuration config = (configuration != null) ? configuration : DefaultConfiguration.INSTANCE;
+ if (!config.isInitialized()) {
+ try {
+ config.load(null);
+ } catch (FactoryException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+ return config;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/OSWorkflowParser.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/OSWorkflowParser.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/src/main/java/org/drools/osworkflow/OSWorkflowParser.java 2008-05-28 15:50:47 UTC (rev 20199)
@@ -0,0 +1,26 @@
+package org.drools.osworkflow;
+
+import java.util.List;
+
+import org.drools.process.core.Process;
+import org.drools.ruleflow.core.RuleFlowProcess;
+
+import com.opensymphony.workflow.loader.StepDescriptor;
+import com.opensymphony.workflow.loader.WorkflowDescriptor;
+import com.opensymphony.workflow.spi.Step;
+
+public class OSWorkflowParser {
+
+ public static Process parseOSWorkflow(WorkflowDescriptor descriptor) {
+ RuleFlowProcess process = new RuleFlowProcess();
+ process.setName(descriptor.getName());
+ process.setId(descriptor.getName());
+ process.setPackageName("org.drools.osworkflow");
+ List<StepDescriptor> steps = descriptor.getSteps();
+ for (StepDescriptor step: steps) {
+
+ }
+ return process;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/drools/SimpleOSWorkflowProcessTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/drools/SimpleOSWorkflowProcessTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/drools/SimpleOSWorkflowProcessTest.java 2008-05-28 15:50:47 UTC (rev 20199)
@@ -0,0 +1,55 @@
+package org.drools;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import junit.framework.TestCase;
+
+import com.opensymphony.workflow.Workflow;
+import com.opensymphony.workflow.basic.BasicWorkflow;
+import com.opensymphony.workflow.config.DefaultConfiguration;
+import com.opensymphony.workflow.spi.Step;
+
+public class SimpleOSWorkflowProcessTest extends TestCase {
+
+ public void testSimpleProcess() {
+ Workflow workflow = new BasicWorkflow("testuser");
+ DefaultConfiguration config = new DefaultConfiguration();
+ workflow.setConfiguration(config);
+ try {
+ long workflowId = workflow.initialize("simple", 1, null);
+
+ Collection<Step> currentSteps = workflow.getCurrentSteps(workflowId);
+ //verify we only have one current step
+ assertEquals("Unexpected number of current steps", 1, currentSteps.size());
+ //verify it's step 1
+ Step currentStep = currentSteps.iterator().next();
+ assertEquals("Unexpected current step", 1, currentStep.getStepId());
+
+ int[] availableActions = workflow.getAvailableActions(workflowId, Collections.EMPTY_MAP);
+ //verify we only have one available action
+ assertEquals("Unexpected number of available actions", 1, availableActions.length);
+ //verify it's action 1
+ assertEquals("Unexpected available action", 2, availableActions[0]);
+
+ workflow.doAction(workflowId, 2, null);
+
+ availableActions = workflow.getAvailableActions(workflowId, Collections.EMPTY_MAP);
+ //verify we only have one available action
+ assertEquals("Unexpected number of available actions", 1, availableActions.length);
+ //verify it's action 1
+ assertEquals("Unexpected available action", 3, availableActions[0]);
+
+ workflow.doAction(workflowId, 3, null);
+
+ availableActions = workflow.getAvailableActions(workflowId, Collections.EMPTY_MAP);
+ //verify we only have one available action
+ assertEquals("Unexpected number of available actions", 0, availableActions.length);
+
+ } catch (Throwable t) {
+ t.printStackTrace();
+ fail();
+ }
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/drools/SimpleProcessTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/drools/SimpleProcessTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/java/org/drools/SimpleProcessTest.java 2008-05-28 15:50:47 UTC (rev 20199)
@@ -0,0 +1,24 @@
+package org.drools;
+
+import junit.framework.TestCase;
+
+import org.drools.osworkflow.DroolsWorkflow;
+
+import com.opensymphony.workflow.Workflow;
+import com.opensymphony.workflow.config.DefaultConfiguration;
+
+public class SimpleProcessTest extends TestCase {
+
+ public void testSimpleProcess() {
+ Workflow workflow = new DroolsWorkflow();
+ DefaultConfiguration config = new DefaultConfiguration();
+ workflow.setConfiguration(config);
+ try {
+ workflow.initialize("simple", 1, null);
+ } catch (Throwable t) {
+ t.printStackTrace();
+ fail(t.getMessage());
+ }
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/resources/osworkflow.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/resources/osworkflow.xml (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/resources/osworkflow.xml 2008-05-28 15:50:47 UTC (rev 20199)
@@ -0,0 +1,6 @@
+<osworkflow>
+ <persistence class="com.opensymphony.workflow.spi.memory.MemoryWorkflowStore"/>
+ <factory class="com.opensymphony.workflow.loader.XMLWorkflowFactory">
+ <property key="resource" value="workflows.xml" />
+ </factory>
+</osworkflow>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/resources/simple.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/resources/simple.xml (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/resources/simple.xml 2008-05-28 15:50:47 UTC (rev 20199)
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE workflow PUBLIC
+ "-//OpenSymphony Group//DTD OSWorkflow 2.8//EN"
+ "http://www.opensymphony.com/osworkflow/workflow_2_8.dtd">
+<workflow>
+ <initial-actions>
+ <action id="1" name="Start Workflow">
+ <results>
+ <unconditional-result old-status="Finished" status="Queued" step="1"/>
+ </results>
+ </action>
+ </initial-actions>
+ <steps>
+ <step id="1" name="First Draft">
+ <actions>
+ <action id="2" name="Start First Draft">
+ <restrict-to>
+ <conditions>
+ <condition type="class">
+ <arg name="class.name">
+ com.opensymphony.workflow.util.StatusCondition
+ </arg>
+ <arg name="status">Queued</arg>
+ </condition>
+ </conditions>
+ </restrict-to>
+ <pre-functions>
+ <function type="class">
+ <arg name="class.name">
+ com.opensymphony.workflow.util.Caller
+ </arg>
+ </function>
+ </pre-functions>
+ <results>
+ <unconditional-result old-status="Finished" status="Underway"
+ step="1" owner="${caller}"/>
+ </results>
+ </action>
+ <action id="3" name="Finish First Draft">
+ <restrict-to>
+ <conditions type="AND">
+ <condition type="class">
+ <arg name="class.name">
+ com.opensymphony.workflow.util.StatusCondition
+ </arg>
+ <arg name="status">Underway</arg>
+ </condition>
+ <condition type="class">
+ <arg name="class.name">
+ com.opensymphony.workflow.util.AllowOwnerOnlyCondition
+ </arg>
+ </condition>
+ </conditions>
+ </restrict-to>
+ <results>
+ <unconditional-result old-status="Finished" status="Queued" step="2"/>
+ </results>
+ </action>
+ </actions>
+ </step>
+ <step id="2" name="finished" />
+ </steps>
+</workflow>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/resources/workflows.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/resources/workflows.xml (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-osworkflow/src/test/resources/workflows.xml 2008-05-28 15:50:47 UTC (rev 20199)
@@ -0,0 +1,3 @@
+<workflows>
+ <workflow name="simple" type="resource" location="simple.xml"/>
+</workflows>
\ No newline at end of file
More information about the jboss-svn-commits
mailing list