[jboss-svn-commits] JBL Code SVN: r20272 - in labs/jbossrules/trunk/drools-process: drools-process-enterprise and 18 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jun 3 11:59:53 EDT 2008


Author: KrisVerlaenen
Date: 2008-06-03 11:59:53 -0400 (Tue, 03 Jun 2008)
New Revision: 20272

Added:
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/.classpath
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/.project
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/JarDescription.jardesc
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/processinstance/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/processinstance/ProcessInstanceInfo.java
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/processinstance/ProcessService.java
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/processinstance/ProcessServiceBean.java
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/processinstance/WorkItemInfo.java
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/repository/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/repository/ProcessInfo.java
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/repository/ProcessRepository.java
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/repository/ProcessRepositoryBean.java
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/resources/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/resources/META-INF/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/resources/META-INF/persistence.xml
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/resources/jndi.properties
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/process/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/process/enterprise/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/process/enterprise/client/
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/process/enterprise/client/ProcessRepositoryClient.java
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/process/enterprise/client/ProcessServiceClient.java
   labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/process/enterprise/client/WorkItemServiceClient.java
Log:
Initial commit of drools-process-enterprise

Added: labs/jbossrules/trunk/drools-process/drools-process-enterprise/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-enterprise/.classpath	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-enterprise/.classpath	2008-06-03 15:59:53 UTC (rev 20272)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry kind="src" path="src/main/resources"/>
+	<classpathentry kind="src" path="src/test/java"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/drools-compiler"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/drools-core"/>
+	<classpathentry kind="lib" path="lib/jboss-ejb3x.jar"/>
+	<classpathentry kind="lib" path="lib/jbossall-client.jar"/>
+	<classpathentry kind="lib" path="lib/ejb3-persistence.jar"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

Added: labs/jbossrules/trunk/drools-process/drools-process-enterprise/.project
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-enterprise/.project	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-enterprise/.project	2008-06-03 15:59:53 UTC (rev 20272)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>drools-process-enterprise</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-process-enterprise/JarDescription.jardesc
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-enterprise/JarDescription.jardesc	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-enterprise/JarDescription.jardesc	2008-06-03 15:59:53 UTC (rev 20272)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="WINDOWS-1252"?>
+<jardesc>
+<jar path="C:/jboss-4.2.2.GA/server/default/deploy/ProcessService.jar"/>
+<options buildIfNeeded="true" compress="true" descriptionLocation="/drools-process-enterprise/JarDescription.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="false" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
+<storedRefactorings deprecationInfo="true" structuralOnly="false"/>
+<selectedProjects/>
+<manifest generateManifest="true" manifestLocation="" manifestVersion="1.0" reuseManifest="false" saveManifest="false" usesManifest="true">
+<sealing sealJar="false">
+<packagesToSeal/>
+<packagesToUnSeal/>
+</sealing>
+</manifest>
+<selectedElements exportClassFiles="true" exportJavaFiles="false" exportOutputFolder="false">
+<javaElement handleIdentifier="=drools-process-enterprise/src\/main\/resources"/>
+<javaElement handleIdentifier="=drools-process-enterprise/src\/main\/java"/>
+</selectedElements>
+</jardesc>

Added: labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/processinstance/ProcessInstanceInfo.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/processinstance/ProcessInstanceInfo.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/processinstance/ProcessInstanceInfo.java	2008-06-03 15:59:53 UTC (rev 20272)
@@ -0,0 +1,67 @@
+package org.drools.process.enterprise.processinstance;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.Transient;
+
+import org.drools.marshalling.InputMarshaller;
+import org.drools.marshalling.MarshallerReaderContext;
+import org.drools.marshalling.MarshallerWriteContext;
+import org.drools.marshalling.OutputMarshaller;
+import org.drools.process.instance.ProcessInstance;
+import org.drools.ruleflow.instance.RuleFlowProcessInstance;
+
+ at Entity
+public class ProcessInstanceInfo {
+
+	private @Id long processInstanceId;
+	private String processId;
+	private @Lob byte[] processInstanceByteArray;
+	private @Transient ProcessInstance processInstance;
+	
+	public long getId() {
+		return processInstanceId;
+	}
+	
+	public String getProcessId() {
+		return processId;
+	}
+	
+	public ProcessInstance getProcessInstance() {
+		if (processInstance == null) {
+			try {
+				ByteArrayInputStream bais = new ByteArrayInputStream(processInstanceByteArray);
+				MarshallerReaderContext context = new MarshallerReaderContext(bais, null, null, null);
+				processInstance = InputMarshaller.readProcessInstance(context);
+				context.close();
+			} catch (IOException e) {
+				e.printStackTrace();
+				throw new IllegalArgumentException(
+					"IOException while loading process instance: " + e.getMessage());
+			}
+		}
+		return processInstance;
+	}
+	
+	public void setProcessInstance(ProcessInstance processInstance) {
+		this.processInstance = processInstance;
+		this.processInstanceId = processInstance.getId();
+		this.processId = processInstance.getProcessId();
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		try {
+			MarshallerWriteContext context = new MarshallerWriteContext(baos, null, null, null, null);
+			OutputMarshaller.writeProcessInstance(context, (RuleFlowProcessInstance) processInstance);
+			context.close();
+			this.processInstanceByteArray = baos.toByteArray();
+		} catch (IOException e) {
+			throw new IllegalArgumentException(
+				"IOException while storing process instance " + processInstance.getId() + ": " + e.getMessage());
+		}
+	}
+	
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/processinstance/ProcessService.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/processinstance/ProcessService.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/processinstance/ProcessService.java	2008-06-03 15:59:53 UTC (rev 20272)
@@ -0,0 +1,14 @@
+package org.drools.process.enterprise.processinstance;
+
+import java.util.Map;
+
+import javax.ejb.Remote;
+
+ at Remote
+public interface ProcessService {
+
+	long startProcess(String processId);
+	
+	void completeWorkItem(long workItemId, Map<String, Object> results);
+	
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/processinstance/ProcessServiceBean.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/processinstance/ProcessServiceBean.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/processinstance/ProcessServiceBean.java	2008-06-03 15:59:53 UTC (rev 20272)
@@ -0,0 +1,123 @@
+package org.drools.process.enterprise.processinstance;
+
+import java.io.StringReader;
+import java.util.List;
+import java.util.Map;
+
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
+import org.drools.common.InternalRuleBase;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.compiler.PackageBuilder;
+import org.drools.process.enterprise.repository.ProcessInfo;
+import org.drools.process.enterprise.repository.ProcessRepository;
+import org.drools.process.instance.ProcessInstance;
+import org.drools.process.instance.WorkItem;
+import org.drools.process.instance.WorkItemHandler;
+import org.drools.process.instance.WorkItemManager;
+import org.drools.process.instance.impl.ProcessInstanceImpl;
+import org.drools.process.instance.impl.demo.SystemOutWorkItemHandler;
+import org.drools.rule.Package;
+
+ at Stateless
+public class ProcessServiceBean implements ProcessService {
+
+	private @PersistenceContext EntityManager manager;
+	private @EJB ProcessRepository processRepository;
+	   
+	public long startProcess(String processId) {
+		System.out.println("Starting process " + processId);
+		InternalWorkingMemory workingMemory = createWorkingMemory();
+		// start process
+		ProcessInstance processInstance = workingMemory.startProcess(processId);
+		persistProcessInstances(workingMemory);
+		return processInstance.getId();
+	}
+
+	public void completeWorkItem(long workItemId, Map<String, Object> results) {
+		InternalWorkingMemory workingMemory = createWorkingMemory();
+		WorkItemInfo workItemInfo = manager.find(WorkItemInfo.class, workItemId);
+		if (workItemInfo == null) {
+			throw new IllegalArgumentException(
+				"Could not find work item " + workItemId);
+		}
+		manager.remove(workItemInfo);
+		// TODO: should load other process instances as well
+		long processInstanceId = workItemInfo.getProcessInstanceId();
+		ProcessInstanceInfo processInstanceInfo = manager.find(ProcessInstanceInfo.class, processInstanceId);
+		if (processInstanceInfo == null) {
+			throw new IllegalArgumentException(
+				"Could not find process instance " + processInstanceId);
+		}
+		ProcessInstanceImpl processInstance = (ProcessInstanceImpl) processInstanceInfo.getProcessInstance();
+		processInstance.setProcess(((InternalRuleBase) workingMemory.getRuleBase()).getProcess(processInstance.getProcessId())); 
+		processInstance.setWorkingMemory(workingMemory);
+		processInstance.reconnect();
+		workingMemory.getWorkItemManager().completeWorkItem(workItemId, results);
+		persistProcessInstances(workingMemory);
+	}
+	
+	private InternalWorkingMemory createWorkingMemory() {
+		// TODO: share rule base
+		List<ProcessInfo> processInfos = processRepository.getProcessInfos();
+		PackageBuilder builder = new PackageBuilder();
+		for (ProcessInfo processInfo: processInfos) {
+			builder.addRuleFlow(new StringReader(processInfo.getProcessXML()));
+		}
+		Package pkg = builder.getPackage();
+		RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+		ruleBase.addPackage(pkg);
+		// create new working memory
+		InternalWorkingMemory workingMemory = (InternalWorkingMemory) ruleBase.newStatefulSession();
+		// TODO auto-register work item handlers (e.g. based on config)
+		workingMemory.getWorkItemManager().registerWorkItemHandler("Log", new SystemOutWorkItemHandler());
+		workingMemory.getWorkItemManager().registerWorkItemHandler("Human Task", new EnterpriseWorkItemHandler());
+		return workingMemory;
+	}
+	
+	private void persistProcessInstances(WorkingMemory workingMemory) {
+		for (ProcessInstance pi: workingMemory.getProcessInstances()) {
+			// persist process instance if necessary
+			ProcessInstanceInfo processInstanceInfo = manager.find(ProcessInstanceInfo.class, pi.getId());
+			if (processInstanceInfo == null) {
+				processInstanceInfo = new ProcessInstanceInfo();
+			}
+			processInstanceInfo.setProcessInstance(pi);
+			manager.persist(processInstanceInfo);
+			System.out.println("Persisted process instance" + pi.getId());
+		}
+		// TODO remove process instances that are not longer there
+		// TODO make smarter, e.g. by registering a listener
+		// before starting execution and only updating changed instances
+	}
+
+	public class EnterpriseWorkItemHandler implements WorkItemHandler {
+
+		public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
+			WorkItemInfo workItemInfo = new WorkItemInfo();
+			workItemInfo.setWorkItemId(workItem.getId());
+			workItemInfo.setProcessInstanceId(workItem.getProcessInstanceId());
+			workItemInfo.setName(workItem.getName());
+			workItemInfo.setParameters(workItem.getParameters());
+			ProcessServiceBean.this.manager.persist(workItemInfo);
+			System.out.println("Persisted work item " + workItem.getName() + " [" + workItem.getId() + "]");
+			for (Map.Entry<String, Object> entry: workItem.getParameters().entrySet()) {
+				System.out.println("  " + entry.getKey() + " = " + entry.getValue());
+			}
+		}
+
+		public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
+			WorkItemInfo workItemInfo = ProcessServiceBean.this.manager.find(WorkItemInfo.class, workItem.getId());
+			ProcessServiceBean.this.manager.remove(workItemInfo);
+			System.out.println("Aborted work item " + workItem.getName() + " [" + workItem.getId() + "]");
+		}
+
+	}
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/processinstance/WorkItemInfo.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/processinstance/WorkItemInfo.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/processinstance/WorkItemInfo.java	2008-06-03 15:59:53 UTC (rev 20272)
@@ -0,0 +1,50 @@
+package org.drools.process.enterprise.processinstance;
+
+import java.util.Map;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Transient;
+
+ at Entity
+public class WorkItemInfo {
+
+	private @Id long workItemId;
+	private String name;
+	// TODO
+    private @Transient Map<String, Object> parameters;
+    private long processInstanceId;
+    
+	public long getWorkItemId() {
+		return workItemId;
+	}
+	
+	public void setWorkItemId(long workItemId) {
+		this.workItemId = workItemId;
+	}
+	
+	public String getName() {
+		return name;
+	}
+	
+	public void setName(String name) {
+		this.name = name;
+	}
+	
+	public Map<String, Object> getParameters() {
+		return parameters;
+	}
+	
+	public void setParameters(Map<String, Object> parameters) {
+		this.parameters = parameters;
+	}
+	
+	public long getProcessInstanceId() {
+		return processInstanceId;
+	}
+	
+	public void setProcessInstanceId(long processInstanceId) {
+		this.processInstanceId = processInstanceId;
+	}
+	
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/repository/ProcessInfo.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/repository/ProcessInfo.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/repository/ProcessInfo.java	2008-06-03 15:59:53 UTC (rev 20272)
@@ -0,0 +1,52 @@
+package org.drools.process.enterprise.repository;
+
+import java.io.IOException;
+import java.io.StringReader;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.Transient;
+
+import org.drools.compiler.PackageBuilderConfiguration;
+import org.drools.process.core.Process;
+import org.drools.xml.XmlProcessReader;
+import org.xml.sax.SAXException;
+
+ at Entity
+public class ProcessInfo {
+
+	private @Id String processId;
+	private @Lob String processXML;
+	private @Transient Process process;
+	
+	public String getProcessId() {
+		return processId;
+	}
+	
+	public void setProcessXML(String processId, String processXML) {
+		this.processId = processId;
+		this.processXML = processXML;
+	}
+	
+	public Process getProcess() {
+		if (process == null) {
+	        try {
+	        	PackageBuilderConfiguration configuration = new PackageBuilderConfiguration();
+				process = new XmlProcessReader(configuration.getSemanticModules()).read(new StringReader(processXML));
+	        } catch (IOException e) {
+	        	throw new IllegalArgumentException(
+					"IOException while loading process: " + e.getMessage());
+	        } catch (SAXException e) {
+	        	throw new IllegalArgumentException(
+					"SAXException while loading process: " + e.getMessage());
+	        }
+		}
+		return process;
+	}
+	
+	public String getProcessXML() {
+		return processXML;
+	}
+	
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/repository/ProcessRepository.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/repository/ProcessRepository.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/repository/ProcessRepository.java	2008-06-03 15:59:53 UTC (rev 20272)
@@ -0,0 +1,16 @@
+package org.drools.process.enterprise.repository;
+
+import java.util.List;
+
+import javax.ejb.Remote;
+
+ at Remote
+public interface ProcessRepository {
+
+	void storeProcess(String processId, String processXML);
+	
+	ProcessInfo getProcessInfo(String processId);
+	
+	List<ProcessInfo> getProcessInfos();
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/repository/ProcessRepositoryBean.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/repository/ProcessRepositoryBean.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/java/org/drools/process/enterprise/repository/ProcessRepositoryBean.java	2008-06-03 15:59:53 UTC (rev 20272)
@@ -0,0 +1,34 @@
+package org.drools.process.enterprise.repository;
+
+import java.util.List;
+
+import javax.ejb.Stateless;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+ at Stateless
+public class ProcessRepositoryBean implements ProcessRepository {
+
+	private @PersistenceContext EntityManager manager;
+	   
+	public void storeProcess(String processId, String processXML) {
+		ProcessInfo processInfo = manager.find(ProcessInfo.class, processId);
+		if (processInfo != null) {
+			System.out.println("Overriding existing process definition " + processId);
+		} else {
+			processInfo = new ProcessInfo();
+		}
+		processInfo.setProcessXML(processId, processXML);
+		manager.persist(processInfo);
+		System.out.println("Stored process " + processId);
+	}
+	
+	public ProcessInfo getProcessInfo(String processId) {
+		return manager.find(ProcessInfo.class, processId);
+	}
+	
+	public List<ProcessInfo> getProcessInfos() {
+		return manager.createQuery("from ProcessInfo p").getResultList();
+	}
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/resources/META-INF/persistence.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/resources/META-INF/persistence.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/resources/META-INF/persistence.xml	2008-06-03 15:59:53 UTC (rev 20272)
@@ -0,0 +1,8 @@
+<persistence>
+ <persistence-unit name="ProcessService">
+  <jta-data-source>java:/DefaultDS</jta-data-source>
+  <properties>
+   <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+  </properties>
+ </persistence-unit>
+</persistence>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/resources/jndi.properties
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/resources/jndi.properties	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/main/resources/jndi.properties	2008-06-03 15:59:53 UTC (rev 20272)
@@ -0,0 +1,3 @@
+java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
+java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
+java.naming.provider.url=localhost:1099
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/process/enterprise/client/ProcessRepositoryClient.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/process/enterprise/client/ProcessRepositoryClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/process/enterprise/client/ProcessRepositoryClient.java	2008-06-03 15:59:53 UTC (rev 20272)
@@ -0,0 +1,59 @@
+package org.drools.process.enterprise.client;
+
+import javax.naming.InitialContext;
+
+import org.drools.process.enterprise.repository.ProcessRepository;
+
+public class ProcessRepositoryClient {
+
+	public static void main(String[] args) throws Exception {
+		InitialContext ctx = new InitialContext();
+		ProcessRepository processRepository = (ProcessRepository)
+			ctx.lookup("ProcessRepositoryBean/remote");
+		String processXML = 
+			"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+			"<process xmlns=\"http://drools.org/drools-4.0/process\"\n" +
+			"         xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
+			"         xs:schemaLocation=\"http://drools.org/drools-4.0/process drools-processes-4.0.xsd\"\n" +
+			"         type=\"RuleFlow\" name=\"ruleflow\" id=\"com.sample.ruleflow\" package-name=\"com.sample\" >\n" +
+			"\n" +
+			"  <header>\n" +
+			"  </header>\n" +
+			"\n" +
+			"  <nodes>\n" +
+			"    <start id=\"1\" name=\"Start\" />\n" +
+		    "    <action id=\"2\" name=\"java\" dialect=\"java\" >System.out.println(\"Executing action\");</action>\n" +
+		    "	 <split id=\"3\" name=\"Split\" type=\"1\" />\n" +
+		    "    <workItem id=\"4\" name=\"Log\" >\n" +
+		    "      <work name=\"Log\" >\n" +
+		    "        <parameter name=\"Message\" type=\"org.drools.process.core.datatype.impl.type.StringDataType\" >This is a log message !</parameter>\n" +
+		    "      </work>\n" +
+		    "    </workItem>\n" +
+		    "    <workItem id=\"5\" name=\"Human Task\" >\n" +
+		    "      <work name=\"Human Task\" >\n" +
+		    "        <parameter name=\"Priority\" type=\"org.drools.process.core.datatype.impl.type.StringDataType\" >HIGH</parameter>\n" +
+		    "        <parameter name=\"TaskName\" type=\"org.drools.process.core.datatype.impl.type.StringDataType\" >Phone customer</parameter>\n" +
+		    "        <parameter name=\"Comment\" type=\"org.drools.process.core.datatype.impl.type.StringDataType\" >This is a comment !</parameter>\n" +
+		    "        <parameter name=\"ActorId\" type=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n" +
+		    "      </work>\n" +
+		    "    </workItem>\n" +
+		    "    <join id=\"6\" name=\"Join\" type=\"1\" />\n" +
+		    "    <end id=\"7\" name=\"End\" />\n" +
+			"  </nodes>\n" +
+			"\n" +
+			"  <connections>\n" +
+			"    <connection from=\"1\" to=\"2\"/>\n" +
+			"    <connection from=\"2\" to=\"3\"/>\n" +
+			"    <connection from=\"3\" to=\"4\"/>\n" +
+			"    <connection from=\"3\" to=\"5\"/>\n" +
+			"    <connection from=\"4\" to=\"6\"/>\n" +
+			"    <connection from=\"5\" to=\"6\"/>\n" +
+			"    <connection from=\"6\" to=\"7\"/>\n" +
+			"  </connections>\n" +
+			"\n" +
+			"</process>";
+		
+		processRepository.storeProcess("com.sample.ruleflow", processXML);
+	}
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/process/enterprise/client/ProcessServiceClient.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/process/enterprise/client/ProcessServiceClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/process/enterprise/client/ProcessServiceClient.java	2008-06-03 15:59:53 UTC (rev 20272)
@@ -0,0 +1,17 @@
+package org.drools.process.enterprise.client;
+
+import javax.naming.InitialContext;
+
+import org.drools.process.enterprise.processinstance.ProcessService;
+
+public class ProcessServiceClient {
+
+	public static void main(String[] args) throws Exception {
+		InitialContext ctx = new InitialContext();
+		ProcessService processService = (ProcessService)
+			ctx.lookup("ProcessServiceBean/remote");
+
+		System.out.println(processService.startProcess("com.sample.ruleflow"));
+	}
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/process/enterprise/client/WorkItemServiceClient.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/process/enterprise/client/WorkItemServiceClient.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-process-enterprise/src/test/java/org/drools/process/enterprise/client/WorkItemServiceClient.java	2008-06-03 15:59:53 UTC (rev 20272)
@@ -0,0 +1,17 @@
+package org.drools.process.enterprise.client;
+
+import javax.naming.InitialContext;
+
+import org.drools.process.enterprise.processinstance.ProcessService;
+
+public class WorkItemServiceClient {
+
+	public static void main(String[] args) throws Exception {
+		InitialContext ctx = new InitialContext();
+		ProcessService processService = (ProcessService)
+			ctx.lookup("ProcessServiceBean/remote");
+
+		processService.completeWorkItem(2, null);
+	}
+
+}
\ No newline at end of file




More information about the jboss-svn-commits mailing list