[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