diff --git a/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIEBuilding.xml b/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIEBuilding.xml index ff20ac7df..01d951aa7 100644 --- a/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIEBuilding.xml +++ b/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIEBuilding.xml @@ -83,7 +83,7 @@ KieContainer kContainer = kieServices.getKieClasspathContainer(); The kmodule.xml file - As anticipated in the former section the kmodule.xml file is the place where it is possible + As explained in the former section, the kmodule.xml file is the place where it is possible to declaratively configure the KieBase(s) and KieSession(s) that can be created from a KIE project. @@ -233,7 +233,7 @@ KieContainer kContainer = kieServices.getKieClasspathContainer(); - In the same way also all attributes of the ksession tag (except of course the name) + Similarly all attributes of the ksession tag (except of course the name) have meaningful default. They are listed and described in the following table: @@ -254,7 +254,7 @@ KieContainer kContainer = kieServices.getKieClasspathContainer();namenoneany - The name with which retrieve this KieSession from the KieContainer. + Unique name of this KieSession. Used to fetch the KieSession from the KieContainer. This is the only mandatory attribute. @@ -331,12 +331,12 @@ KieSession kieSession1 = kContainer.newKieSession(); // returns KSession2_1 Since a Kie project is also a Maven project the groupId, artifactId and version declared - in the pom.xml file are also used to generate a ReleaseId that uniquely identify - this project inside your application. This also allows to create a new KieContainer from that + in the pom.xml file are used to generate a ReleaseId that uniquely identifies + this project inside your application. This allows creation of a new KieContainer from the project by simply passing its ReleaseId to the KieServices. - Creating a KieContainer of an existing project retriving it by ReleaseId + Creating a KieContainer of an existing project by ReleaseId KieServices kieServices = KieServices.Factory.get(); ReleaseId releaseId = kieServices.newReleaseId( "org.acme", "myartifact", "1.0" ); @@ -347,7 +347,7 @@ KieContainer kieContainer = kieServices.newKieContainer( releaseId ); Building with Maven - The KIE plugin for Maven ensures that artefact resources are validated and pre-compiled, it is recommended that this is used at all times. To use the plugin simple add it to the build + The KIE plugin for Maven ensures that artifact resources are validated and pre-compiled, it is recommended that this is used at all times. To use the plugin simply add it to the build section of the Maven pom.xml @@ -377,8 +377,8 @@ KieContainer kieContainer = kieServices.newKieContainer( releaseId );Defining a KieModule programmatically It is also possible to define the KieBases and KieSessions - belonging to a KieModule programmatically instead of declaratively define them in the - kmodule.xml file. The same programmatic API also allows to explicitly add the file containing the + belonging to a KieModule programmatically instead of the declarative definition in the + kmodule.xml file. The same programmatic API also allows in explicitly adding the file containing the Kie artifacts instead of automatically read them from the resources folder of your project. To do that it is necessary to create a KieFileSystem, a sort of virtual file system, and add all the resources contained in your project to it. @@ -394,10 +394,10 @@ KieContainer kieContainer = kieServices.newKieContainer( releaseId ); - Like all other Kie core component you can obtain an instance of the KieFileSystem from - the KieServices. One of the thing that for sure it will be necessary to add to this file - system is the kmodule.xml configuration file. As anticipated above Kie also provides a convenient fluent - API, implemented by the KieModuleModel, to programmatically create this file. + Like all other Kie core components you can obtain an instance of the KieFileSystem from + the KieServices. The kmodule.xml configuration file must be added to the filesystem. This is a + mandatory step. Kie also provides a convenient fluent API, implemented by the KieModuleModel, + to programmatically create this file.
KieModuleModel @@ -448,7 +448,7 @@ kfs.write( "src/main/resources/KBase1/ruleSet1.drl", stringContainingAValidDRL ) This example shows that it is possible to add the Kie artifacts both as plain Strings and - as Resources. In this second case the Resources can be created by the + as Resources. In the latter case the Resources can be created by the KieResources factory, also provided by the KieServices. The KieResources provides many convenient factory methods to convert an InputStream, a URL, a File, or a String representing a path of your file @@ -467,8 +467,8 @@ kfs.write( "src/main/resources/KBase1/ruleSet1.drl", stringContainingAValidDRL ) Normally the type of a Resource can be inferred from the extension of the name used to add it to the KieFileSystem. However it also possible to not follow the Kie - conventions about file extension and then explicitly assign a specific ResourceType - to aResource as in the following example + conventions about file extensions and explicitly assign a specific ResourceType + to a Resource as shown below: Creating and adding a Resource with an explicit type @@ -479,8 +479,7 @@ kfs.write( "src/main/resources/myDrl.txt", .setResourceType(ResourceType.DRL) ); - After having added to the KieFileSystem all the resources that has to be - included into the project, it is possible to build it by passing the KieFileSystem + Add all the resources to the KieFileSystem and build it by passing the KieFileSystem to a KieBuilder
@@ -494,8 +493,8 @@ kfs.write( "src/main/resources/myDrl.txt",
- When a the contents of a KieFileSystem is successfully built, the KieModule - resulting from this compilation is automatically added to the KieRepository. + When the contents of a KieFileSystem are successfully built, the resulting KieModule + is automatically added to the KieRepository. The KieRepository is a singleton acting as a repository for all the available KieModules.
@@ -532,10 +531,10 @@ KieContainer kieContainer = kieServices.newKieContainer(kieServices.getRepositor created directly from the classpath. It is a best practice to check the compilation results. The KieBuilder - can report compilation results of 3 different severities: ERROR, WARNING and INFO. An ERROR + reports compilation results of 3 different severities: ERROR, WARNING and INFO. An ERROR indicates that the compilation of the project failed and in the case no KieModule is - produced and then nothing is added to the KieRepository. WARNING and INFO results - can be ignored, but are available for inspection nonetheless. + produced and nothing is added to the KieRepository. WARNING and INFO results + can be ignored, but are available for inspection. Checking that a compilation didn't produce any error @@ -555,8 +554,8 @@ assertEquals( 0, kieBuilder.getResults().getMessages( Message.Level.ERROR ).size probably ideal for most use cases, but in some deployments the user might want to prevent the rule update and report it as an error. - Changing the default severity for a result type is configured - like any other option in Drools and can be done by API + Changing the default severity for a result type, configured + like any other option in Drools, can be done by API calls, system properties or configuration files. As of this version, Drools supports configurable result severity for rule updates and function updates. To configure it using system properties or configuration files, diff --git a/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIEDeploying.xml b/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIEDeploying.xml index 04d0531fa..a9efea9b1 100644 --- a/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIEDeploying.xml +++ b/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIEDeploying.xml @@ -56,8 +56,8 @@ KieBase kbase = kieContainer.newKieBase( kbaseConf );
KieScanner - The KieScanner allows to continously monitoring your Maven repository - to check if a new release of a Kie project has been installed and if so deploying it in + The KieScanner allows continuous monitoring of your Maven repository + to check whether a new release of a Kie project has been installed. A new release is deployed in the KieContainer wrapping that project. The use of the KieScanner requires kie-ci.jar to be on the classpath. @@ -71,7 +71,7 @@ KieBase kbase = kieContainer.newKieBase( kbaseConf );
- In more detail a KieScanner can be registered on a KieContainer + A KieScanner can be registered on a KieContainer as in the following example. @@ -93,6 +93,5 @@ kScanner.start( 10000L ); it automatically downloads the new version and triggers an incremental build of the new project. From this moment all the new KieBases and KieSessions created from that KieContainer will use the new project version. - diff --git a/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIEExamples.xml b/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIEExamples.xml index 8e7c2e794..96c5f1eec 100644 --- a/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIEExamples.xml +++ b/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIEExamples.xml @@ -7,10 +7,10 @@ "drools-examples-api" contains a number of examples, and can be found at GitHub:
https://github.com/droolsjbpm/drools/tree/6.0.x/drools-examples-api - Each example is described below, the order starts with the simplest and most default working + Each example is described below, the order starts with the simplest (most of the options are defaulted) and working its way up to more complex use cases. - The Deploy use cases here all involve mvn install. Remote deployment of JARs in - Maven is well covered is Maven literature. Utilize refers to the initial act loading the + The Deploy use cases shown below all involve mvn install. Remote deployment of JARs in + Maven is well covered in Maven literature. Utilize refers to the initial act of loading the resources and providing access to the KIE runtimes. Where as Run refers to the act of interacting with those runtimes. @@ -21,7 +21,7 @@ Summary: Empty kmodule.xml KieModule on the classpath that includes all resources in a - single default KieBase . The example shows the retrieval of the default KieSession from + single default KieBase. The example shows the retrieval of the default KieSession from the classpath. @@ -42,7 +42,7 @@ ks.getKieClasspathContainer() returns the KieContainer that contains the KieBases deployed onto the environment classpath. kContainer.newKieSession() creates the default KieSession. - Notice you no longer need to look up the KieBase, in orde to create the KieSession. The + Notice that you no longer need to look up the KieBase, in order to create the KieSession. The KieSession knows which KieBase it's associated with, and use that, which in this case is the default KieBase. @@ -107,7 +107,7 @@ kSession.fireAllRules(); Project: kiebase-inclusion. - Summary: 'kmodule.xml' demonstrate that one KieBase can include the resources from + Summary: 'kmodule.xml' demonstrates that one KieBase can include the resources from another KieBase, from another KieModule. In this case it inherits the named KieBase from the 'name-kiesession' example. The included KieBase can be from the current KieModule or any other KieModule that is in the pom.xml dependency list. @@ -191,12 +191,12 @@ kSession.fireAllRules(); Summary: Demonstrates that the 'kmodule.xml' can contain any number of KieBase or KieSession declarations. Introduces the 'packages' attribute to select the folders for the - resources to be included inthe . + resources to be included in the KieBase. kmodule.xml produces 6 different named KieBases. 'kbase1' includes all resources from the KieModule. The other KieBases include resources from other selected folders, via the - 'packages' attribute. Note the use wildcard '*' use, to select this package and all packages + 'packages' attribute. Note the use of wildcard '*', to select this package and all packages below it. Author - kmodule.xml @@ -232,7 +232,7 @@ kSession.fireAllRules(); mvn install Only part of the example is included below, as there is a test method per KieSession, but - each one is a repetitino of the other, with just different list expectations. + each one is a repetition of the other, with different list expectations. Utilize and Run - Java @Test @@ -304,7 +304,7 @@ private List<Integer> useKieSession(String name) { In the previous examples the classpath KieContainer used. This example creates a dynamic KieContainer as specified by the ReleaseId. The ReleaseId uses Maven conventions for group - id, artifact id and version. It also obey's LATEST and SNAPSHOT for versions. + id, artifact id and version. It also obeys LATEST and SNAPSHOT for versions. Utilize and Run - Java KieServices ks = KieServices.Factory.get(); @@ -338,8 +338,8 @@ kSession.fireAllRules(); mvn install Any KieModule can be loaded from a Resource location and added to the KieRepository. Once - in the KieRepository it can be resolved via its ReleaseId. Note neither Maven or kie-ci are - needed here. It will not setup a transitive dependency parent classloader. + deployed in the KieRepository it can be resolved via its ReleaseId. Note neither Maven or kie-ci are + needed here. It will not set up a transitive dependency parent classloader.
Utilize and Run - Java KieServices ks = KieServices.Factory.get(); @@ -395,13 +395,13 @@ kSession.fireAllRules();
- KieModule with Dependant KieModule + KieModule with Dependent KieModule Project: kie-module-form-multiple-files - Summary: Programmatically provide the list of dependant KieModules, without any Maven + Summary: Programmatically provide the list of dependant KieModules, without using Maven to resolve anything. @@ -413,8 +413,8 @@ kSession.fireAllRules(); mvn install Creates two resources. One is for the main KieModule 'exRes1' the other is for the - dependency 'exRes2'. Even though kie-ci is not present and thus Maven is not there to resolve - the dependencies, this shows how you can manually specify the dependency KieModules, for the + dependency 'exRes2'. Even though kie-ci is not present and thus Maven is not available to resolve + the dependencies, this shows how you can manually specify the dependent KieModules, for the vararg. Utilize and Run - Java @@ -456,7 +456,7 @@ kSession.fireAllRules(); mvn install This programmatically builds a KieModule. It populates the model that represents the - ReleaseId and kmodule.xml, as well as added the resources tht. A pom.xml is generated from + ReleaseId and kmodule.xml, and it adds the relevant resources. A pom.xml is generated from the ReleaseId. Utilize and Run - Java @@ -489,7 +489,7 @@ kSession.fireAllRules(); Project: kiemoduelmodel-example - Summary: Programmaticaly buid a KieModule, by creating its kmodule.xml meta models + Summary: Programmaticaly build a KieModule, by creating its kmodule.xml meta model resources. @@ -498,7 +498,7 @@ kSession.fireAllRules(); mvn install This programmatically builds a KieModule. It populates the model that represents the - ReleaseId and kmodule.xml, as well as added the resources tht. A pom.xml is generated from + ReleaseId and kmodule.xml, as well as add the relevant resources. A pom.xml is generated from the ReleaseId. Utilize and Run - Java diff --git a/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIEModuleIntroduction.xml b/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIEModuleIntroduction.xml index fa3af9079..3e814af2c 100644 --- a/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIEModuleIntroduction.xml +++ b/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIEModuleIntroduction.xml @@ -7,16 +7,16 @@ xmlns:ns2="http://www.w3.org/1998/Math/MathML" xmlns:ns="http://docbook.org/ns/docbook"> Introduction 6.0 introduces a new configuration and convention approach to building knowledge bases, - instead of the using the programmatic builder approach in 5.x. Atlhough a builder is still + instead of using the programmatic builder approach in 5.x. The builder is still available to fall back on, as it's used for the tooling integration. - Building now uses Maven, and aligns with Maven practices. A KIE projcet or module is simply + Building now uses Maven, and aligns with Maven practices. A KIE project or module is simply a Maven Java project or module; with an additional metadata file META-INF/kmodule.xml. The kmodule.xml file is the descriptor that selects resources to knowledge bases and configures those knowledge bases and sessions. There is also alternative XML support via Spring and OSGi BluePrints. While standard Maven can build and package KIE resources, it will not provide validation at - build time. There is a Maven plugin which is recommend to use to get build time validation. The - plugin also pre-genenerates many classes, making the runtime loading faster too. + build time. There is a Maven plugin which is recommended to use to get build time validation. The + plugin also generates many classes, making the runtime loading faster too. The example project layout and Maven POM descriptor is illustrated in the screenshot
Example project layout and Maven POM @@ -32,9 +32,9 @@ the simplest configuration. There must always be a kmodule.xml file, even if empty, as it's used for discovery of the JAR and its contents. Maven can either 'mvn install' to deploy a KieModule to the local machine, where all other - applications on the local machine use it. Or it can 'mvn 'deploy' to push the KieModule to a - remote Maven repository. Building the Application wil pull in the KieModule, populating its - local Maven repository, as it does so. + applications on the local machine use it. Or it can 'mvn deploy' to push the KieModule to a + remote Maven repository. Building the Application will pull in the KieModule and populate the + local Maven repository in the process.
Example project layout and Maven POM @@ -48,10 +48,10 @@ JARs can be deployed in one of two ways. Either added to the classpath, like any other JAR in a Maven dependency listing, or they can be dynamically loaded at runtime. KIE will scan the classpath to find all the JARs with a kmodule.xml in it. Each found JAR is represented by the - KieModule interface. The term Classpath KieModules and dynamic KieModule is used to refer to the + KieModule interface. The terms classpath KieModule and dynamic KieModule are used to refer to the two loading approaches. While dynamic modules supports side by side versioning, classpath - modules do not. Further once module is on the classpath, no other version may be loaded + modules do not. Further once a module is on the classpath, no other version may be loaded dynamically. Detailed references for the API are included in the next sections, the impatient can jump - straight to the examples section, which is fairly intuitive for the different use cases. + straight to the examples section, which is fairly self-explanatory on the different use cases.
diff --git a/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIERunning.xml b/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIERunning.xml index a57da3c87..dfab6e387 100644 --- a/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIERunning.xml +++ b/kie-docs/shared/KIE/BuildDeployUtilizeAndRun/KIERunning.xml @@ -59,7 +59,7 @@
KieRuntime - The KieRuntime provides further methods that + The KieRuntime provides methods that are applicable to both rules and processes, such as setting globals and registering channels. ("Exit point" is an obsolete synonym for "channel".) @@ -112,7 +112,7 @@ ksession.setGlobal("list", list); The event package provides means to be notified of rule engine events, including rules firing, objects being asserted, etc. This allows - you, for instance, to separate logging and auditing activities from the + separation of logging and auditing activities from the main part of your application (and the rules). The KieRuntimeEventManager interface is @@ -303,12 +303,12 @@ logger.close(); The CommandExecutor allows for commands to be executed on those sessions, the only difference being that the StatelessKieSession executes fireAllRules() at the end before disposing the session. The commands can be created using the - CommandExecutor .The Javadocs provides the full list of the provided comands - using the CommandExecutor . - SetGloban and getGlobal are two commands relevant to both Drools and jBPM. - Set Global calls setGlobal underneath. The optional boolean indicates on whether the - command should return value as part of the ExecutionResults. If true it uses the - same name as the global name. A String cna be used instead of the boolean, if an alternative + CommandExecutor .The Javadocs provide the full list of the allowed comands + using the CommandExecutor. + setGlobal and getGlobal are two commands relevant to both Drools and jBPM. + Set Global calls setGlobal underneath. The optional boolean indicates whether the + command should return the global's value as part of the ExecutionResults. If true it uses the + same name as the global name. A String can be used instead of the boolean, if an alternative name is desired. @@ -330,7 +330,7 @@ ExecutionResults bresults = Cheese stilton = bresults.getValue( "stilton" ); - The examples above all execute single commands. The BatchExecution + All the above examples execute single commands. The BatchExecution represents a composite command, created from a list of commands. It will iterate over the list and execute each command in turn. This means you can insert some objects, start a process, call fireAllRules and execute a query, all in a single execute(...) call, which @@ -343,7 +343,7 @@ Cheese stilton = bresults.getValue( "stilton" ); Any command, in the batch, that has an out identifier set will add its results to the returned ExecutionResults instance. Let's look at a simple example to see how this works. The example presented includes command from the Drools and jBPM, for the sake of - illustartion. They are covered in more detail in the Drool and jBPM specific sections. + illustration. They are covered in more detail in the Drool and jBPM specific sections. BatchExecution Command StatelessKieSession ksession = kbase.newStatelessKieSession(); @@ -371,7 +371,7 @@ QueryResults qresults = ( QueryResults ) bresults.getValue( "cheeses" ); The StatelessKieSession wraps the KieSession, instead of extending it. Its main - focus is on decision service type scenarios. It avoids the need to call + focus is on the decision service type scenarios. It avoids the need to call dispose(). Stateless sessions do not support iterative insertions and the method call fireAllRules() from Java code; the act of calling execute() is a single-shot method that @@ -427,7 +427,7 @@ ksession.execute( collection ); ExecutionResults. StatelessKieSession supports globals, scoped in a - number of ways. I'll cover the non-command way first, as commands are + number of ways. We cover the non-command way first, as commands are scoped to a specific execution call. Globals can be resolved in three ways. @@ -496,7 +496,7 @@ results.getValue( "Get People" );
Marshalling - The KieMarshallers is used to marshal and unmarshal + The KieMarshallers are used to marshal and unmarshal KieSessions.
@@ -510,8 +510,8 @@ results.getValue( "Get People" );
- An instance of the KieMarshallers can be retrieved from the KieServices - and at the simplest the it can be used as follows: + An instance of the KieMarshallers can be retrieved from the KieServices. + A simple example is shown below: Simple Marshaller Example @@ -525,23 +525,23 @@ baos.close(); - However, with marshalling you need more flexibility when dealing - with referenced user data. To achieve this we have the + However, with marshalling, you will need more flexibility when dealing + with referenced user data. To achieve this use the ObjectMarshallingStrategy interface. Two implementations are provided, but users can implement their own. The two supplied strategies are IdentityMarshallingStrategy and SerializeMarshallingStrategy. - SerializeMarshallingStrategy is the default, as used in the + SerializeMarshallingStrategy is the default, as shown in the example above, and it just calls the Serializable or Externalizable methods on a user instance. - IdentityMarshallingStrategy instead creates an integer id for + IdentityMarshallingStrategy creates an integer id for each user object and stores them in a Map, while the id is written to the stream. When unmarshalling it accesses the IdentityMarshallingStrategy map to retrieve the instance. This means that if you use the IdentityMarshallingStrategy, it is stateful for the life of the Marshaller instance and will create ids and keep references to all objects that it attempts to marshal. Below is - he code to use an Identity Marshalling Strategy. + the code to use an Identity Marshalling Strategy. IdentityMarshallingStrategy @@ -556,12 +556,11 @@ baos.close(); - For added flexability we can't assume that a single strategy is - suitable. Therefore we have added the - ObjectMarshallingStrategyAcceptor interface that each Object - Marshalling Strategy contains. The Marshaller has a chain of strategies, - and when it attempts to read or write a user object it iterates the - strategies asking if they accept responsability for marshalling the user + Im most cases, a single strategy is insufficient. For added flexibility, the + ObjectMarshallingStrategyAcceptor interface can be used. + This Marshaller has a chain of strategies, + and while reading or writing a user object it iterates the + strategies asking if they accept responsibility for marshalling the user object. One of the provided implementations is ClassFilterAcceptor. This allows strings and wild cards to be used to match class names. The default is "*.*", so in the above example @@ -596,7 +595,7 @@ baos.close(); Also note that if you are using scheduled matches (i.e. some of your rules use timers or calendars) they are marshallable only if, before you use it, you configure your KieSession to use a - trackable timer job factory manager as it follows: + trackable timer job factory manager as follows: Configuring a trackable timer job factory manager @@ -644,8 +643,8 @@ ut.commit(); To use a JPA, the Environment must be set with both the EntityManagerFactory and the TransactionManager. - If rollback occurs the ksession state is also rolled back, so it is possible - continue to use it after a rollback. To load a previously persisted + If rollback occurs the ksession state is also rolled back, hence it is possible + to continue to use it after a rollback. To load a previously persisted KieSession you'll need the id, as shown below: @@ -680,7 +679,7 @@ ut.commit(); The jdbc JTA data source would have to be configured first. Bitronix provides a number of ways of doing this, and its documentation should be - contsulted for details. For a quick start, here is the programmatic + consulted for details. For a quick start, here is the programmatic approach: @@ -699,7 +698,7 @@ ds.init(); Bitronix also provides a simple embedded JNDI service, ideal for - testing. To use it add a jndi.properties file to your META-INF and add the + testing. To use it, add a jndi.properties file to your META-INF folder and add the following line to it: diff --git a/kie-docs/shared/KIE/Overview/KIEAnatomy.xml b/kie-docs/shared/KIE/Overview/KIEAnatomy.xml index c5be4ada8..5ee7a5ff3 100644 --- a/kie-docs/shared/KIE/Overview/KIEAnatomy.xml +++ b/kie-docs/shared/KIE/Overview/KIEAnatomy.xml @@ -32,7 +32,7 @@ It was determined that the Guvnor brand leaked too much from its intended role; such as the authoring metaphors, like Decision Tables, being considered Guvnor components instead of Drools components. This wasn't helped by the monolithic projects structure used in 5.x for Guvnor. In 6.0 Guvnor's focus has been narrowed to - encapsulates the set of UberFire plugins that provide the basis for building a web based IDE. Such as Maven + encapsulate the set of UberFire plugins that provide the basis for building a web based IDE. Such as Maven integration for building and deploying, management of Maven repositories and activity notifications via inboxes. Drools and jBPM build workbench distributions using Uberfire as the base and including a set of plugins, such as Guvnor, along with their own plugins for things like decision tables, guided editors, BPMN2 designer, human tasks. diff --git a/kie-docs/shared/KIE/Overview/KIEOverview.xml b/kie-docs/shared/KIE/Overview/KIEOverview.xml index 848aee6be..b9b6bdd40 100644 --- a/kie-docs/shared/KIE/Overview/KIEOverview.xml +++ b/kie-docs/shared/KIE/Overview/KIEOverview.xml @@ -4,7 +4,7 @@ KIE - Knowledge Is Everything
Introduction - It's been a busy year since the last 5.x series release and so much has change. The New + It's been a busy year since the last 5.x series release and so much has changed. The New and Noteworthy contains a more detailed overview, but this section will highlight a few of the juicy items. One of the biggest complaints during the 5.x series was the lack of defined methodology for diff --git a/kie-docs/shared/KIE/ReleaseNotes/ReleaseNotesKIE.6.0.0.Final.xml b/kie-docs/shared/KIE/ReleaseNotes/ReleaseNotesKIE.6.0.0.Final.xml index 387938b01..61c2d831f 100644 --- a/kie-docs/shared/KIE/ReleaseNotes/ReleaseNotesKIE.6.0.0.Final.xml +++ b/kie-docs/shared/KIE/ReleaseNotes/ReleaseNotesKIE.6.0.0.Final.xml @@ -23,8 +23,8 @@ Maven aligned projects and modules and Maven Deployment One of the biggest complaints during the 5.x series was the lack of defined methodology for deployment. The mechanism used by Drools and jBPM was very flexible, but it was too flexible. A big focus for 6.0 was streamlining - the build, deploy and loading(utilization) aspects of the system. Building and deploying now align with Maven and - Maven repositories. The utilization for loading rules and processess is now convention and configuration oriented, + the build, deploy and loading (utilization) aspects of the system. Building and deploying activities are now aligned + with Maven and Maven repositories. The utilization for loading rules and processess is now convention and configuration oriented, instead of programmatic, with sane defaults to minimise the configuration. Projects can be built with Maven and installed to the local M2_REPO or remote Maven repositories. Maven is then used to declare and build the classpath of dependencies, for KIE to access. @@ -54,8 +54,8 @@ kSession.fireAllRules();
KieBase Inclusion It is possible to include all the KIE artifacts belonging to a KieBase into a second KieBase. This means that - the second KieBase beyond all the rules, function and processes directly defined into it will also contain the - ones created in the included KieBase. This inclusion can be done both declaratively in the kmodule.xml file + the second KieBase, in addition to all the rules, function and processes directly defined into it, will also contain the + ones created in the included KieBase. This inclusion can be done declaratively in the kmodule.xml file Including a KieBase into another declaratively <kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule"> @@ -73,27 +73,29 @@ KieBaseModel kieBaseModel1 = kmodule.newKieBaseModel("KBase2").addInclude("KBase
KieModules, KieContainer and KIE-CI - Any Maven produce JAR with a 'kmodule.xml' in it is considered a KieModule. This can be loaded from the + Any Maven produced JAR with a 'kmodule.xml' in it is considered a KieModule. This can be loaded from the classpath or dynamically at runtime from a Resource location. If the kie-ci dependency is on the classpath it embeds Maven and all resolving is done automatically using Maven and can access local or remote repositories. Settings.xml is obeyed for Maven configuration. The KieContainer provides a runtime to utilize the KieModule, versioning is built in throughout, via Maven. - Kie-ci will create a classpath dynamically from all the Maven declared dependencies for the artefact being loaded. - Maven LATEST, SNAPSHOT, RELEASE an version ranges are supported. + Kie-ci will create a classpath dynamically from all the Maven declared dependencies for the artifact being loaded. + Maven LATEST, SNAPSHOT, RELEASE and version ranges are supported. Utilize and Run - Java KieServices ks = KieServices.Factory.get(); -KieContainer kContainer = ks.newKieContainer(ks.newReleaseId("org.mygroup", "myartefact", "1.0")); +KieContainer kContainer = ks.newKieContainer( + ks.newReleaseId("org.mygroup", "myartefact", "1.0") ); KieSession kSession = kContainer.newKieSession("ksession1"); kSession.insert(new Message("Dave", "Hello, HAL. Do you read me, HAL?")); kSession.fireAllRules(); - KieContainers can be dynamically updated to a specific version, all resolved through Maven if KIE-CI is on the - classpath. For stateful KieSessions the existing sessions are incrementally updated. + KieContainers can be dynamically updated to a specific version, and resolved through Maven if KIE-CI is on the + classpath. For stateful KieSessions the existing sessions are incrementally updated. - Dynamically Update- Java - KieContainer kContainer.updateToVersion( ks.newReleaseId("org.mygroup", "myartefact", "1.1") ); + Dynamically Update - Java + KieContainer kContainer.updateToVersion( + ks.newReleaseId("org.mygroup", "myartefact", "1.1") );
@@ -101,12 +103,12 @@ kSession.fireAllRules(); KieScanner The KieScanner is a Maven-oriented replacement of the KnowledgeAgent - present in Drools 5. In fact it allows to continuously monitoring your Maven repository - to check if a new release of a Kie project has been installed and if so deploying it in + present in Drools 5. It continuously monitors your Maven repository + to check if a new release of a Kie project has been installed and if so, deploys it in the KieContainer wrapping that project. The use of the KieScanner requires kie-ci.jar to be on the classpath. - In more detail a KieScanner can be registered on a KieContainer + A KieScanner can be registered on a KieContainer as in the following example. @@ -123,8 +125,8 @@ kScanner.start( 10000L ); In this example the KieScanner is configured to run with a fixed time interval, but it is also possible to run it on demand by invoking the - scanNow() method on it. If the KieScanner finds in the - Maven repository an updated version of the Kie project used by that KieContainer + scanNow() method on it. If the KieScanner finds, in the + Maven repository, an updated version of the Kie project used by that KieContainer it automatically downloads the new version and triggers an incremental build of the new project. From this moment all the new KieBases and KieSessions created from that KieContainer will use the new project version. @@ -133,7 +135,7 @@ kScanner.start( 10000L );
Hierarchical ClassLoader The CompositeClassLoader is no longer used; as it was a constant source of performance problems and bugs. - Traditional hierarchical classloaders are now used. The root classloader is at the KieContext level, there is then + Traditional hierarchical classloaders are now used. The root classloader is at the KieContext level, with one child ClassLoader per namespace. This makes it cleaner to add and remove rules, but there can now be no referencing between namespaces in DRL files; i.e. functions can only be used by the namespaces that declared them. The recommendation is to use static Java methods in your project, which is visible to all namespaces; but those