[jboss-svn-commits] JBL Code SVN: r20795 - in labs/jbossrules/trunk/drools-core/src/main: java/org/drools/audit and 7 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jun 26 05:26:25 EDT 2008
Author: KrisVerlaenen
Date: 2008-06-26 05:26:25 -0400 (Thu, 26 Jun 2008)
New Revision: 20795
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/event/RuleFlowLogEvent.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/event/RuleFlowNodeLogEvent.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/Swimlane.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/SwimlaneContext.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/WorkItemManager.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/HumanTaskNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/WorkflowProcessInstanceImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java
labs/jbossrules/trunk/drools-core/src/main/resources/META-INF/WorkDefinitions.conf
Log:
JBRULES-1551: Workflow human tasks
- added human tasks and swimlanes (in core, compiler and eclipse IDE)
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java 2008-06-26 09:26:14 UTC (rev 20794)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java 2008-06-26 09:26:25 UTC (rev 20795)
@@ -120,6 +120,7 @@
private static final String STAR = "*";
private ContextInstanceFactoryRegistry processContextInstanceFactoryRegistry;
private Map<String, WorkDefinition> workDefinitions;
+ private boolean advancedProcessRuleIntegration;
private ProcessInstanceFactoryRegistry processInstanceFactoryRegistry;
private NodeInstanceFactoryRegistry processNodeInstanceFactoryRegistry;
@@ -147,6 +148,7 @@
out.writeObject( ruleBaseUpdateHandler );
out.writeObject( conflictResolver );
out.writeObject( processNodeInstanceFactoryRegistry );
+ out.writeBoolean( advancedProcessRuleIntegration );
}
public void readExternal(ObjectInput in) throws IOException,
@@ -170,6 +172,7 @@
ruleBaseUpdateHandler = (String) in.readObject();
conflictResolver = (ConflictResolver) in.readObject();
processNodeInstanceFactoryRegistry = (NodeInstanceFactoryRegistry) in.readObject();
+ advancedProcessRuleIntegration = in.readBoolean();
}
/**
@@ -289,6 +292,9 @@
setConflictResolver( RuleBaseConfiguration.determineConflictResolver( this.chainedProperties.getProperty( "drools.conflictResolver",
"org.drools.conflict.DepthConflictResolver" ) ) );
+
+ setAdvancedProcessRuleIntegration( Boolean.valueOf( this.chainedProperties.getProperty( "drools.advancedProcessRuleIntegration",
+ "false" ) ).booleanValue() );
}
/**
@@ -708,6 +714,14 @@
throw new IllegalArgumentException( "Process instance manager '" + className + "' not found" );
}
}
+
+ public boolean isAdvancedProcessRuleIntegration() {
+ return advancedProcessRuleIntegration;
+ }
+
+ public void setAdvancedProcessRuleIntegration(boolean advancedProcessRuleIntegration) {
+ this.advancedProcessRuleIntegration = advancedProcessRuleIntegration;
+ }
private boolean determineShadowProxy(String userValue) {
if ( this.isSequential() ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java 2008-06-26 09:26:14 UTC (rev 20794)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java 2008-06-26 09:26:25 UTC (rev 20795)
@@ -16,17 +16,17 @@
* limitations under the License.
*/
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.io.ObjectOutput;
-import java.io.IOException;
-import java.io.ObjectInput;
-import org.drools.WorkingMemoryEventManager;
import org.drools.FactHandle;
import org.drools.WorkingMemory;
+import org.drools.WorkingMemoryEventManager;
import org.drools.audit.event.ActivationLogEvent;
import org.drools.audit.event.ILogEventFilter;
import org.drools.audit.event.LogEvent;
@@ -59,8 +59,8 @@
import org.drools.event.BeforeRuleBaseUnlockedEvent;
import org.drools.event.BeforeRuleRemovedEvent;
import org.drools.event.ObjectInsertedEvent;
+import org.drools.event.ObjectRetractedEvent;
import org.drools.event.ObjectUpdatedEvent;
-import org.drools.event.ObjectRetractedEvent;
import org.drools.event.RuleBaseEventListener;
import org.drools.event.RuleFlowCompletedEvent;
import org.drools.event.RuleFlowEventListener;
@@ -337,28 +337,32 @@
WorkingMemory workingMemory) {
filterLogEvent( new RuleFlowLogEvent( LogEvent.BEFORE_RULEFLOW_CREATED,
event.getProcessInstance().getProcess().getId(),
- event.getProcessInstance().getProcess().getName() ) );
+ event.getProcessInstance().getProcess().getName(),
+ event.getProcessInstance().getId()) );
}
public void afterRuleFlowStarted(RuleFlowStartedEvent event,
WorkingMemory workingMemory) {
filterLogEvent(new RuleFlowLogEvent(LogEvent.AFTER_RULEFLOW_CREATED,
event.getProcessInstance().getProcess().getId(),
- event.getProcessInstance().getProcess().getName()));
+ event.getProcessInstance().getProcess().getName(),
+ event.getProcessInstance().getId()) );
}
public void beforeRuleFlowCompleted(RuleFlowCompletedEvent event,
WorkingMemory workingMemory) {
filterLogEvent( new RuleFlowLogEvent( LogEvent.BEFORE_RULEFLOW_COMPLETED,
event.getProcessInstance().getProcess().getId(),
- event.getProcessInstance().getProcess().getName() ) );
+ event.getProcessInstance().getProcess().getName(),
+ event.getProcessInstance().getId()) );
}
public void afterRuleFlowCompleted(RuleFlowCompletedEvent event,
WorkingMemory workingMemory) {
filterLogEvent(new RuleFlowLogEvent(LogEvent.AFTER_RULEFLOW_COMPLETED,
event.getProcessInstance().getProcess().getId(),
- event.getProcessInstance().getProcess().getName()));
+ event.getProcessInstance().getProcess().getName(),
+ event.getProcessInstance().getId()) );
}
public void beforeRuleFlowGroupActivated(
@@ -402,8 +406,9 @@
filterLogEvent(new RuleFlowNodeLogEvent(LogEvent.BEFORE_RULEFLOW_NODE_TRIGGERED,
event.getRuleFlowNodeInstance().getId() + "",
event.getRuleFlowNodeInstance().getNode().getName(),
- event.getProcessInstance().getProcess().getId(), event
- .getProcessInstance().getProcess().getName()));
+ event.getProcessInstance().getProcess().getId(),
+ event.getProcessInstance().getProcess().getName(),
+ event.getProcessInstance().getId()) );
}
public void afterRuleFlowNodeTriggered(RuleFlowNodeTriggeredEvent event,
@@ -411,8 +416,9 @@
filterLogEvent(new RuleFlowNodeLogEvent(LogEvent.AFTER_RULEFLOW_NODE_TRIGGERED,
event.getRuleFlowNodeInstance().getId() + "",
event.getRuleFlowNodeInstance().getNode().getName(),
- event.getProcessInstance().getProcess().getId(), event
- .getProcessInstance().getProcess().getName()));
+ event.getProcessInstance().getProcess().getId(),
+ event.getProcessInstance().getProcess().getName(),
+ event.getProcessInstance().getId()) );
}
public void afterPackageAdded(AfterPackageAddedEvent event) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/event/RuleFlowLogEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/event/RuleFlowLogEvent.java 2008-06-26 09:26:14 UTC (rev 20794)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/event/RuleFlowLogEvent.java 2008-06-26 09:26:25 UTC (rev 20795)
@@ -31,6 +31,7 @@
private String processId;
private String processName;
+ private long processInstanceId;
/**
* Create a new ruleflow log event.
@@ -42,22 +43,26 @@
*/
public RuleFlowLogEvent(final int type,
final String processId,
- final String processName) {
+ final String processName,
+ final long processInstanceId) {
super( type );
this.processId = processId;
this.processName = processName;
+ this.processInstanceId = processInstanceId;
}
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
super.readExternal(in);
processId = (String)in.readObject();
processName = (String)in.readObject();
+ processInstanceId = in.readLong();
}
public void writeExternal(ObjectOutput out) throws IOException {
super.writeExternal(out);
out.writeObject(processId);
out.writeObject(processName);
+ out.writeLong(processInstanceId);
}
public String getProcessId() {
@@ -67,6 +72,10 @@
public String getProcessName() {
return this.processName;
}
+
+ public long getProcessInstanceId() {
+ return this.processInstanceId;
+ }
public String toString() {
String msg = null;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/event/RuleFlowNodeLogEvent.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/event/RuleFlowNodeLogEvent.java 2008-06-26 09:26:14 UTC (rev 20794)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/event/RuleFlowNodeLogEvent.java 2008-06-26 09:26:25 UTC (rev 20795)
@@ -20,8 +20,9 @@
final String nodeId,
final String nodeName,
final String processId,
- final String processName) {
- super( type, processId, processName );
+ final String processName,
+ final long processInstanceId) {
+ super( type, processId, processName, processInstanceId );
this.nodeId = nodeId;
this.nodeName = nodeName;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/Swimlane.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/Swimlane.java 2008-06-26 09:26:14 UTC (rev 20794)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/Swimlane.java 2008-06-26 09:26:25 UTC (rev 20795)
@@ -9,14 +9,14 @@
private String name;
private String actorId;
- public Swimlane(String name) {
- this.name = name;
- }
-
public String getName() {
return this.name;
}
+ public void setName(String name) {
+ this.name = name;
+ }
+
public void setActorId(String actorId) {
this.actorId = actorId;
}
@@ -24,5 +24,9 @@
public String getActorId() {
return this.actorId;
}
+
+ public String toString() {
+ return name;
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/SwimlaneContext.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/SwimlaneContext.java 2008-06-26 09:26:14 UTC (rev 20794)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/core/context/swimlane/SwimlaneContext.java 2008-06-26 09:26:25 UTC (rev 20795)
@@ -1,5 +1,6 @@
package org.drools.process.core.context.swimlane;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@@ -32,8 +33,15 @@
}
public Collection<Swimlane> getSwimlanes() {
- return swimlanes.values();
+ return new ArrayList<Swimlane>(swimlanes.values());
}
+
+ public void setSwimlanes(Collection<Swimlane> swimlanes) {
+ this.swimlanes.clear();
+ for (Swimlane swimlane: swimlanes) {
+ addSwimlane(swimlane);
+ }
+ }
public Context resolveContext(Object param) {
if (param instanceof String) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/WorkItemManager.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/WorkItemManager.java 2008-06-26 09:26:14 UTC (rev 20794)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/instance/WorkItemManager.java 2008-06-26 09:26:25 UTC (rev 20795)
@@ -94,6 +94,7 @@
processInstance.workItemCompleted(workItem);
}
workItems.remove(new Long(id));
+ workingMemory.fireAllRules();
}
}
@@ -108,6 +109,7 @@
processInstance.workItemAborted(workItem);
}
workItems.remove(new Long(id));
+ workingMemory.fireAllRules();
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/HumanTaskNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/HumanTaskNode.java 2008-06-26 09:26:14 UTC (rev 20794)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/HumanTaskNode.java 2008-06-26 09:26:25 UTC (rev 20795)
@@ -1,6 +1,12 @@
package org.drools.workflow.core.node;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.drools.process.core.ParameterDefinition;
import org.drools.process.core.Work;
+import org.drools.process.core.datatype.impl.type.StringDataType;
+import org.drools.process.core.impl.ParameterDefinitionImpl;
import org.drools.process.core.impl.WorkImpl;
public class HumanTaskNode extends WorkItemNode {
@@ -12,6 +18,12 @@
public HumanTaskNode() {
Work work = new WorkImpl();
work.setName("Human Task");
+ Set<ParameterDefinition> parameterDefinitions = new HashSet<ParameterDefinition>();
+ parameterDefinitions.add(new ParameterDefinitionImpl("TaskName", new StringDataType()));
+ parameterDefinitions.add(new ParameterDefinitionImpl("ActorId", new StringDataType()));
+ parameterDefinitions.add(new ParameterDefinitionImpl("Priority", new StringDataType()));
+ parameterDefinitions.add(new ParameterDefinitionImpl("Comment", new StringDataType()));
+ work.setParameterDefinitions(parameterDefinitions);
setWork(work);
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java 2008-06-26 09:26:14 UTC (rev 20794)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java 2008-06-26 09:26:25 UTC (rev 20795)
@@ -81,6 +81,10 @@
return this.nodeInstanceContainer.getNodeContainer().getNode( this.nodeId );
}
+ public boolean isInversionOfControl() {
+ return false;
+ }
+
public void cancel() {
nodeInstanceContainer.removeNodeInstance(this);
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/WorkflowProcessInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/WorkflowProcessInstanceImpl.java 2008-06-26 09:26:14 UTC (rev 20794)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/WorkflowProcessInstanceImpl.java 2008-06-26 09:26:25 UTC (rev 20795)
@@ -66,6 +66,9 @@
}
public void removeNodeInstance(final NodeInstance nodeInstance) {
+ if (((NodeInstanceImpl) nodeInstance).isInversionOfControl()) {
+ getWorkingMemory().retract(getWorkingMemory().getFactHandle(nodeInstance));
+ }
this.nodeInstances.remove(nodeInstance);
}
@@ -109,6 +112,9 @@
if (nodeInstance == null) {
throw new IllegalArgumentException("Illegal node type: " + node.getClass());
}
+ if (((NodeInstanceImpl) nodeInstance).isInversionOfControl()) {
+ getWorkingMemory().insert(nodeInstance);
+ }
return nodeInstance;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java 2008-06-26 09:26:14 UTC (rev 20794)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java 2008-06-26 09:26:25 UTC (rev 20795)
@@ -20,6 +20,8 @@
import java.util.Iterator;
import java.util.Map;
+import org.drools.WorkingMemory;
+import org.drools.common.InternalRuleBase;
import org.drools.process.core.Work;
import org.drools.process.core.context.variable.VariableScope;
import org.drools.process.instance.WorkItem;
@@ -53,9 +55,17 @@
return workItem;
}
+ public long getWorkItemId() {
+ return workItemId;
+ }
+
public void internalSetWorkItemId(long workItemId) {
this.workItemId = workItemId;
}
+
+ public boolean isInversionOfControl() {
+ return ((InternalRuleBase) getProcessInstance().getWorkingMemory().getRuleBase()).getConfiguration().isAdvancedProcessRuleIntegration();
+ }
public void internalTrigger(final NodeInstance from, String type) {
// TODO this should be included for ruleflow only, not for BPEL
@@ -68,7 +78,11 @@
if (workItemNode.isWaitForCompletion()) {
addEventListeners();
}
- getProcessInstance().getWorkingMemory().getWorkItemManager().internalExecuteWorkItem(workItem);
+ if (isInversionOfControl()) {
+ getProcessInstance().getWorkingMemory().update(getProcessInstance().getWorkingMemory().getFactHandle(this), this);
+ } else {
+ getProcessInstance().getWorkingMemory().getWorkItemManager().internalExecuteWorkItem(workItem);
+ }
if (!workItemNode.isWaitForCompletion()) {
triggerCompleted();
} else {
@@ -110,7 +124,12 @@
System.err.println("Continuing without setting variable.");
}
}
- triggerCompleted();
+ if (isInversionOfControl()) {
+ WorkingMemory workingMemory = getProcessInstance().getWorkingMemory();
+ workingMemory.update(workingMemory.getFactHandle(this), this);
+ } else {
+ triggerCompleted();
+ }
}
public void cancel() {
Modified: labs/jbossrules/trunk/drools-core/src/main/resources/META-INF/WorkDefinitions.conf
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/resources/META-INF/WorkDefinitions.conf 2008-06-26 09:26:14 UTC (rev 20794)
+++ labs/jbossrules/trunk/drools-core/src/main/resources/META-INF/WorkDefinitions.conf 2008-06-26 09:26:25 UTC (rev 20795)
@@ -29,20 +29,5 @@
"icon" : "icons/open.gif"
"customEditor" : "org.drools.eclipse.flow.common.editor.editpart.work.SampleCustomEditor"
]
-
- [
- "name" : "Human Task",
- "parameters" : [
- "ActorId" : new StringDataType(),
- "TaskName" : new StringDataType(),
- "Priority" : new StringDataType(),
- "Comment" : new StringDataType()
- ],
- "results" : [
- "ActorId" : new StringDataType()
- ],
- "displayName" : "Human Task",
- "icon" : "icons/human_task.gif"
- ]
-
+
]
\ No newline at end of file
More information about the jboss-svn-commits
mailing list