[jboss-svn-commits] JBL Code SVN: r26714 - in labs/jbossrules/trunk/drools-process: drools-gwt-console and 22 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun May 24 19:26:10 EDT 2009
Author: KrisVerlaenen
Date: 2009-05-24 19:26:09 -0400 (Sun, 24 May 2009)
New Revision: 26714
Added:
labs/jbossrules/trunk/drools-process/drools-gwt-console/
labs/jbossrules/trunk/drools-process/drools-gwt-console/.classpath
labs/jbossrules/trunk/drools-process/drools-gwt-console/.project
labs/jbossrules/trunk/drools-process/drools-gwt-console/pom.xml
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowCommandDelegate.java
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowManagementFactory.java
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowProcessManagement.java
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowTaskManagement.java
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowTransform.java
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowUserManagement.java
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/resources/
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/resources/ChangeSet.xml
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/resources/META-INF/
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/resources/META-INF/services/
labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/resources/META-INF/services/org.jboss.bpm.console.server.integration.ManagementFactory
labs/jbossrules/trunk/drools-process/drools-gwt-form/
labs/jbossrules/trunk/drools-process/drools-gwt-form/.classpath
labs/jbossrules/trunk/drools-process/drools-gwt-form/.project
labs/jbossrules/trunk/drools-process/drools-gwt-form/pom.xml
labs/jbossrules/trunk/drools-process/drools-gwt-form/src/
labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/
labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/java/
labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/java/org/
labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/java/org/drools/
labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/java/org/drools/integration/
labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/java/org/drools/integration/console/
labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/java/org/drools/integration/console/forms/
labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/java/org/drools/integration/console/forms/ConfigurationUtils.java
labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/java/org/drools/integration/console/forms/TaskDispatcherPluginImpl.java
labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/resources/
labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/resources/META-INF/
labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/resources/META-INF/services/
labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/resources/META-INF/services/org.jboss.bpm.console.server.plugin.TaskDispatcherPlugin
labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/resources/MyTask.ftl
Log:
JBRULES-2097: Implementation for the BPM web-console
- initial implementation
Added: labs/jbossrules/trunk/drools-process/drools-gwt-console/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-console/.classpath (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-console/.classpath 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.1.1/antlr-runtime-3.1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-cli/2.0-SNAPSHOT/commons-cli-2.0-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-compress/1.0-SNAPSHOT/commons-compress-1.0-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-exec/1.0.0-SNAPSHOT/commons-exec-1.0.0-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-finder/1.0-SNAPSHOT/commons-finder-1.0-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.4/commons-io-1.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-net/commons-net/2.0/commons-net-2.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
+ <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-api/5.0.1.SNAPSHOT/drools-api-5.0.1.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-api/5.0.1.SNAPSHOT/drools-api-5.0.1.SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-bam/5.0.1.SNAPSHOT/drools-bam-5.0.1.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-bam/5.0.1.SNAPSHOT/drools-bam-5.0.1.SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-compiler/5.0.1.SNAPSHOT/drools-compiler-5.0.1.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-compiler/5.0.1.SNAPSHOT/drools-compiler-5.0.1.SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-core/5.0.1.SNAPSHOT/drools-core-5.0.1.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-core/5.0.1.SNAPSHOT/drools-core-5.0.1.SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-process-task/5.0.1.SNAPSHOT/drools-process-task-5.0.1.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-process-task/5.0.1.SNAPSHOT/drools-process-task-5.0.1.SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-workitems/5.0.1.SNAPSHOT/drools-workitems-5.0.1.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-workitems/5.0.1.SNAPSHOT/drools-workitems-5.0.1.SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/el/el-api/1.0/el-api-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/gdata/gdata-calendar/2.0/gdata-calendar-2.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/gdata/gdata-client/1.0/gdata-client-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/gdata/gdata-core/1.0/gdata-core-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/code/gson/gson/1.2.2/gson-1.2.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/bpm/gwt-console-rpc/1.0.0-SNAPSHOT/gwt-console-rpc-1.0.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/jboss/bpm/gwt-console-rpc/1.0.0-SNAPSHOT/gwt-console-rpc-1.0.0-SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/bpm/gwt-console-server-integration/1.0.0-SNAPSHOT/gwt-console-server-integration-1.0.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/jboss/bpm/gwt-console-server-integration/1.0.0-SNAPSHOT/gwt-console-server-integration-1.0.0-SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/h2database/h2/1.0.77/h2-1.0.77.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.1.0.GA/hibernate-commons-annotations-3.1.0.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-core/3.3.0.SP1/hibernate-core-3.3.0.SP1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/el/jboss-el/1.0_02.CR2/jboss-el-1.0_02.CR2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/seam/jboss-seam/2.1.1.GA/jboss-seam-2.1.1.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jdom/jdom/1.0/jdom-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.1/jta-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/mail/mail/1.4/mail-1.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/mina/mina-core/2.0.0-M3/mina-core-2.0.0-M3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.9-SNAPSHOT/mvel2-2.0.9-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/rome/rome/0.9/rome-0.9.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.5.0/slf4j-api-1.5.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-jdk14/1.5.2/slf4j-jdk14-1.5.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jivesoftware/smack/3.0.4/smack-3.0.4.jar"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-persistence-jpa"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
Added: labs/jbossrules/trunk/drools-process/drools-gwt-console/.project
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-console/.project (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-console/.project 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1,13 @@
+<projectDescription>
+ <name>drools-gwt-console</name>
+ <comment>A rule production system</comment>
+ <projects/>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-process/drools-gwt-console/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-console/pom.xml (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-console/pom.xml 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>drools</artifactId>
+ <groupId>org.drools</groupId>
+ <version>5.0.1.SNAPSHOT</version>
+ </parent>
+
+ <artifactId>drools-gwt-console</artifactId>
+ <packaging>jar</packaging>
+ <name>Drools :: GWT Console</name>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-api</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-core</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-compiler</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-process-task</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-bam</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.bpm</groupId>
+ <artifactId>gwt-console-server-integration</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <includes>
+ <include>**/*Test.java</include>
+ </includes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
Added: labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowCommandDelegate.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowCommandDelegate.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowCommandDelegate.java 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1,135 @@
+package org.drools.integration.console;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.agent.KnowledgeAgent;
+import org.drools.agent.KnowledgeAgentFactory;
+import org.drools.definition.KnowledgePackage;
+import org.drools.definition.process.Process;
+import org.drools.io.ResourceFactory;
+import org.drools.persistence.jpa.JPAKnowledgeService;
+import org.drools.process.audit.ProcessInstanceDbLog;
+import org.drools.process.audit.ProcessInstanceLog;
+import org.drools.process.audit.WorkingMemoryDbLogger;
+import org.drools.process.workitem.wsht.CommandBasedWSHumanTaskHandler;
+import org.drools.runtime.Environment;
+import org.drools.runtime.EnvironmentName;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.process.ProcessInstance;
+
+public class DroolsFlowCommandDelegate {
+
+ private static StatefulKnowledgeSession ksession;
+
+ private StatefulKnowledgeSession newStatefulKnowledgeSession() {
+ try {
+ KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent("Guvnor default");
+ kagent.applyChangeSet(ResourceFactory.newClassPathResource("ChangeSet.xml"));
+ kagent.monitorResourceChangeEvents(false);
+ KnowledgeBase kbase = kagent.getKnowledgeBase();
+ StatefulKnowledgeSession ksession = null;
+ EntityManagerFactory emf = Persistence.createEntityManagerFactory(
+ "org.drools.persistence.jpa");
+ Environment env = KnowledgeBaseFactory.newEnvironment();
+ env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);
+ try {
+ ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(
+ 1, kbase, null, env);
+ System.out.println("Loading session data ...");
+ } catch (RuntimeException e) {
+ if ("Could not find session data for id 1".equals(e.getMessage())) {
+ ksession = JPAKnowledgeService.newStatefulKnowledgeSession(
+ kbase, null, env);
+ System.out.println("Creating new session data ...");
+ } else {
+ throw e;
+ }
+ }
+ new WorkingMemoryDbLogger(ksession);
+ ksession.getWorkItemManager().registerWorkItemHandler(
+ "Human Task", new CommandBasedWSHumanTaskHandler(ksession));
+ System.out.println("Successfully loaded default package from Guvnor");
+ return ksession;
+ } catch (Throwable t) {
+ t.printStackTrace();
+ throw new RuntimeException(
+ "Could not initialize stateful knowledge session: "
+ + t.getMessage());
+ }
+ }
+
+ private StatefulKnowledgeSession getSession() {
+ if (ksession == null) {
+ ksession = newStatefulKnowledgeSession();
+ }
+ return ksession;
+ }
+
+ public List<Process> getProcesses() {
+ List<Process> result = new ArrayList<Process>();
+ for (KnowledgePackage kpackage: getSession().getKnowledgeBase().getKnowledgePackages()) {
+ result.addAll(kpackage.getProcesses());
+ }
+ return result;
+ }
+
+ public Process getProcess(String processId) {
+ for (KnowledgePackage kpackage: getSession().getKnowledgeBase().getKnowledgePackages()) {
+ for (Process process: kpackage.getProcesses()) {
+ if (processId.equals(process.getId())) {
+ return process;
+ }
+ }
+ }
+ return null;
+ }
+
+ public Process getProcessByName(String name) {
+ for (KnowledgePackage kpackage: getSession().getKnowledgeBase().getKnowledgePackages()) {
+ for (Process process: kpackage.getProcesses()) {
+ if (name.equals(process.getName())) {
+ return process;
+ }
+ }
+ }
+ return null;
+ }
+
+ public void removeProcess(String processId) {
+ throw new UnsupportedOperationException();
+ }
+
+ public ProcessInstanceLog getProcessInstanceLog(String processInstanceId) {
+ return ProcessInstanceDbLog.findProcessInstance(new Long(processInstanceId));
+ }
+
+ public List<ProcessInstanceLog> getProcessInstanceLogsByProcessId(String processId) {
+ return ProcessInstanceDbLog.findProcessInstances(processId);
+ }
+
+ public ProcessInstanceLog startProcess(String processId) {
+ long processInstanceId = ksession.startProcess(processId).getId();
+ return ProcessInstanceDbLog.findProcessInstance(processInstanceId);
+ }
+
+ public void abortProcessInstance(String processInstanceId) {
+ ProcessInstance processInstance = ksession.getProcessInstance(new Long(processInstanceId));
+ if (processInstance != null) {
+ ksession.abortProcessInstance(new Long(processInstanceId));
+ } else {
+ throw new IllegalArgumentException("Could not find process instance " + processInstanceId);
+ }
+ }
+
+ public void signalExecution(String executionId, String signal) {
+ ksession.getProcessInstance(new Long(executionId))
+ .signalEvent("signal", signal);
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowManagementFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowManagementFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowManagementFactory.java 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1,22 @@
+package org.drools.integration.console;
+
+import org.jboss.bpm.console.server.integration.ManagementFactory;
+import org.jboss.bpm.console.server.integration.ProcessManagement;
+import org.jboss.bpm.console.server.integration.TaskManagement;
+import org.jboss.bpm.console.server.integration.UserManagement;
+
+public class DroolsFlowManagementFactory extends ManagementFactory {
+
+ public ProcessManagement createProcessManagement() {
+ return new DroolsFlowProcessManagement();
+ }
+
+ public TaskManagement createTaskManagement() {
+ return new DroolsFlowTaskManagement();
+ }
+
+ public UserManagement createUserManagement() {
+ return new DroolsFlowUserManagement();
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowProcessManagement.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowProcessManagement.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowProcessManagement.java 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1,85 @@
+package org.drools.integration.console;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.process.audit.ProcessInstanceLog;
+import org.drools.definition.process.Process;
+import org.jboss.bpm.console.client.model.ProcessDefinitionRef;
+import org.jboss.bpm.console.client.model.ProcessInstanceRef;
+import org.jboss.bpm.console.client.model.ProcessInstanceRef.RESULT;
+import org.jboss.bpm.console.client.model.ProcessInstanceRef.STATE;
+import org.jboss.bpm.console.server.integration.ProcessManagement;
+
+public class DroolsFlowProcessManagement implements ProcessManagement {
+
+ private DroolsFlowCommandDelegate delegate;
+
+ public DroolsFlowProcessManagement() {
+ delegate = new DroolsFlowCommandDelegate();
+ }
+
+ public List<ProcessDefinitionRef> getProcessDefinitions() {
+ List<Process> processes = delegate.getProcesses();
+ List<ProcessDefinitionRef> result = new ArrayList<ProcessDefinitionRef>();
+ for (Process process: processes) {
+ result.add(DroolsFlowTransform.processDefinition(process));
+ }
+ return result;
+ }
+
+ public ProcessDefinitionRef getProcessDefinition(String definitionId) {
+ Process process = delegate.getProcess(definitionId);
+ return DroolsFlowTransform.processDefinition(process);
+ }
+
+ public List<ProcessDefinitionRef> removeProcessDefinition(String definitionId) {
+ delegate.removeProcess(definitionId);
+ return getProcessDefinitions();
+ }
+
+ public ProcessInstanceRef getProcessInstance(String instanceId) {
+ ProcessInstanceLog processInstance = delegate.getProcessInstanceLog(instanceId);
+ return DroolsFlowTransform.processInstance(processInstance);
+ }
+
+ public List<ProcessInstanceRef> getProcessInstances(String definitionId) {
+ List<ProcessInstanceLog> processInstances = delegate.getProcessInstanceLogsByProcessId(definitionId);
+ List<ProcessInstanceRef> result = new ArrayList<ProcessInstanceRef>();
+ for (ProcessInstanceLog processInstance: processInstances) {
+ result.add(DroolsFlowTransform.processInstance(processInstance));
+ }
+ return result;
+ }
+
+ public ProcessInstanceRef newInstance(String instanceId) {
+ ProcessInstanceLog processInstance = delegate.startProcess(instanceId);
+ return DroolsFlowTransform.processInstance(processInstance);
+ }
+
+ public void setProcessState(String instanceId, STATE nextState) {
+ if (nextState == STATE.ENDED) {
+ delegate.abortProcessInstance(instanceId);
+ } else {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ public void signalExecution(String executionId, String signal) {
+ delegate.signalExecution(executionId, signal);
+ }
+
+ public void deploy(String fileName, String contentType, InputStream deployment) {
+ // Do nothing
+ }
+
+ public void deleteInstance(String instanceId) {
+ delegate.abortProcessInstance(instanceId);
+ }
+
+ public void endInstance(String instanceId, RESULT result) {
+ delegate.abortProcessInstance(instanceId);
+ }
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowTaskManagement.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowTaskManagement.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowTaskManagement.java 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1,145 @@
+package org.drools.integration.console;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.SystemEventListenerFactory;
+import org.drools.process.workitem.wsht.BlockingGetTaskResponseHandler;
+import org.drools.task.AccessType;
+import org.drools.task.Status;
+import org.drools.task.Task;
+import org.drools.task.query.TaskSummary;
+import org.drools.task.service.ContentData;
+import org.drools.task.service.MinaTaskClient;
+import org.drools.task.service.TaskClientHandler;
+import org.drools.task.service.responsehandlers.BlockingTaskOperationResponseHandler;
+import org.drools.task.service.responsehandlers.BlockingTaskSummaryResponseHandler;
+import org.jboss.bpm.console.client.model.TaskRef;
+import org.jboss.bpm.console.server.integration.TaskManagement;
+
+public class DroolsFlowTaskManagement implements TaskManagement {
+
+ private String ipAddress = "127.0.0.1";
+ private int port = 9123;
+ private MinaTaskClient client;
+
+ public void setConnection(String ipAddress, int port) {
+ this.ipAddress = ipAddress;
+ this.port = port;
+ }
+
+ public void connect() {
+ if (client == null) {
+ client = new MinaTaskClient(
+ "org.drools.process.workitem.wsht.WSHumanTaskHandler",
+ new TaskClientHandler(SystemEventListenerFactory.getSystemEventListener()));
+ NioSocketConnector connector = new NioSocketConnector();
+ SocketAddress address = new InetSocketAddress(ipAddress, port);
+ boolean connected = client.connect(connector, address);
+ if (!connected) {
+ throw new IllegalArgumentException(
+ "Could not connect task client");
+ }
+ }
+ }
+
+ public TaskRef getTaskById(long taskId) {
+ connect();
+ BlockingGetTaskResponseHandler responseHandler = new BlockingGetTaskResponseHandler();
+ client.getTask(taskId, responseHandler);
+ Task task = responseHandler.getTask();
+ return DroolsFlowTransform.task(task);
+ }
+
+ public void assignTask(long taskId, String idRef) {
+ connect();
+ BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
+ client.claim(taskId, idRef, responseHandler);
+ responseHandler.waitTillDone(5000);
+ }
+
+ @SuppressWarnings("unchecked")
+ public void completeTask(long taskId, Map data) {
+ connect();
+ BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
+ // TODO: fixme
+ client.start(taskId, "admin", responseHandler);
+ responseHandler.waitTillDone(5000);
+ responseHandler = new BlockingTaskOperationResponseHandler();
+ ContentData contentData = null;
+ if (data != null) {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ ObjectOutputStream out;
+ try {
+ out = new ObjectOutputStream(bos);
+ out.writeObject(data);
+ out.close();
+ contentData = new ContentData();
+ contentData.setContent(bos.toByteArray());
+ contentData.setAccessType(AccessType.Inline);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ // TODO: fixme
+ client.complete(taskId, "admin", contentData, responseHandler);
+ responseHandler.waitTillDone(5000);
+ }
+
+ @SuppressWarnings("unchecked")
+ public void completeTask(long taskId, String outcome, Map data) {
+ data.put("outcome", outcome);
+ completeTask(taskId, data);
+ }
+
+ public void releaseTask(long taskId) {
+ connect();
+ BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler();
+ // TODO: fixme
+ client.release(taskId, "Administrator", responseHandler);
+ responseHandler.waitTillDone(5000);
+ }
+
+ public List<TaskRef> getAssignedTasks(String idRef) {
+ connect();
+ List<TaskRef> result = new ArrayList<TaskRef>();
+ try {
+ BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
+ client.getTasksOwned(idRef, "en-UK", responseHandler);
+ List<TaskSummary> tasks = responseHandler.getResults();
+ for (TaskSummary task: tasks) {
+ if (task.getStatus() == Status.Reserved) {
+ result.add(DroolsFlowTransform.task(task));
+ }
+ }
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ return result;
+ }
+
+ public List<TaskRef> getUnassignedTasks(String idRef, String participationType) {
+ // TODO participationType ?
+ connect();
+ List<TaskRef> result = new ArrayList<TaskRef>();
+ try {
+ BlockingTaskSummaryResponseHandler responseHandler = new BlockingTaskSummaryResponseHandler();
+ client.getTasksAssignedAsPotentialOwner(idRef, "en-UK", responseHandler);
+ List<TaskSummary> tasks = responseHandler.getResults();
+ for (TaskSummary task: tasks) {
+ result.add(DroolsFlowTransform.task(task));
+ }
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ return result;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowTransform.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowTransform.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowTransform.java 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1,63 @@
+package org.drools.integration.console;
+
+import org.drools.definition.process.Process;
+import org.drools.process.audit.ProcessInstanceLog;
+import org.drools.task.I18NText;
+import org.drools.task.Task;
+import org.drools.task.query.TaskSummary;
+import org.jboss.bpm.console.client.model.ProcessDefinitionRef;
+import org.jboss.bpm.console.client.model.ProcessInstanceRef;
+import org.jboss.bpm.console.client.model.TaskRef;
+import org.jboss.bpm.console.client.model.jbpm3.TokenReference;
+
+public class DroolsFlowTransform {
+
+ public static ProcessDefinitionRef processDefinition(Process process) {
+ return new ProcessDefinitionRef(
+ process.getId(), process.getName(), new Long(process.getVersion()));
+ }
+
+ public static ProcessInstanceRef processInstance(ProcessInstanceLog processInstance) {
+ ProcessInstanceRef result = new ProcessInstanceRef(
+ processInstance.getProcessInstanceId() + "",
+ processInstance.getProcessId(),
+ processInstance.getStart(),
+ processInstance.getEnd(),
+ false);
+ TokenReference token = new TokenReference(
+ processInstance.getProcessInstanceId() + "", null, "");
+ result.setRootToken(token);
+ return result;
+ }
+
+ public static TaskRef task(TaskSummary task) {
+ return new TaskRef(
+ task.getId(),
+ // TODO: fixme
+ "-1",
+ "-1",
+ task.getName(),
+ task.getActualOwner() == null ? null : task.getActualOwner().getId(),
+ false,
+ false);
+ }
+
+ public static TaskRef task(Task task) {
+ String name = "";
+ for (I18NText text: task.getNames()) {
+ if ("en-UK".equals(text.getLanguage())) {
+ name = text.getText();
+ }
+ }
+ return new TaskRef(
+ task.getId(),
+ // TODO: fixme
+ "-1",
+ "-1",
+ name,
+ task.getTaskData().getActualOwner() == null ? null : task.getTaskData().getActualOwner().getId(),
+ false,
+ false);
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowUserManagement.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowUserManagement.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/java/org/drools/integration/console/DroolsFlowUserManagement.java 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1,22 @@
+package org.drools.integration.console;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.bpm.console.server.integration.UserManagement;
+
+public class DroolsFlowUserManagement implements UserManagement {
+
+ public List<String> getActorsForGroup(String groupName) {
+ List<String> result = new ArrayList<String>();
+ result.add("admin");
+ return result;
+ }
+
+ public List<String> getGroupsForActor(String actorId) {
+ List<String> result = new ArrayList<String>();
+ result.add("admins");
+ return result;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/resources/ChangeSet.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/resources/ChangeSet.xml (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/resources/ChangeSet.xml 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1,7 @@
+<change-set xmlns='http://drools.org/drools-5.0/change-set'
+ xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
+ xs:schemaLocation='http://drools.org/drools-5.0/change-set drools-change-set-5.0.xsd' >
+ <add>
+ <resource source='http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/default/LATEST' type='PKG' />
+ </add>
+</change-set>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/resources/META-INF/services/org.jboss.bpm.console.server.integration.ManagementFactory
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/resources/META-INF/services/org.jboss.bpm.console.server.integration.ManagementFactory (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-console/src/main/resources/META-INF/services/org.jboss.bpm.console.server.integration.ManagementFactory 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1 @@
+org.drools.integration.console.DroolsFlowManagementFactory
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-process/drools-gwt-form/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-form/.classpath (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-form/.classpath 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1,55 @@
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
+ <classpathentry kind="output" path="target/classes"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.1.1/antlr-runtime-3.1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-cli/2.0-SNAPSHOT/commons-cli-2.0-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.1/commons-collections-3.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-compress/1.0-SNAPSHOT/commons-compress-1.0-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-exec/1.0.0-SNAPSHOT/commons-exec-1.0.0-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/commons/commons-finder/1.0-SNAPSHOT/commons-finder-1.0-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.4/commons-io-1.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-net/commons-net/2.0/commons-net-2.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
+ <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-api/5.0.1.SNAPSHOT/drools-api-5.0.1.SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-compiler/5.0.1.SNAPSHOT/drools-compiler-5.0.1.SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-core/5.0.1.SNAPSHOT/drools-core-5.0.1.SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-process-task/5.0.1.SNAPSHOT/drools-process-task-5.0.1.SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/drools/drools-workitems/5.0.1.SNAPSHOT/drools-workitems-5.0.1.SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/el/el-api/1.0/el-api-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/freemarker/freemarker/2.3.15/freemarker-2.3.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/code/gson/gson/1.2.2/gson-1.2.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/bpm/gwt-console-rpc/1.0.0-SNAPSHOT/gwt-console-rpc-1.0.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/jboss/bpm/gwt-console-rpc/1.0.0-SNAPSHOT/gwt-console-rpc-1.0.0-SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/bpm/gwt-console-server-integration/1.0.0-SNAPSHOT/gwt-console-server-integration-1.0.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/jboss/bpm/gwt-console-server-integration/1.0.0-SNAPSHOT/gwt-console-server-integration-1.0.0-SNAPSHOT-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/h2database/h2/1.0.77/h2-1.0.77.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.1.0.GA/hibernate-commons-annotations-3.1.0.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-core/3.3.0.SP1/hibernate-core-3.3.0.SP1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/el/jboss-el/1.0_02.CR2/jboss-el-1.0_02.CR2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/seam/jboss-seam/2.1.1.GA/jboss-seam-2.1.1.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jdom/jdom/1.0/jdom-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.1/jta-1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/mail/mail/1.4/mail-1.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/mina/mina-core/2.0.0-M3/mina-core-2.0.0-M3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.9/mvel2-2.0.9.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/rome/rome/0.9/rome-0.9.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.5.0/slf4j-api-1.5.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-jdk14/1.5.2/slf4j-jdk14-1.5.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jivesoftware/smack/3.0.4/smack-3.0.4.jar"/>
+</classpath>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-process/drools-gwt-form/.project
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-form/.project (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-form/.project 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1,13 @@
+<projectDescription>
+ <name>drools-gwt-form</name>
+ <comment>A rule production system</comment>
+ <projects/>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-process/drools-gwt-form/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-form/pom.xml (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-form/pom.xml 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>drools</artifactId>
+ <groupId>org.drools</groupId>
+ <version>5.0.1.SNAPSHOT</version>
+ </parent>
+
+ <artifactId>drools-gwt-form</artifactId>
+ <packaging>jar</packaging>
+ <name>Drools :: GWT Console Forms</name>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-process-task</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.bpm</groupId>
+ <artifactId>gwt-console-server-integration</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.freemarker</groupId>
+ <artifactId>freemarker</artifactId>
+ <version>2.3.15</version>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <includes>
+ <include>**/*Test.java</include>
+ </includes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
Added: labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/java/org/drools/integration/console/forms/ConfigurationUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/java/org/drools/integration/console/forms/ConfigurationUtils.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/java/org/drools/integration/console/forms/ConfigurationUtils.java 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1,98 @@
+package org.drools.integration.console.forms;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Set;
+
+import javax.management.AttributeNotFoundException;
+import javax.management.JMException;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
+public class ConfigurationUtils {
+
+ private final static String UNDEFINED_HOSTNAME = "undefined.host";
+
+ private String webServiceHost;
+ private int webServicePort;
+ private MBeanServer mbeanServer;
+
+ public String getWebServiceHost() {
+ return webServiceHost;
+ }
+
+ public void setWebServiceHost(String host) throws UnknownHostException {
+ if (host == null || host.trim().length() == 0) {
+ System.out.println("Using undefined host: " + UNDEFINED_HOSTNAME);
+ host = UNDEFINED_HOSTNAME;
+ }
+ if ("0.0.0.0".equals(host)) {
+ InetAddress localHost = InetAddress.getLocalHost();
+ System.out.println("Using local host: " + localHost.getHostName());
+ host = localHost.getHostName();
+ }
+ this.webServiceHost = host;
+ }
+
+ public int getWebServicePort() {
+ if (webServicePort <= 0)
+ webServicePort = getConnectorPort("HTTP/1.1", false);
+
+ int localPort = webServicePort;
+ if (localPort <= 0) {
+ // Do not initialize webServicePort with the default, the connector
+ // port may become available later
+ System.out.println("Unable to calculate 'WebServicePort', using default '8080'");
+ localPort = 8080;
+ }
+
+ return localPort;
+ }
+
+ private int getConnectorPort(final String protocol, final boolean secure) {
+ int port = -1;
+
+ try {
+ ObjectName connectors = new ObjectName("jboss.web:type=Connector,*");
+
+ Set<?> connectorNames = getMbeanServer().queryNames(connectors, null);
+ for (Object current : connectorNames) {
+ ObjectName currentName = (ObjectName) current;
+
+ try {
+ int connectorPort = (Integer) getMbeanServer()
+ .getAttribute(currentName, "port");
+ boolean connectorSecure = (Boolean) getMbeanServer()
+ .getAttribute(currentName, "secure");
+ String connectorProtocol = (String) getMbeanServer()
+ .getAttribute(currentName, "protocol");
+
+ if (protocol.equals(connectorProtocol)
+ && secure == connectorSecure) {
+ if (port > -1) {
+ System.out.println("Found multiple connectors for protocol='"
+ + protocol + "' and secure='" + secure
+ + "', using first port found '" + port + "'");
+ } else {
+ port = connectorPort;
+ }
+ }
+ } catch (AttributeNotFoundException ignored) {
+ }
+ }
+
+ return port;
+ } catch (JMException e) {
+ return -1;
+ }
+ }
+
+ public MBeanServer getMbeanServer() {
+ return mbeanServer;
+ }
+
+ public void setMbeanServer(MBeanServer mbeanServer) {
+ this.mbeanServer = mbeanServer;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/java/org/drools/integration/console/forms/TaskDispatcherPluginImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/java/org/drools/integration/console/forms/TaskDispatcherPluginImpl.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/java/org/drools/integration/console/forms/TaskDispatcherPluginImpl.java 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1,161 @@
+package org.drools.integration.console.forms;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.net.InetSocketAddress;
+import java.net.MalformedURLException;
+import java.net.SocketAddress;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.activation.DataHandler;
+import javax.activation.DataSource;
+
+import org.apache.mina.transport.socket.nio.NioSocketConnector;
+import org.drools.SystemEventListenerFactory;
+import org.drools.task.Task;
+import org.drools.task.service.MinaTaskClient;
+import org.drools.task.service.TaskClientHandler;
+import org.drools.task.service.responsehandlers.BlockingGetTaskResponseHandler;
+import org.jboss.bpm.console.server.plugin.TaskDispatcherPlugin;
+
+import freemarker.template.DefaultObjectWrapper;
+import freemarker.template.Template;
+
+/**
+ * @author Kris Verlaenen
+ */
+public class TaskDispatcherPluginImpl implements TaskDispatcherPlugin {
+
+ // TODO make this configurable
+ private String ipAddress = "127.0.0.1";
+ private int port = 9123;
+ private MinaTaskClient client;
+
+ public TaskDispatcherPluginImpl() {
+ System.out.println("Created TaskDispatcherPlugin");
+ }
+
+ public void connect() {
+ if (client == null) {
+ client = new MinaTaskClient(
+ "org.drools.process.workitem.wsht.WSHumanTaskHandler",
+ new TaskClientHandler(SystemEventListenerFactory.getSystemEventListener()));
+ NioSocketConnector connector = new NioSocketConnector();
+ SocketAddress address = new InetSocketAddress(ipAddress, port);
+ boolean connected = client.connect(connector, address);
+ if (!connected) {
+ throw new IllegalArgumentException(
+ "Could not connect task client");
+ }
+ }
+ }
+
+ public URL getDispatchUrl(long taskId) {
+ StringBuffer sb = new StringBuffer();
+ // TODO: fix this for non localhost:8080
+ sb.append("http://");
+ sb.append("localhost");
+ sb.append(":").append(8080);
+ sb.append("/gwt-console-server/rs/task/");
+ sb.append(taskId);
+ sb.append("/render");
+
+ try {
+ return new URL(sb.toString());
+ } catch (MalformedURLException e) {
+ throw new RuntimeException("Failed to resolve task dispatch url", e);
+ }
+ }
+
+ public DataHandler provideTaskUI(long taskId) {
+ DataHandler result = null;
+
+ // check if a template exists
+ String name = "/MyTask.ftl";
+ InputStream template = TaskDispatcherPluginImpl.class.getResourceAsStream(name);
+
+ // merge template with process variables
+ if (template != null) {
+ // plugin context
+
+ // TODO: fix this for non localhost:8080
+ StringBuffer sb = new StringBuffer();
+ sb.append("http://");
+ sb.append("localhost");
+ sb.append(":").append(8080);
+ sb.append("/gwt-console-server/rs/task/");
+ sb.append(taskId);
+ sb.append("/process");
+
+ Map<String, Object> renderContext = new HashMap<String, Object>();
+
+ connect();
+ BlockingGetTaskResponseHandler getTaskResponseHandler = new BlockingGetTaskResponseHandler();
+ client.getTask(taskId, getTaskResponseHandler);
+ Task task = getTaskResponseHandler.getTask();
+ renderContext.put("task", task);
+
+ result = processTemplate(name, template, renderContext);
+ }
+
+ return result;
+ }
+
+ private DataHandler processTemplate(final String name, InputStream src,
+ Map<String, Object> renderContext) {
+ DataHandler merged = null;
+
+ try {
+ freemarker.template.Configuration cfg = new freemarker.template.Configuration();
+ cfg.setObjectWrapper(new DefaultObjectWrapper());
+ cfg.setTemplateUpdateDelay(0);
+
+ Template temp = new Template(name, new InputStreamReader(src), cfg);
+ temp.dump(System.out);
+
+ final ByteArrayOutputStream bout = new ByteArrayOutputStream();
+ Writer out = new OutputStreamWriter(bout);
+ temp.process(renderContext, out);
+ out.flush();
+
+ merged = new DataHandler(
+
+ new DataSource() {
+
+ public InputStream getInputStream() throws IOException {
+ return new ByteArrayInputStream(bout.toByteArray());
+ }
+
+ public OutputStream getOutputStream() throws IOException {
+ return bout;
+ }
+
+ public String getContentType() {
+ return "*/*";
+ }
+
+ public String getName() {
+ return name + "_DataSource";
+ }
+ });
+
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to process task template", e);
+ }
+
+ return merged;
+ }
+
+ public void processCompletion(long taskId, String outcome, InputStream payload) {
+ // Do nothing
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/resources/META-INF/services/org.jboss.bpm.console.server.plugin.TaskDispatcherPlugin
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/resources/META-INF/services/org.jboss.bpm.console.server.plugin.TaskDispatcherPlugin (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/resources/META-INF/services/org.jboss.bpm.console.server.plugin.TaskDispatcherPlugin 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1 @@
+org.drools.integration.console.forms.TaskDispatcherPluginImpl
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/resources/MyTask.ftl
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/resources/MyTask.ftl (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-form/src/main/resources/MyTask.ftl 2009-05-24 23:26:09 UTC (rev 26714)
@@ -0,0 +1,10 @@
+<html>
+<body>
+
+<h2>Task Form "${task.names[0].text}"</h2>
+<hr>
+<form action="process" method="POST" enctype="multipart/form-data">
+<input type="submit" name="outcome" value="Complete">
+</form>
+</body>
+</html>
\ No newline at end of file
More information about the jboss-svn-commits
mailing list