[jboss-svn-commits] JBL Code SVN: r26777 - in labs/jbossrules/trunk/drools-process: drools-gwt-graph and 11 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri May 29 12:28:34 EDT 2009


Author: KrisVerlaenen
Date: 2009-05-29 12:28:34 -0400 (Fri, 29 May 2009)
New Revision: 26777

Added:
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/.classpath
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/.project
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/pom.xml
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/java/
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/java/org/
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/java/org/drools/
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/java/org/drools/integration/
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/java/org/drools/integration/console/
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/java/org/drools/integration/console/graph/
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/java/org/drools/integration/console/graph/GraphViewerPluginImpl.java
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/resources/
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/resources/ChangeSet.xml
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/resources/META-INF/
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/resources/META-INF/services/
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/resources/META-INF/services/org.jboss.bpm.console.server.plugin.GraphViewerPlugin
   labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/resources/com.sample.eventing.png
Log:
JBRULES-2097: Implementation for the BPM web-console
 - added graph viewer implementation

Added: labs/jbossrules/trunk/drools-process/drools-gwt-graph/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-graph/.classpath	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-graph/.classpath	2009-05-29 16:28:34 UTC (rev 26777)
@@ -0,0 +1,32 @@
+<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/antlr/antlr/2.7.6/antlr-2.7.6.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/commons-collections/commons-collections/3.1/commons-collections-3.1.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.1.0.SNAPSHOT/drools-api-5.1.0.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-api/5.1.0.SNAPSHOT/drools-api-5.1.0.SNAPSHOT-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/drools/drools-bam/5.1.0.SNAPSHOT/drools-bam-5.1.0.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-bam/5.1.0.SNAPSHOT/drools-bam-5.1.0.SNAPSHOT-sources.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/drools/drools-core/5.1.0.SNAPSHOT/drools-core-5.1.0.SNAPSHOT.jar" sourcepath="M2_REPO/org/drools/drools-core/5.1.0.SNAPSHOT/drools-core-5.1.0.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/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/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/javassist/javassist/3.4.GA/javassist-3.4.GA.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/org/mvel/mvel2/2.0.10/mvel2-2.0.10.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
+  <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.5.0/slf4j-api-1.5.0.jar"/>
+</classpath>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-gwt-graph/.project
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-graph/.project	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-graph/.project	2009-05-29 16:28:34 UTC (rev 26777)
@@ -0,0 +1,13 @@
+<projectDescription>
+  <name>drools-gwt-graph</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-graph/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-graph/pom.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-graph/pom.xml	2009-05-29 16:28:34 UTC (rev 26777)
@@ -0,0 +1,49 @@
+<?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.1.0.SNAPSHOT</version>
+  </parent>
+
+  <artifactId>drools-gwt-graph</artifactId>
+  <packaging>jar</packaging>
+  <name>Drools :: GWT Console Graph Viewer</name>
+
+  <dependencies>  
+
+    <dependency>
+      <groupId>org.drools</groupId>
+      <artifactId>drools-core</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-graph/src/main/java/org/drools/integration/console/graph/GraphViewerPluginImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/java/org/drools/integration/console/graph/GraphViewerPluginImpl.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/java/org/drools/integration/console/graph/GraphViewerPluginImpl.java	2009-05-29 16:28:34 UTC (rev 26777)
@@ -0,0 +1,124 @@
+package org.drools.integration.console.graph;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.KnowledgeBase;
+import org.drools.agent.KnowledgeAgent;
+import org.drools.agent.KnowledgeAgentFactory;
+import org.drools.definition.process.Node;
+import org.drools.definition.process.NodeContainer;
+import org.drools.definition.process.Process;
+import org.drools.definition.process.WorkflowProcess;
+import org.drools.io.ResourceFactory;
+import org.drools.process.audit.NodeInstanceLog;
+import org.drools.process.audit.ProcessInstanceDbLog;
+import org.drools.process.audit.ProcessInstanceLog;
+import org.jboss.bpm.console.client.model.ActiveNodeInfo;
+import org.jboss.bpm.console.client.model.DiagramInfo;
+import org.jboss.bpm.console.client.model.DiagramNodeInfo;
+import org.jboss.bpm.console.server.plugin.GraphViewerPlugin;
+
+/**
+ * @author Kris Verlaenen
+ */
+public class GraphViewerPluginImpl implements GraphViewerPlugin {
+
+	public ActiveNodeInfo getActiveNodeInfo(String instanceId) {
+		// TODO: there can be more than one active node !
+		ProcessInstanceLog processInstance = ProcessInstanceDbLog.findProcessInstance(new Long(instanceId));
+		if (processInstance == null) {
+			throw new IllegalArgumentException("Could not find process instance " + instanceId);
+		}
+		Map<String, NodeInstanceLog> nodeInstances = new HashMap<String, NodeInstanceLog>();
+		for (NodeInstanceLog nodeInstance: ProcessInstanceDbLog.findNodeInstances(new Long(instanceId))) {
+			if (nodeInstance.getType() == NodeInstanceLog.TYPE_ENTER) {
+				nodeInstances.put(nodeInstance.getNodeInstanceId(), nodeInstance);
+			} else {
+				nodeInstances.remove(nodeInstance.getNodeInstanceId());
+			}
+		}
+		if (!nodeInstances.isEmpty()) {
+			NodeInstanceLog nodeInstance = nodeInstances.values().iterator().next();
+			DiagramInfo diagramInfo = getDiagramInfo(processInstance.getProcessId());
+			for (DiagramNodeInfo nodeInfo: diagramInfo.getNodeList()) {
+				if (nodeInfo.getName().equals("id=" + nodeInstance.getNodeId())) {
+					return new ActiveNodeInfo(diagramInfo.getWidth(), diagramInfo.getHeight(), nodeInfo);
+				}
+			}
+			throw new IllegalArgumentException("Could not find info for node "
+				+ nodeInstance.getNodeId() + " of process " + processInstance.getProcessId());
+		}
+		return null;
+	}
+
+	public DiagramInfo getDiagramInfo(String processId) {
+		KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent("Guvnor default");
+		kagent.applyChangeSet(ResourceFactory.newClassPathResource("ChangeSet.xml"));
+		kagent.monitorResourceChangeEvents(false);
+		KnowledgeBase kbase = kagent.getKnowledgeBase();
+		Process process = kbase.getProcess(processId);
+		if (process == null) {
+			return null;
+		}
+
+		DiagramInfo result = new DiagramInfo();
+		result.setWidth(932);
+		result.setHeight(541);
+		List<DiagramNodeInfo> nodeList = new ArrayList<DiagramNodeInfo>();
+		if (process instanceof WorkflowProcess) {
+			addNodesInfo(nodeList, ((WorkflowProcess) process).getNodes(), "id=");
+		}
+		result.setNodeList(nodeList);
+		return result;
+	}
+	
+	private void addNodesInfo(List<DiagramNodeInfo> nodeInfos, Node[] nodes, String prefix) {
+		for (Node node: nodes) {
+			nodeInfos.add(new DiagramNodeInfo(
+				prefix + node.getId(),
+				(Integer) node.getMetaData("x"),
+				(Integer) node.getMetaData("y"),
+				(Integer) node.getMetaData("width"),
+				(Integer) node.getMetaData("height")));
+			if (node instanceof NodeContainer) {
+				addNodesInfo(nodeInfos, ((NodeContainer) node).getNodes(), prefix + node.getId() + ":");
+			}
+		}
+	}
+
+	public byte[] getProcessImage(String processId) {
+		InputStream is = GraphViewerPluginImpl.class.getResourceAsStream("/" + processId + ".png");
+		if (is != null) {
+			ByteArrayOutputStream os = new ByteArrayOutputStream();
+			try {
+				transfer(is, os);
+			} catch (IOException e) {
+				throw new RuntimeException("Could not read process image: " + e.getMessage());
+			}
+			return os.toByteArray();
+		}
+		return null;
+	}
+	
+	private static final int BUFFER_SIZE = 512;
+
+	public static int transfer(InputStream in, OutputStream out) throws IOException {
+		int total = 0;
+		byte[] buffer = new byte[BUFFER_SIZE];
+		int bytesRead = in.read(buffer);
+		while (bytesRead != -1) {
+			out.write(buffer, 0, bytesRead);
+			total += bytesRead;
+			bytesRead = in.read(buffer);
+		}
+		return total;
+	}
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/resources/ChangeSet.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/resources/ChangeSet.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/resources/ChangeSet.xml	2009-05-29 16:28:34 UTC (rev 26777)
@@ -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-graph/src/main/resources/META-INF/services/org.jboss.bpm.console.server.plugin.GraphViewerPlugin
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/resources/META-INF/services/org.jboss.bpm.console.server.plugin.GraphViewerPlugin	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/resources/META-INF/services/org.jboss.bpm.console.server.plugin.GraphViewerPlugin	2009-05-29 16:28:34 UTC (rev 26777)
@@ -0,0 +1 @@
+org.drools.integration.console.graph.GraphViewerPluginImpl

Added: labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/resources/com.sample.eventing.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-process/drools-gwt-graph/src/main/resources/com.sample.eventing.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream




More information about the jboss-svn-commits mailing list