indeed funny.
but can you also explain the purpose ?
regards, tom.
chen jian wrote:
I wrote a very easy groovy class to build a pvm process, it's
funny.
* class:
import groovy.util.BuilderSupport;
/**
* ProcessBuilder
* @author Kent Chen
*
*/
public class ProcessBuilder extends BuilderSupport {
def processDefinition
def unsuredFlows = []
def createNode(Object name) {
return createNode(name, null, null)
}
def createNode(Object name, Object value) {
return createNode(name, null, value)
}
def createNode(Object name, Map attributes) {
return createNode(name, attributes, null)
}
def createNode(Object name, Map attributes, Object value) {
if(name == "process"){
processDefinition = new ProcessDefinitionImpl(name:value)
return processDefinition
}
if(name == "activity"){
def activity = new ActivityImpl(name:attributes.name
<
http://attributes.name>,activityBehaviour:attributes.activityBehaviour)
processDefinition.addActivity(activity)
return activity
}
if(name == "transition"){
def transition = current.createOutgoingTransition()
transition.name <
http://transition.name> = attributes.name
<
http://attributes.name>
unsuredFlows.add(new
UnsuredFlow(transition:transition,to:attributes.to <
http://attributes.to>))
return "transition"
}
if(name == "initial"){
return "initial"
}
return name;
}
def void setParent(Object parent, Object child) {
}
def void nodeCompleted(Object parent, Object node) {
if(node == "initial"){
processDefinition.setInitial(parent)
}
if(parent == null){
for(unsuredFlow in unsuredFlows){
def activity =
processDefinition.findActivity(unsuredFlow.to)
activity.addIncomingTransition(unsuredFlow.transition)
}
}
}
}
class UnsuredFlow {
TransitionImpl transition
String to
}
* usage:
def builder = new ProcessBuilder()
builder.process("helloProcess"){
activity(name:"1",activityBehaviour:new TakeBehaviour()){
initial()
transition(name:"t1",to:"2")
transition(name:"t2",to:"3")
}
activity(name:"2",activityBehaviour:new WaitState())
activity(name:"3",activityBehaviour:new WaitState()){
transition(name:"t3",to:"4")
}
activity(name:"4",activityBehaviour:new WaitState())
}
def processInstance =
builder.processDefinition.startProcessInstance()
processInstance.signal("t2");
processInstance.signal();
processInstance.signal();
------------------------------------------------------------------------
_______________________________________________
jbpm-dev mailing list
jbpm-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jbpm-dev