All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kie.api.fluent.package-info Maven / Gradle / Ivy

/*
 * Copyright 2020 Red Hat, Inc. and/or its affiliates.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * Process Fluent API allows programmer to build an in memory representation of a bpmn file.
* This information can later be used to build a KIE resource and execute the process . * Typical use of fluent API will be: *
  • Build a process definition that prints action string in console using ProcessBuilder several methods
  • *
            // Obtain default ProcessBuilderFactory
            ProcessBuilderFactory factory = ProcessBuilderFactories.get();
                    ProcessBuilderFactory factory = ProcessBuilderFactories.get();
            Process process =
                    // Create process builder
                    factory.processBuilder(processId)
                           // package and name 
                           .packageName("org.jbpm")
                           .name("My process")
                           // start node
                           .startNode(1).name("Start").done()
                           // Add variable of type string
                           .variable(var("pepe", String.class))
                           // Add exception handler
                           .exceptionHandler(IllegalArgumentException.class, Dialect.JAVA, "System.out.println(\"Exception\");")
                           // script node in Java language that prints "action"
                           .actionNode(2).name("Action")
                           .action(Dialect.JAVA,
                                   "System.out.println(\"Action\");").done()
                           // end node
                           .endNode(3).name("End").done()
                           // connections
                           .connection(1,
                                       2)
                           .connection(2,
                                       3)
                           .build();
       
    *
  • Create a resource from the process definition (process needs to be converted to byte[] using ProcessBuilderFactory)
  • *
            // Build resource from ProcessBuilder
            KieResources resources = ServiceRegistry.getInstance().get(KieResources.class);
            Resource res = resources
                                    .newByteArrayResource(factory.toBytes(process))
                                    .setSourcePath("/tmp/processFactory.bpmn2"); // source path or target path must be set to be added into kbase
      
    *
  • Build kie base from this resource using KIE API
  • *
            KieServices ks = KieServices.Factory.get();
            KieRepository kr = ks.getRepository();
            KieFileSystem kfs = ks.newKieFileSystem();
            kfs.write(res);
            KieBuilder kb = ks.newKieBuilder(kfs);
            kb.buildAll(); // kieModule is automatically deployed to KieRepository if successfully built.
            KieContainer kContainer = ks.newKieContainer(kr.getDefaultReleaseId());
            KieBase kbase = kContainer.getKieBase();
       
    *
  • Create kie session using this kie base and execute the process
  • *
            // Create kie session
            KieSessionConfiguration conf = ...;
            Environment env = ....; 
            KieSession ksession = kbase.newKieSession(conf,env);
            // execute process using same process id that was used to obtain ProcessBuilder instance
            ksession.startProcess(processId); 
     *
    */ package org.kie.api.fluent;




    © 2015 - 2025 Weber Informatics LLC | Privacy Policy