public ProcessBuilderImpl(KnowledgeBuilderImpl packageBuilder) { this.knowledgeBuilder = packageBuilder; configurePackageBuilder(packageBuilder); }
public ProcessBuilderImpl newProcessBuilder(KnowledgeBuilder knowledgeBuilder) { return new ProcessBuilderImpl((KnowledgeBuilderImpl) knowledgeBuilder); }
public DroolsError getError() { return new ProcessBuildError( this.process, this.descr, collectCompilerProblems(), this.message ); }
public List<Process> addProcessFromXml(final Resource resource) throws IOException { Reader reader = resource.getReader(); KnowledgeBuilderConfigurationImpl configuration = knowledgeBuilder.getBuilderConfiguration(); XmlProcessReader xmlReader = new XmlProcessReader( configuration.getSemanticModules(), knowledgeBuilder.getRootClassLoader() ); Reader portedReader = null; if ( portRuleFlow.equalsIgnoreCase( "true" ) ) { portedReader = portToCurrentVersion( reader ); } else { portedReader = reader; processes = xmlReader.read(portedReader); if (processes != null) { buildProcess(process, resource); xmlReader.getProcessBuildData().onBuildComplete(process);
ProcessBuilderImpl processBuilder = new ProcessBuilderImpl( packageBuilder ); processBuilder.buildProcess( process, null ); return Arrays.asList(packageBuilder.getPackages());
Constraint constraint = split.getConstraint( connection ); if ( constraint != null && "rule".equals( constraint.getType() ) ) { builder.append( createSplitRule( process, connection, split.getConstraint( connection ).getConstraint() ) ); builder.append( createMilestoneRule( process, milestone ) ); } else if ( nodes[i] instanceof StateNode ) { StateNode state = (StateNode) nodes[i]; builder.append( createStateRules(process, state) ); } else if ( nodes[i] instanceof StartNode ) { StartNode startNode = (StartNode) nodes[i]; for ( Trigger trigger : triggers ) { if ( trigger instanceof ConstraintTrigger ) { builder.append( createStartConstraintRule( process, startNode.getNodeContainer(), (ConstraintTrigger) trigger ) ); generateRules( ((NodeContainer) nodes[i]).getNodes(), process, builder); if ( nodes[i] instanceof DynamicNode) { DynamicNode dynamicNode = (DynamicNode) nodes[i]; if (dynamicNode.getCompletionExpression() != null && "rule".equals(((DynamicNode) nodes[i]).getLanguage())) { builder.append( createAdHocCompletionRule( process, dynamicNode ) ); builder.append( createAdHocActivationRule( process, dynamicNode ) ); builder.append( createEventStateRule(process, state) ); } else if (nodes[i].getMetaData().get("customActivationExpression") != null) {
rules = generateRules( process ); dialect); buildContexts( ( ContextContainer ) process, buildContext ); if (process instanceof WorkflowProcess) { buildNodes( (WorkflowProcess) process, buildContext );
private void processNodes( Node[] nodes, Process process, ProcessDescr processDescr, ProcessBuildContext context) { for ( Node node : nodes ) { ProcessNodeBuilder builder = ProcessNodeBuilderRegistry.INSTANCE.getNodeBuilder( node ); if ( builder != null ) { // only build if there is a registered builder for this node type builder.build( process, processDescr, context, node ); } if ( node instanceof NodeContainer ) { processNodes( ((NodeContainer) node).getNodes(), process, processDescr, context ); } if ( node instanceof ContextContainer ) { buildContexts( (ContextContainer) node, context ); } if ("true".equals(System.getProperty("jbpm.enable.multi.con"))) { builder = ProcessNodeBuilderRegistry.INSTANCE.getNodeBuilder( NodeImpl.class ); if (builder != null) { builder.build(process, processDescr, context, node); } } } }
List<Process> processes = processBuilder.addProcessFromXml(resource); List<BaseKnowledgeBuilderResultImpl> errors = processBuilder.getErrors(); if (errors.isEmpty()) { InternalKnowledgeBase kBase = kb.getKnowledgeBase();
private String createStateRules(Process process, StateNode state) { String result = ""; for (Map.Entry<ConnectionRef, Constraint> entry: state.getConstraints().entrySet()) { result += createStateRule(process, state, entry.getKey(), entry.getValue()); } return result; }
private String generateRules(final Process process) { StringBuffer builder = new StringBuffer(); if ( process instanceof WorkflowProcessImpl ) { WorkflowProcessImpl ruleFlow = (WorkflowProcessImpl) process; builder.append( "package " + ruleFlow.getPackageName() + "\n" ); Set<String> imports = ruleFlow.getImports(); if ( imports != null ) { for ( String importString: imports ) { builder.append( "import " + importString + ";\n" ); } } List<String> functionImports = ruleFlow.getFunctionImports(); if ( functionImports != null ) { for ( String importString: functionImports ) { builder.append( "import function " + importString + ";\n" ); } } Map<String, String> globals = ruleFlow.getGlobals(); if ( globals != null ) { for ( Map.Entry<String, String> entry: globals.entrySet()) { builder.append( "global " + entry.getValue() + " " + entry.getKey() + ";\n" ); } } Node[] nodes = ruleFlow.getNodes(); generateRules(nodes, process, builder); } return builder.toString(); }
public void buildNodes(WorkflowProcess process, ProcessBuildContext context) { processNodes(process.getNodes(), process, context.getProcessDescr(), context); if ( !context.getErrors().isEmpty() ) { this.errors.addAll( context.getErrors() ); } ProcessDialectRegistry.getDialect(JavaDialect.ID).addProcess( context ); }
private String createStartConstraintRule(Process process, NodeContainer nodeContainer, ConstraintTrigger trigger) { if (nodeContainer instanceof EventSubProcessNode) { return createEventSubprocessStateRule(process, (EventSubProcessNode) nodeContainer, trigger); } String result = "rule \"RuleFlow-Start-" + process.getId() + "\" @Propagation(EAGER) \n" + (trigger.getHeader() == null ? "" : " " + trigger.getHeader() + " \n") + " when\n" + " " + trigger.getConstraint() + "\n" + " then\n"; Map<String, String> inMappings = trigger.getInMappings(); if ( inMappings != null && !inMappings.isEmpty() ) { result += " java.util.Map params = new java.util.HashMap();\n"; for ( Map.Entry<String, String> entry : inMappings.entrySet() ) { result += " params.put(\"" + entry.getKey() + "\", " + entry.getValue() + ");\n"; } result += " ((org.jbpm.process.instance.ProcessRuntimeImpl)((org.drools.core.common.InternalWorkingMemory)kcontext.getKnowledgeRuntime()).getProcessRuntime()).startProcess(\"" + process.getId() + "\", params, \"conditional\");\n" + "end\n\n"; } else { result += " ((org.jbpm.process.instance.ProcessRuntimeImpl)((org.drools.core.common.InternalWorkingMemory)kcontext.getKnowledgeRuntime()).getProcessRuntime()).startProcess(\"" + process.getId() + "\", null, \"conditional\");\n" + "end\n\n"; } return result; }
@Test public void testPackageRuleFlows() throws Exception { InternalKnowledgePackage pkg = new KnowledgePackageImpl( "boo" ); Process rf = new MockRuleFlow( "1" ); pkg.addProcess( rf ); assertTrue( pkg.getRuleFlows().containsKey( "1" ) ); assertSame( rf, pkg.getRuleFlows().get( "1" ) ); Process rf2 = new MockRuleFlow( "2" ); pkg.addProcess( rf2 ); assertTrue( pkg.getRuleFlows().containsKey( "1" ) ); assertSame( rf, pkg.getRuleFlows().get( "1" ) ); assertTrue( pkg.getRuleFlows().containsKey( "2" ) ); assertSame( rf2, pkg.getRuleFlows().get( "2" ) ); pkg.removeRuleFlow( "1" ); assertTrue( pkg.getRuleFlows().containsKey( "2" ) ); assertSame( rf2, pkg.getRuleFlows().get( "2" ) ); assertFalse( pkg.getRuleFlows().containsKey( "1" ) ); }
ProcessBuilderImpl processBuilder = new ProcessBuilderImpl( packageBuilder ); processBuilder.buildProcess( process, null ); return Arrays.asList(packageBuilder.getPackages());
public ProcessBuilderImpl newProcessBuilder(KnowledgeBuilder knowledgeBuilder) { return new ProcessBuilderImpl((KnowledgeBuilderImpl) knowledgeBuilder); }
public ProcessBuilderImpl(KnowledgeBuilderImpl packageBuilder) { this.knowledgeBuilder = packageBuilder; configurePackageBuilder(packageBuilder); }
public DroolsError getError() { return new ProcessBuildError( this.process, this.descr, collectCompilerProblems(), this.message ); }
ProcessBuilderImpl processBuilder = new ProcessBuilderImpl( packageBuilder ); processBuilder.buildProcess( process, null ); List<KiePackage> list = new ArrayList<KiePackage>();
ProcessBuilderImpl processBuilder = new ProcessBuilderImpl( packageBuilder ); processBuilder.buildProcess( process, null ); Node.CONNECTION_DEFAULT_TYPE ); processBuilder.buildProcess( process, null ); return packageBuilder.getPackage("org.drools.test");