Index: modeshape-integration-tests/src/test/java/org/modeshape/test/integration/AbstractAdHocModeShapeTest.java new file mode 100644 =================================================================== --- /dev/null (revision 2528) +++ modeshape-integration-tests/src/test/java/org/modeshape/test/integration/AbstractAdHocModeShapeTest.java (working copy) @@ -0,0 +1,67 @@ +/* + * ModeShape (http://www.modeshape.org) + * See the COPYRIGHT.txt file distributed with this work for information + * regarding copyright ownership. Some portions may be licensed + * to Red Hat, Inc. under one or more contributor license agreements. + * See the AUTHORS.txt file in the distribution for a full listing of + * individual contributors. + * + * ModeShape is free software. Unless otherwise indicated, all code in ModeShape + * is licensed to you under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * ModeShape is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.modeshape.test.integration; + +import static org.junit.Assert.fail; +import org.junit.After; +import org.junit.Before; +import org.modeshape.jcr.JcrTools; + +/** + * A base class for ModeShape integration tests that set up a new ModeShape engine for each unit test, but expects each test case + * to manually request the creation of the engine. + */ +public abstract class AbstractAdHocModeShapeTest extends AbstractModeShapeTest { + + @Override + @Before + public void beforeEach() throws Exception { + print = false; + tools = new JcrTools(); + } + + protected void startEngine( String configFilePath, + String repositoryName ) throws Exception { + if (session != null) { + fail("Can only start one engine in each test"); + } + startEngine(getClass(), configFilePath, repositoryName); + session = repository.login(); + } + + @Override + @After + public void afterEach() throws Exception { + + try { + if (session != null) { + session.logout(); + } + } finally { + session = null; + stopEngine(); + } + } + +} Index: modeshape-integration-tests/src/test/java/org/modeshape/test/integration/AbstractModeShapeTest.java =================================================================== --- modeshape-integration-tests/src/test/java/org/modeshape/test/integration/AbstractModeShapeTest.java (revision 2528) +++ modeshape-integration-tests/src/test/java/org/modeshape/test/integration/AbstractModeShapeTest.java (working copy) @@ -80,9 +80,13 @@ public abstract class AbstractModeShapeTest { @After public void afterEach() throws Exception { } - - protected void setSession(Session session) { - this.session = session; + + protected void setSession( Session session ) { + this.session = session; + } + + protected Session session() { + return session; } protected static void startEngine( Class testClass, @@ -148,8 +152,6 @@ public abstract class AbstractModeShapeTest { try { session.getWorkspace().importXML(jcrPathToImportUnder, stream, ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW); - } catch (Throwable t) { - t.printStackTrace(); } finally { stream.close(); } @@ -190,10 +192,10 @@ public abstract class AbstractModeShapeTest { String nodePath = parentPath + filename; // Now use the JCR API to upload the file ... - tools.uploadFile(session, nodePath, url); + tools.uploadFile(session(), nodePath, url); // Save the session ... - session.save(); + session().save(); } @@ -271,7 +273,7 @@ public abstract class AbstractModeShapeTest { int numberOfDeclaredChildNodeDefinitions, int numberOfDeclaredPropertyDefinitions, String... supertypes ) throws Exception { - NodeType nodeType = session.getWorkspace().getNodeTypeManager().getNodeType(name); + NodeType nodeType = session().getWorkspace().getNodeTypeManager().getNodeType(name); assertThat(nodeType, is(notNullValue())); assertThat(nodeType.isAbstract(), is(isAbstract)); assertThat(nodeType.isMixin(), is(isMixin)); @@ -288,7 +290,7 @@ public abstract class AbstractModeShapeTest { protected void assertNodeTypes( String... nodeTypeNames ) throws Exception { for (String nodeTypeName : nodeTypeNames) { - NodeType nodeType = session.getWorkspace().getNodeTypeManager().getNodeType(nodeTypeName); + NodeType nodeType = session().getWorkspace().getNodeTypeManager().getNodeType(nodeTypeName); assertThat(nodeType, is(notNullValue())); } } @@ -317,13 +319,13 @@ public abstract class AbstractModeShapeTest { } protected Node assertNode( String path ) throws RepositoryException { - return session.getNode(path); + return session().getNode(path); } protected Node assertNode( String path, String primaryType, String... mixinTypes ) throws RepositoryException { - Node node = session.getNode(path); + Node node = session().getNode(path); assertThat(node.getPrimaryNodeType().getName(), is(primaryType)); Set expectedMixinTypes = new HashSet(Arrays.asList(mixinTypes)); Set actualMixinTypes = new HashSet(); @@ -387,7 +389,7 @@ public abstract class AbstractModeShapeTest { } protected Value value( String value ) throws Exception { - return session.getValueFactory().createValue(value); + return session().getValueFactory().createValue(value); } protected void assertSingleValueProperty( Node node, @@ -420,7 +422,7 @@ public abstract class AbstractModeShapeTest { String propNameStr, int expectedValue ) throws Exception { Property prop = node.getProperty(propNameStr); - Value expValue = session.getValueFactory().createValue(expectedValue); + Value expValue = session().getValueFactory().createValue(expectedValue); Object actualValue = prop.getValue(); assertThat(expValue, is(actualValue)); @@ -670,6 +672,7 @@ public abstract class AbstractModeShapeTest { String queryLanguage, long expectedNumberOfResults, Map variables ) throws RepositoryException { + Session session = session(); Query query = session.getWorkspace().getQueryManager().createQuery(queryExpression, queryLanguage); if (variables != null && !variables.isEmpty()) { for (Map.Entry entry : variables.entrySet()) { Index: modeshape-integration-tests/src/test/java/org/modeshape/test/integration/JcrImportExportIntegrationTest.java new file mode 100644 =================================================================== --- /dev/null (revision 2528) +++ modeshape-integration-tests/src/test/java/org/modeshape/test/integration/JcrImportExportIntegrationTest.java (working copy) @@ -0,0 +1,42 @@ +/* + * ModeShape (http://www.modeshape.org) + * See the COPYRIGHT.txt file distributed with this work for information + * regarding copyright ownership. Some portions may be licensed + * to Red Hat, Inc. under one or more contributor license agreements. + * See the AUTHORS.txt file in the distribution for a full listing of + * individual contributors. + * + * ModeShape is free software. Unless otherwise indicated, all code in ModeShape + * is licensed to you under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * ModeShape is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.modeshape.test.integration; + +import org.junit.Test; +import org.modeshape.common.FixFor; + +public class JcrImportExportIntegrationTest extends AbstractAdHocModeShapeTest { + + @FixFor( "MODE-687" ) + @Test + public void shouldBeAbleToImportSystemFileIntoRepository() throws Exception { + startEngine("config/configRepositoryForDroolsImportExport.xml", "Repo"); + assertNode("/", "mode:root"); + // import the file ... + importContent(getClass(), "io/drools/systemViewImport.xml"); + // Verify the file was imported ... + // assertNode("/drools:repository", "nt:folder"); + } + +} Index: modeshape-integration-tests/src/test/resources/config/configRepositoryForDroolsImportExport.xml new file mode 100644 =================================================================== --- /dev/null (revision 2528) +++ modeshape-integration-tests/src/test/resources/config/configRepositoryForDroolsImportExport.xml (working copy) @@ -0,0 +1,49 @@ + + + + + + + default + + + + + + + /io/drools/versionable_node_type.cnd + /io/drools/versionable_asset_folder_node_type.cnd + /io/drools/rule_node_type.cnd + /io/drools/rulepackage_node_type.cnd + /io/drools/state_node_type.cnd + /io/drools/tag_node_type.cnd + + + + Index: modeshape-integration-tests/src/test/resources/io/drools/rule_node_type.cnd new file mode 100644 =================================================================== --- /dev/null (revision 2528) +++ modeshape-integration-tests/src/test/resources/io/drools/rule_node_type.cnd (working copy) @@ -0,0 +1,38 @@ +/* The node type definition for the rule node type. + See http://jackrabbit.apache.org/doc/nodetype/cnd.html for an explanation +*/ + +// The namespace declaration + + + + +// Node type name +[drools:assetNodeType] + +// Supertypes +> 'drools:versionableNodeType' + +// Properties: +- drools:content (string) +- drools:binaryContent (binary) +- drools:attachmentFileName (string) +- drools:archive (boolean) = 'false' mandatory autocreated + + +// use this to capture fields which are not known ahead of time +- * (undefined) + +- drools:dateEffective (date) + +- drools:dateExpired (date) + +- drools:packageName (string) + mandatory + +//for taxonomies/asset classification +- drools:categoryReference (reference) + multiple + copy + < 'drools:categoryNodeType' + \ No newline at end of file Index: modeshape-integration-tests/src/test/resources/io/drools/rulepackage_node_type.cnd new file mode 100644 =================================================================== --- /dev/null (revision 2528) +++ modeshape-integration-tests/src/test/resources/io/drools/rulepackage_node_type.cnd (working copy) @@ -0,0 +1,45 @@ +/* The node type definition for the ruleset node type. + See http://jackrabbit.apache.org/doc/nodetype/cnd.html for an explanation +*/ + +// The namespace declaration + + + + +// Node type name +[drools:packageNodeType] + +// Supertypes +> 'drools:versionableNodeType', 'nt:folder' + +- drools:archive (boolean) = 'false' mandatory autocreated + + +// Multiple assets are children of one physical package definition +// these folders contain the actual assets ++ * (drools:versionableAssetFolder) + ignore + +// this is for storing misc header info as pertains to rules, specifically imports +- drools:header (string) + +// this is for storing (optional) URI that will sync the repo with an external repository +// for example SVN +- drools:externalURI (string) + + +/* MN: retiring this structure - use it in future for shared rules +- drools:ruleReference (reference) + multiple + copy + < 'drools:assetNodeType','nt:version' +*/ + +//optionally store the binary compiled package (really a cache) +- drools:compiledPackage (binary) + + +// use this to capture fields which are not known ahead of time +- * (undefined) + Index: modeshape-integration-tests/src/test/resources/io/drools/state_node_type.cnd new file mode 100644 =================================================================== --- /dev/null (revision 2528) +++ modeshape-integration-tests/src/test/resources/io/drools/state_node_type.cnd (working copy) @@ -0,0 +1,14 @@ +/* The node type definition for the tag node type. + See http://jackrabbit.apache.org/doc/nodetype/cnd.html for an explanation +*/ + +// The namespace declaration + + + + +// Node type name +[drools:stateNodeType] + +// Supertypes +> 'nt:hierarchyNode','mix:referenceable' Index: modeshape-integration-tests/src/test/resources/io/drools/systemViewImport.xml new file mode 100644 =================================================================== --- /dev/null (revision 2528) +++ modeshape-integration-tests/src/test/resources/io/drools/systemViewImport.xml (working copy) @@ -0,0 +1,8130 @@ + + + + nt:folder + + + 2010-06-01T01:52:52.090+08:00 + + + admin + + + + nt:folder + + + 2010-06-01T01:52:52.090+08:00 + + + admin + + + + drools:packageNodeType + + + fae2b929-c5ef-4ce5-9fa1-514779ca0ae3 + + + false + + + true + + + Initial + + + rO0ABXNyABdvcmcuZHJvb2xzLnJ1bGUuUGFja2FnZQAAAAAAAAGQDAAAeHBzcgAmb3JnLmRyb29scy5ydWxlLkRpYWxlY3RSdW50aW1lUmVnaXN0cnkf4nrpqWIPIAwAAHhwc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAJ0AARqYXZhc3IAJm9yZy5kcm9vbHMucnVsZS5KYXZhRGlhbGVjdFJ1bnRpbWVEYXRhAAAAAAAAAZAMAAB4cHcIAAAAAAAAAAB4dAAEbXZlbHNyACZvcmcuZHJvb2xzLnJ1bGUuTVZFTERpYWxlY3RSdW50aW1lRGF0YeWjZyTO2TkODAAAeHBzcgAZamF2YS51dGlsLklkZW50aXR5SGFzaE1hcHGiZQEz8umAAwABSQAEc2l6ZXhwAAAAAHcEAAAAAHh4eHB4c3EAfgAEP0AAAAAAAAx3CAAAABAAAAAAeHQADmRlZmF1bHRQYWNrYWdlc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABdAAQZGVmYXVsdFBhY2thZ2UuKnNyACFvcmcuZHJvb2xzLnJ1bGUuSW1wb3J0RGVjbGFyYXRpb25Y9QI+83vcJgwAAHhwcQB+ABF4eHNyAB5qYXZhLnV0aWwuQ29sbGVjdGlvbnMkRW1wdHlTZXQV9XIdtAPLKAIAAHhwc3IAHmphdmEudXRpbC5Db2xsZWN0aW9ucyRFbXB0eU1hcFk2FIVa3OfQAgAAeHBxAH4AF3EAfgAXcQB+ABd3AQFzcgAXamF2YS51dGlsLkxpbmtlZEhhc2hNYXA0wE5cEGzA+wIAAVoAC2FjY2Vzc09yZGVyeHEAfgAEP0AAAAAAAAx3CAAAABAAAAAAeABzcgAnb3JnLmRyb29scy5iYXNlLkNsYXNzRmllbGRBY2Nlc3NvclN0b3JlAAAAAAAAAZAMAAB4cHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAHh4eA== + + + mic + + + The default rule package + + + package + + + mic + + + 2010-06-01T01:53:06.208+08:00 + + + defaultPackage + + + 1 + + + a26e20aa-7d7b-403f-8155-0c2a7c2e1d33 + + + 2010-06-01T01:52:52.090+08:00 + + + admin + + + true + + + a26e20aa-7d7b-403f-8155-0c2a7c2e1d33 + + + bd1c028d-486a-4611-82eb-990f46110234 + + + + drools:versionableAssetFolder + + + 023ae3a1-55be-4a9b-a7a8-524743f9bdd5 + + + cc6ce987-ab8c-4ccc-88ac-880cf52ec99f + + + 2010-06-01T01:52:52.105+08:00 + + + admin + + + true + + + cc6ce987-ab8c-4ccc-88ac-880cf52ec99f + + + d473d743-5462-471d-86e8-b83aeda2effa + + + + drools:assetNodeType + + + f7f8d2af-4733-4de7-a97b-9ea3dcac5602 + + + false + + + + + + + + + mic + + + + + + package + + + mic + + + 2008-09-30T11:33:25.353+10:00 + + + defaultPackage + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + drools + + + 1 + + + 61e13e67-3251-42ec-b83a-dc82db04c6b0 + + + 2010-06-01T01:52:52.105+08:00 + + + admin + + + true + + + 61e13e67-3251-42ec-b83a-dc82db04c6b0 + + + ef4e2d79-d31c-4105-801e-5177682f47d7 + + + + + + + drools:packageNodeType + + + da98caef-e1c4-4f98-880c-46a740c9131f + + + false + + + false + + + Mortgages that aren't stupid + + + rO0ABXNyABdvcmcuZHJvb2xzLnJ1bGUuUGFja2FnZQAAAAAAAAGQDAAAeHBzcgAmb3JnLmRyb29scy5ydWxlLkRpYWxlY3RSdW50aW1lUmVnaXN0cnkf4nrpqWIPIAwAAHhwc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAJ0AARqYXZhc3IAJm9yZy5kcm9vbHMucnVsZS5KYXZhRGlhbGVjdFJ1bnRpbWVEYXRhAAAAAAAAAZAMAAB4cHcEAAAABHQAH21vcnRnYWdlcy9Mb2FuQXBwbGljYXRpb24uY2xhc3N1cgACW0Ks8xf4BghU4AIAAHhwAAAH9cr+ur4AAAAwAGUBABltb3J0Z2FnZXMvTG9hbkFwcGxpY2F0aW9uBwABAQAQamF2YS9sYW5nL09iamVjdAcAAwEAFGphdmEvaW8vU2VyaWFsaXphYmxlBwAFAQAebW9ydGdhZ2VzLkxvYW5BcHBsaWNhdGlvbi5qYXZhAQAGYW1vdW50AQATTGphdmEvbGFuZy9JbnRlZ2VyOwEAB2RlcG9zaXQBAAhhcHByb3ZlZAEAE0xqYXZhL2xhbmcvQm9vbGVhbjsBAAxhcHByb3ZlZFJhdGUBAAtsZW5ndGhZZWFycwEAC2V4cGxhbmF0aW9uAQASTGphdmEvbGFuZy9TdHJpbmc7AQANaW5zdXJhbmNlQ29zdAEABjxpbml0PgEAAygpVgwAEgATCgAEABQBAAlnZXRBbW91bnQBABUoKUxqYXZhL2xhbmcvSW50ZWdlcjsMAAgACQkAAgAYAQAJc2V0QW1vdW50AQAWKExqYXZhL2xhbmcvSW50ZWdlcjspVgEACmdldERlcG9zaXQMAAoACQkAAgAdAQAKc2V0RGVwb3NpdAEAC2dldEFwcHJvdmVkAQAVKClMamF2YS9sYW5nL0Jvb2xlYW47DAALAAwJAAIAIgEAC3NldEFwcHJvdmVkAQAWKExqYXZhL2xhbmcvQm9vbGVhbjspVgEAD2dldEFwcHJvdmVkUmF0ZQwADQAJCQACACcBAA9zZXRBcHByb3ZlZFJhdGUBAA5nZXRMZW5ndGhZZWFycwwADgAJCQACACsBAA5zZXRMZW5ndGhZZWFycwEA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AAAwAFwBABNtb3J0Z2FnZXMvQXBwbGljYW50BwABAQAQamF2YS9sYW5nL09iamVjdAcAAwEAFGphdmEvaW8vU2VyaWFsaXphYmxlBwAFAQAYbW9ydGdhZ2VzLkFwcGxpY2FudC5qYXZhAQADYWdlAQATTGphdmEvbGFuZy9JbnRlZ2VyOwEACGFwcHJvdmVkAQATTGphdmEvbGFuZy9Cb29sZWFuOwEAD2FwcGxpY2F0aW9uRGF0ZQEAEExqYXZhL3V0aWwvRGF0ZTsBAAxjcmVkaXRSYXRpbmcBABJMamF2YS9sYW5nL1N0cmluZzsBAARuYW1lAQAGPGluaXQ+AQADKClWDAARABIKAAQAEwEABmdldEFnZQEAFSgpTGphdmEvbGFuZy9JbnRlZ2VyOwwACAAJCQACABcBAAZzZXRBZ2UBABYoTGphdmEvbGFuZy9JbnRlZ2VyOylWAQALZ2V0QXBwcm92ZWQBABUoKUxqYXZhL2xhbmcvQm9vbGVhbjsMAAoACwkAAgAdAQALc2V0QXBwcm92ZWQBABYoTGphdmEvbGFuZy9Cb29sZWFuOylWAQASZ2V0QXBwbGljYXRpb25EYXRlAQASKClMamF2YS91dGlsL0RhdGU7DAAMAA0JAAIAIwEAEnNldEFwcGxpY2F0aW9uRGF0ZQEAEyhMamF2YS91dGlsL0RhdGU7KVYBAA9nZXRDcmVkaXRSYXRpbmcBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwwADgAPCQACACkBAA9zZXRDcmVkaXRSYXRpbmcBABUoTGphdmEvbGFuZy9TdHJpbmc7KVYBAAdnZXROYW1lDAAQAA8JAAIALgEAB3NldE5hbWUBAAZlcXVhbHMBABUoTGphdmEvbGFuZy9PYmplY3Q7KVoBAAhnZXRDbGFzcwEAEygpTGphdmEvbGFuZy9DbGFzczsMADMANAoABAA1AQAIaGFzaENvZGUBAAMoKUkBAAh0b1N0cmluZwEAF2phdmEvbGFuZy9TdHJpbmdCdWlsZGVyBwA6CgA7ABMKAAIANQEAD2phdmEvbGFuZy9DbGFzcwcAPgEADWdldFNpbXBsZU5hbWUMAEAAKAoAPwBBAQAGYXBwZW5kAQAtKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZ0J1aWxkZXI7DABDAEQKADsARQEAAiggCABHCAAIAQABPQgASgEALShMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwwAQwBMCgA7AE0BAAIsIAgATwgACggADAgADggAEAEAAiApCABVDAA5ACgKADsAVwEABENvZGUBAAhTdGFja01hcAEAClNvdXJjZUZpbGUAIQACAAQAAQAGAAUAAgAIAAkAAAACAAoACwAAAAIADAANAAAAAgAOAA8AAAACABAADwAAAA4AAQARABIAAQBZAAAAEQABAAEAAAAFKrcAFLEAAAAAAAEAFQAWAAEAWQAAABEAAQABAAAABSq0ABiwAAAAAAABABkAGgABAFkAAAASAAIAAgAAAAYqK7UAGLEAAAAAAAEAGwAcAAEAWQAAABEAAQABAAAABSq0AB6wAAAAAAABAB8AIAABAFkAAAASAAIAAgAAAAYqK7UAHrEAAAAAAAEAIQAiAAEAWQAAABEAAQABAAAABSq0ACSwAAAAAAABACUAJgABAFkAAAASAAIAAgAAAAYqK7UAJLEAAAAAAAEAJwAoAAEAWQAAABEAAQABAAAABSq0ACqwAAAAAAABACsALAABAFkAAAASAAIAAgAAAAYqK7UAKrEAAAAAAAEALQAoAAEAWQAAABEAAQABAAAABSq0AC+wAAAAAAABADAALAABAFkAAAASAAIAAgAAAAYqK7UAL7EAAAAAAAEAMQAyAAEAWQAAAFkAAgADAAAAISorpgAFBKwrxwAFA6wqtgA2K7YANqUABQOsK8AAAk0DrAAAAAEAWgAAACYAAwAHAAIHAAIHAAQAAAANAAIHAAIHAAQAAAAaAAIHAAIHAAQAAAABADcAOAABAFkAAAAQAAEAAgAAAAQEPBusAAAAAAABADkAKAABAFkAAACWAAIAAgAAAIq7ADtZtwA8TCsqtgA9tgBCtgBGEki2AEYSSbYARhJLtgBGKrQAGLYAThJQtgBGElG2AEYSS7YARiq0AB62AE4SULYARhJStgBGEku2AEYqtAAktgBOElC2AEYSU7YARhJLtgBGKrQAKrYAThJQtgBGElS2AEYSS7YARiq0AC+2AE4SVrYARrYAWLAAAAAAAAEAWwAAAAIAB3QAHG1vcnRnYWdlcy9JbmNvbWVTb3VyY2UuY2xhc3N1cQB+AAoAAASdyv66vgAAADAARAEAFm1vcnRnYWdlcy9JbmNvbWVTb3VyY2UHAAEBABBqYXZhL2xhbmcvT2JqZWN0BwADAQAUamF2YS9pby9TZXJpYWxpemFibGUHAAUBABttb3J0Z2FnZXMuSW5jb21lU291cmNlLmphdmEBAAZhbW91bnQBABNMamF2YS9sYW5nL0ludGVnZXI7AQAEdHlwZQEAEkxqYXZhL2xhbmcvU3RyaW5nOwEABjxpbml0PgEAAygpVgwADAANCgAEAA4BAAlnZXRBbW91bnQBABUoKUxqYXZhL2xhbmcvSW50ZWdlcjsMAAgACQkAAgASAQAJc2V0QW1vdW50AQAWKExqYXZhL2xhbmcvSW50ZWdlcjspVgEAB2dldFR5cGUBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwwACgALCQACABgBAAdzZXRUeXBlAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWAQAGZXF1YWxzAQAVKExqYXZhL2xhbmcvT2JqZWN0OylaAQAIZ2V0Q2xhc3MBABMoKUxqYXZhL2xhbmcvQ2xhc3M7DAAeAB8KAAQAIAEACGhhc2hDb2RlAQADKClJAQAIdG9TdHJpbmcBABdqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcgcAJQoAJgAOCgACACABAA9qYXZhL2xhbmcvQ2xhc3MHACkBAA1nZXRTaW1wbGVOYW1lDAArABcKACoALAEABmFwcGVuZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwwALgAvCgAmADABAAIoIAgAMggACAEAAT0IADUBAC0oTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsMAC4ANwoAJgA4AQACLCAIADoIAAoBAAIgKQgAPQwAJAAXCgAmAD8BAARDb2RlAQAIU3RhY2tNYXABAApTb3VyY2VGaWxlACEAAgAEAAEABgACAAIACAAJAAAAAgAKAAsAAAAIAAEADAANAAEAQQAAABEAAQABAAAABSq3AA+xAAAAAAABABAAEQABAEEAAAARAAEAAQAAAAUqtAATsAAAAAAAAQAUABUAAQBBAAAAEgACAAIAAAAGKiu1ABOxAAAAAAABABYAFwABAEEAAAARAAEAAQAA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X25vX05JTkpBc18wAFkJCWFwcC5zZXRBcHByb3ZlZCggZmFsc2UgKTsKCQlhcHAuc2V0RXhwbGFuYXRpb24oICJubyBOSU5KQXMiICk7CgkJZHJvb2xzLnJldHJhY3QoIGFwcCApO3VxAH4ALQAAAAFxAH4AL3VxAH4ALQAAAAB1cQB+AC0AAAAAdXEAfgAtAAAAAHVxAH4ALQAAAAB1cQB+ADQAAAABcQB+AEdwdXEAfgAtAAAAAHVxAH4ALQAAAAFxAH4ASHVxAH4ALQAAAAF0ABltb3J0Z2FnZXMuTG9hbkFwcGxpY2F0aW9ucHcFAAAABAF4dwYABG12ZWx4cHB3CgAAAAAAAAAFAABwcHcDAAABcHBxAH4AOnB4cQB+AFRzcQB+ABdxAH4AGXQAE1JvdyAzIFByaWNpbmcgbG9hbnNwcQB+ABx3AQFwcHNxAH4AHXEAfgAic3EAfgAkAAAAAncEAAAACnNxAH4AQHEAfgBDc3EAfgAkAAAABHcEAAAABHNyACFvcmcuZHJvb2xzLnJ1bGUuTGl0ZXJhbENvbnN0cmFpbnQAAAAAAAABkAwAAHhwc3IAIG9yZy5kcm9vbHMuYmFzZS5DbGFzc0ZpZWxkUmVhZGVyAAAAAAAAAZAMAAB4cHEAfgBfdAAGYW1vdW50eHNyACJvcmcuZHJvb2xzLnJ1bGUuTGl0ZXJhbFJlc3RyaWN0aW9uAAAAAAAAAZAMAAB4cHNyACVvcmcuZHJvb2xzLmJhc2UuZmllbGQuT2JqZWN0RmllbGRJbXBsAAAAAAAAAZAMAAB4cHcBAHBwdAAGMTMxMDAweHNyAFFvcmcuZHJvb2xzLmJhc2UuZXZhbHVhdG9ycy5Db21wYXJhYmxlRXZhbHVhdG9yc0RlZmluaXRpb24kSW50ZWdlckdyZWF0ZXJFdmFsdWF0b3IAAAAAAAABkAwAAHhyAB1vcmcuZHJvb2xzLmJhc2UuQmFzZUV2YWx1YXRvcvKXsVKoPFv8DAAAeHBzcgAjb3JnLmRyb29scy5iYXNlLmV2YWx1YXRvcnMuT3BlcmF0b3IAAAAAAAABkAwAAHhwdAABPncBAHhzcgAZb3JnLmRyb29scy5iYXNlLlZhbHVlVHlwZQAAAAAAAAGQDAAAeHB0AANpbnR2cgADaW50AAAAAAAAAAAAAAB4cHcEAAAABHh4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TWFwcGluZ3O10GgP184yEAwAAHhwcQB+Aeh3CAAAAAUAAAAAeHQAIG1vcnRnYWdlcy5SdWxlX0NoZWNrQm94RHNsUnVsZV8wc3EAfgHpcQB+Aet3CAAAAAQAAAAAeHQAHW1vcnRnYWdlcy5SdWxlX1JlZ2V4RHNsUnVsZV8wc3EAfgHpcQB+Ae13CAAAAAUAAAAAeHQAI21vcnRnYWdlcy5SdWxlX0JhbmtydXB0Y3lfaGlzdG9yeV8wc3EAfgHpcQB+Ae93CAAAAAcAAAAAeHQAGm1vcnRnYWdlcy5SdWxlX25vX05JTkpBc18wc3EAfgHpcQB+AfF3CAAAAAcAAAAAeHQAGW1vcnRnYWdlcy5SdWxlX1VuZGVyYWdlXzBzcQB+AelxAH4B83cIAAAABwAAAAB4dAAlbW9ydGdhZ2VzLlJ1bGVfTm9fYmFkX2NyZWRpdF9jaGVja3NfMHNxAH4B6XEAfgH1dwgAAAAHAAAAAHh0ACRtb3J0Z2FnZXMuUnVsZV9Sb3dfMl9QcmljaW5nX2xvYW5zXzBzcQB+AelxAH4B93cIAAAAHwAAAAB4dAAfbW9ydGdhZ2VzLlJ1bGVfQ3JlZGl0QXBwcm92YWxfMHNxAH4B6XEAfgH5dwgAAAAFAAAAAHh0ACRtb3J0Z2FnZXMuUnVsZV9Sb3dfMV9QcmljaW5nX2xvYW5zXzBzcQB+AelxAH4B+3cIAAAAEwAAAAB4dAAkbW9ydGdhZ2VzLlJ1bGVfUm93XzNfUHJpY2luZ19sb2Fuc18wc3EAfgHpcQB+Af13CAAAAAcAAAAAeHh4c3EAfgAEP0AAAAAAAAx3CAAAABAAAAAEdAAKQmFua3J1cHRjeXNyAB9vcmcuZHJvb2xzLnJ1bGUuVHlwZURlY2xhcmF0aW9u5qIZN48ZfxQMAAB4cHEAfgIAfnIAJG9yZy5kcm9vbHMucnVsZS5UeXBlRGVjbGFyYXRpb24kUm9sZQAAAAAAAAAAEgAAeHEAfgAhdAAERkFDVH5yACZvcmcuZHJvb2xzLnJ1bGUuVHlwZURlY2xhcmF0aW9uJEZvcm1hdAAAAAAAAAAAEgAAeHEAfgAhdAAEUE9KT3BwcQB+AUZwc3IAJG9yZy5kcm9vbHMuZmFjdG1vZGVsLkNsYXNzRGVmaW5pdGlvbkDJP7TT/aNYDAAAeHB0ABRtb3J0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 + + + mic + + + Mortgages that aren't stupid + + + + + + package + + + mic + + + 2010-06-01T01:53:07.861+08:00 + + + mortgages + + + 2 + + + 65bc3c6d-b4a1-447d-bf6e-4012ea380f4b + + + 2010-06-01T01:52:52.168+08:00 + + + admin + + + true + + + 65bc3c6d-b4a1-447d-bf6e-4012ea380f4b + + + d019df37-4d83-4c8b-8275-9de110e95200 + + + + drools:versionableAssetFolder + + + cb341374-2f44-44fe-88e9-05fa38b9060a + + + 66b3f0e2-d3e3-4090-88d3-e1e466f90a46 + + + 2010-06-01T01:52:52.168+08:00 + + + admin + + + true + + + 66b3f0e2-d3e3-4090-88d3-e1e466f90a46 + + + dfb640e5-e6f6-45fd-8bb2-f846d110e140 + + + + drools:assetNodeType + + + 2a158076-afb0-4366-93b8-46e926df075e + + + false + + + + + + + + + mic + + + + + + package + + + mic + + + 2008-09-30T11:36:29.962+10:00 + + + mortgages + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + drools + + + 1 + + + 17fc7bdc-4c42-4d89-9251-cebcff41f22f + + + 2010-06-01T01:52:52.168+08:00 + + + admin + + + true + + + 17fc7bdc-4c42-4d89-9251-cebcff41f22f + + + e4fb4b62-958e-4039-8a81-1a47223c0817 + + + + + drools:assetNodeType + + + 137190d6-07d5-442e-9188-ac226ea388b5 + + + false + + + + + + + declare LoanApplication + amount: Integer + approved: Boolean + deposit: Integer + approvedRate: Integer + lengthYears: Integer + explanation: String + insuranceCost: Integer +end + +declare Applicant + age: Integer + applicationDate: java.util.Date + creditRating: String + name: String + approved: Boolean +end + +declare IncomeSource + amount: Integer + type: String +end + +declare Bankruptcy + amountOwed: Integer + yearOfOccurrence: Integer +end + + + + + + mic + + + + + + false + + + model.drl + + + admin + + + 2008-10-22T15:01:14.882-05:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + MortgageModel + + + + + + 6 + + + a41ec5e1-2c22-4243-be20-27b639ce784e + + + 2010-06-01T01:52:52.183+08:00 + + + admin + + + true + + + a41ec5e1-2c22-4243-be20-27b639ce784e + + + 5a4d4acb-4d24-4a93-bcda-b88db8ba6c69 + + + + + drools:assetNodeType + + + dffeb086-38e6-4ec0-aa2a-f7693fe2a6ef + + + false + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + + + + <rule> + <name>Underage</name> + <modelVersion>1.0</modelVersion> + <attributes> + <attribute> + <attributeName>salience</attributeName> + <value>10</value> + </attribute> + </attributes> + <lhs> + <fact> + <factType>LoanApplication</factType> + <boundName>application</boundName> + </fact> + <fact> + <constraintList> + <constraints> + <fieldConstraint> + <value>21</value> + <constraintValueType>1</constraintValueType> + <fieldName>age</fieldName> + <operator>&lt;</operator> + <fieldType>Numeric</fieldType> + </fieldConstraint> + </constraints> + </constraintList> + <factType>Applicant</factType> + </fact> + </lhs> + <rhs> + <setField> + <fieldValues> + <fieldValue> + <field>approved</field> + <value>false</value> + <type>Boolean</type> + </fieldValue> + <fieldValue> + <field>explanation</field> + <value>Underage</value> + <type>String</type> + </fieldValue> + </fieldValues> + <variable>application</variable> + </setField> + <retract> + <variableName>application</variableName> + </retract> + </rhs> +</rule> + + + + + + mic + + + + + + false + + + brl + + + mic + + + 2008-10-01T12:54:34.716+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Underage + + + + + + 2 + + + 82bc895c-2909-477c-ba39-bc1c6198fd18 + + + 2010-06-01T01:52:52.199+08:00 + + + admin + + + true + + + 82bc895c-2909-477c-ba39-bc1c6198fd18 + + + 91557689-4ee0-45ec-9808-2c5982e8323b + + + + + drools:assetNodeType + + + 2ebe06cf-684d-4586-ae1c-6502f2a1adb7 + + + false + + + 96f4f6c2-01f9-445f-b773-6a7c5f77fa0b + + + + + + <scenario> + <maxRuleFirings>100000</maxRuleFirings> + <globals/> + <fixtures> + <fact-data> + <type>Applicant</type> + <name>a</name> + <fieldData> + <field-data> + <name>age</name> + <value>17</value> + <nature>0</nature> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>LoanApplication</type> + <name>application</name> + <fieldData> + <field-data> + <name>amount</name> + <value>1</value> + <nature>0</nature> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>IncomeSource</type> + <name>incomeSource</name> + <fieldData/> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>1</executionTimeResult> + <numberOfRulesFired>4</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>false</expected> + <actualResult></actualResult> + <successResult>true</successResult> + <explanation>[application] field [approved] was [false].</explanation> + <operator>==</operator> + <nature>0</nature> + </expect-field> + <expect-field> + <fieldName>explanation</fieldName> + <expected>Underage</expected> + <actualResult></actualResult> + <successResult>true</successResult> + <explanation>[application] field [explanation] was [Underage].</explanation> + <operator>==</operator> + <nature>1</nature> + </expect-field> + </fieldValues> + <name>application</name> + <anonymous>false</anonymous> + </expect-fact> + </fixtures> + <lastRunResult>2010-05-26 22:27:39.958 EEST</lastRunResult> + <rules/> + <inclusive>false</inclusive> +</scenario> + + + + + + mic + + + Test really basic validation, common sense stuff + + + false + + + scenario + + + admin + + + 2010-05-26T22:27:44.738+03:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Are they old enough + + + + + + 5 + + + e82730f8-e98d-4ad2-a962-d34e7f07e75c + + + 2010-06-01T01:52:52.214+08:00 + + + admin + + + true + + + e82730f8-e98d-4ad2-a962-d34e7f07e75c + + + dcfed101-5747-4cbe-ab01-ba0be58312b6 + + + + + drools:assetNodeType + + + 681589e9-63df-49e9-8051-41fb890ca9e1 + + + false + + + 96f4f6c2-01f9-445f-b773-6a7c5f77fa0b + + + + + + <scenario> + <maxRuleFirings>100000</maxRuleFirings> + <globals/> + <fixtures> + <fact-data> + <type>LoanApplication</type> + <name>application</name> + <fieldData/> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>Bankruptcy</type> + <name>bankruptcy</name> + <fieldData> + <field-data> + <name>yearOfOccurrence</name> + <value>1991</value> + </field-data> + <field-data> + <name>amountOwed</name> + <value>9000</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>Bankruptcy</type> + <name>moreBankruptcy</name> + <fieldData> + <field-data> + <name>yearOfOccurrence</name> + <value>1988</value> + </field-data> + <field-data> + <name>amountOwed</name> + <value>5000</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>0</executionTimeResult> + <numberOfRulesFired>2</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>false</expected> + <actualResult></actualResult> + <successResult>true</successResult> + <explanation>[application] field [approved] was [false].</explanation> + <operator>==</operator> + </expect-field> + <expect-field> + <fieldName>explanation</fieldName> + <expected>has been bankrupt</expected> + <actualResult>has been bankrupt</actualResult> + <successResult>true</successResult> + <explanation>[application] field [explanation] was [has been bankrupt].</explanation> + <operator>==</operator> + </expect-field> + </fieldValues> + <name>application</name> + <anonymous>false</anonymous> + </expect-fact> + <retract-fact> + <name>moreBankruptcy</name> + </retract-fact> + <fact-data> + <type>Bankruptcy</type> + <name>bankruptcy</name> + <fieldData> + <field-data> + <name>yearOfOccurrence</name> + <value>1980</value> + </field-data> + <field-data> + <name>amountOwed</name> + <value>100000</value> + </field-data> + </fieldData> + <isModify>true</isModify> + </fact-data> + <fact-data> + <type>LoanApplication</type> + <name>application2</name> + <fieldData/> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>0</executionTimeResult> + <numberOfRulesFired>1</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>false</expected> + <successResult>true</successResult> + <explanation>[application2] field [approved] was [false].</explanation> + <operator>==</operator> + </expect-field> + </fieldValues> + <name>application2</name> + <anonymous>false</anonymous> + </expect-fact> + </fixtures> + <lastRunResult>2008-10-01 10:18:15.949 EST</lastRunResult> + <rules/> + <inclusive>false</inclusive> +</scenario> + + + + + + mic + + + We don't want bankrupt people since 1990, or if their amount was over a certain amount + + + false + + + scenario + + + mic + + + 2008-10-01T10:20:53.588+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + No bankruptcies + + + + + + 5 + + + a240d031-276c-4d9f-b44a-59cc20e9b5da + + + 2010-06-01T01:52:52.246+08:00 + + + admin + + + true + + + a240d031-276c-4d9f-b44a-59cc20e9b5da + + + b3882538-a857-464c-b686-285aa5461286 + + + + + drools:assetNodeType + + + 1cf5fa73-0412-48e2-b1b0-19ca946300fb + + + true + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + Archived Item on Wed Oct 01 12:54:56 GMT+1000 2008 + + + <rule> + <name>Bankruptcies</name> + <modelVersion>1.0</modelVersion> + <attributes/> + <lhs> + <compositePattern> + <type>exists</type> + <patterns> + <fact> + <constraintList> + <constraints> + <fieldConstraint> + <value>1990</value> + <constraintValueType>1</constraintValueType> + <fieldName>yearOfOccurrence</fieldName> + <operator>&gt;</operator> + <fieldType>Numeric</fieldType> + </fieldConstraint> + </constraints> + </constraintList> + <factType>Bankruptcy</factType> + </fact> + </patterns> + </compositePattern> + </lhs> + <rhs/> +</rule> + + + + + + mic + + + + + + false + + + brl + + + mic + + + 2008-10-01T12:54:56.805+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Bankruptcies + + + + + + 2 + + + 9c32405e-f693-4a8e-96d1-a82af188da47 + + + 2010-06-01T01:52:52.261+08:00 + + + admin + + + true + + + 9c32405e-f693-4a8e-96d1-a82af188da47 + + + 1ec7162e-4f13-4986-ad76-278c7677573f + + + + + drools:assetNodeType + + + 968c9b3c-bc19-40ba-bb38-44435956ccee + + + false + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + + + + <rule> + <name>Bankruptcy history</name> + <modelVersion>1.0</modelVersion> + <attributes> + <attribute> + <attributeName>salience</attributeName> + <value>10</value> + </attribute> + </attributes> + <lhs> + <fact> + <factType>LoanApplication</factType> + <boundName>a</boundName> + </fact> + <compositePattern> + <type>exists</type> + <patterns> + <fact> + <constraintList> + <constraints> + <compositeConstraint> + <compositeJunctionType>||</compositeJunctionType> + <constraints> + <fieldConstraint> + <value>1990</value> + <constraintValueType>1</constraintValueType> + <fieldName>yearOfOccurrence</fieldName> + <operator>&gt;</operator> + <fieldType></fieldType> + </fieldConstraint> + <fieldConstraint> + <value>10000</value> + <constraintValueType>1</constraintValueType> + <fieldName>amountOwed</fieldName> + <operator>&gt;</operator> + <fieldType></fieldType> + </fieldConstraint> + </constraints> + </compositeConstraint> + </constraints> + </constraintList> + <factType>Bankruptcy</factType> + </fact> + </patterns> + </compositePattern> + </lhs> + <rhs> + <setField> + <fieldValues> + <fieldValue> + <field>approved</field> + <value>false</value> + <type>Boolean</type> + </fieldValue> + <fieldValue> + <field>explanation</field> + <value>has been bankrupt</value> + <type>String</type> + </fieldValue> + </fieldValues> + <variable>a</variable> + </setField> + <retract> + <variableName>a</variableName> + </retract> + </rhs> +</rule> + + + + + + mic + + + + + + false + + + brl + + + mic + + + 2008-10-01T12:55:07.598+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Bankruptcy history + + + + + + 3 + + + 1a1d96b8-c11f-4c7e-a54f-3341f300d277 + + + 2010-06-01T01:52:52.292+08:00 + + + admin + + + true + + + 1a1d96b8-c11f-4c7e-a54f-3341f300d277 + + + c1565130-9961-47e9-9337-f7ea0e7f68aa + + + + + drools:assetNodeType + + + bea0724b-47c5-417f-8728-328a5c55142b + + + false + + + + + + + 'Applicant.creditRating': ['AA', 'OK', 'Sub prime'] + + + + + + mic + + + An enumeration is a mapping from fields to a list of values.This will mean the rule editor will show a drop down for fields, instead of a text box.The format of this is: 'FactType.fieldName': ['Value1', 'Value2'] +You can add more mappings by adding in more lines. +For example: + +'Person.sex' : ['M', 'F'] +'Person.rating' : ['High', 'Low'] + +You can also ad display aliases (so the value used in the rule is separate to the one displayed: +'Person.sex' : ['M=Male', 'F=Female'] +in the above case, the 'M=Male' means that 'Male' will be displayed as an item in a drop down box, but the value 'M' will be used in the rule. + + + false + + + enumeration + + + mic + + + 2008-10-01T10:26:35.668+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + credit ratings + + + + + + 1 + + + 12077a46-0b4b-46fc-845c-f9a4d53713d0 + + + 2010-06-01T01:52:52.324+08:00 + + + admin + + + true + + + 12077a46-0b4b-46fc-845c-f9a4d53713d0 + + + 6210d887-0965-4357-a473-2e77f319f05a + + + + + drools:assetNodeType + + + dd11bdec-1e84-47bc-bdd5-9dd9e781acae + + + false + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + + + + <rule> + <name>No bad credit checks</name> + <modelVersion>1.0</modelVersion> + <attributes> + <attribute> + <attributeName>salience</attributeName> + <value>10</value> + </attribute> + </attributes> + <lhs> + <fact> + <factType>LoanApplication</factType> + <boundName>app</boundName> + </fact> + <compositePattern> + <type>or</type> + <patterns> + <fact> + <constraintList> + <constraints> + <fieldConstraint> + <value>OK</value> + <constraintValueType>1</constraintValueType> + <fieldName>creditRating</fieldName> + <operator>==</operator> + <fieldType>String</fieldType> + </fieldConstraint> + </constraints> + </constraintList> + <factType>Applicant</factType> + </fact> + <fact> + <constraintList> + <constraints> + <fieldConstraint> + <value>Sub prime</value> + <constraintValueType>1</constraintValueType> + <fieldName>creditRating</fieldName> + <operator>==</operator> + <fieldType>String</fieldType> + </fieldConstraint> + </constraints> + </constraintList> + <factType>Applicant</factType> + </fact> + </patterns> + </compositePattern> + </lhs> + <rhs> + <setField> + <fieldValues> + <fieldValue> + <field>approved</field> + <value>false</value> + <type>Boolean</type> + </fieldValue> + <fieldValue> + <field>explanation</field> + <value>Only AA</value> + <type>String</type> + </fieldValue> + </fieldValues> + <variable>app</variable> + </setField> + <retract> + <variableName>app</variableName> + </retract> + </rhs> +</rule> + + + + + + mic + + + + + + false + + + brl + + + mic + + + 2008-10-01T12:55:21.006+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + No bad credit checks + + + + + + 7 + + + ac797b53-5e89-461a-928c-a27758656ccc + + + 2010-06-01T01:52:52.339+08:00 + + + admin + + + true + + + ac797b53-5e89-461a-928c-a27758656ccc + + + 90ef8ecd-7016-45c6-9fec-4d7ade8d7578 + + + + + drools:assetNodeType + + + 5e810512-d255-4836-b33c-855e64b07660 + + + false + + + 96f4f6c2-01f9-445f-b773-6a7c5f77fa0b + + + + + + <scenario> + <maxRuleFirings>100000</maxRuleFirings> + <globals/> + <fixtures> + <fact-data> + <type>Applicant</type> + <name>a</name> + <fieldData> + <field-data> + <name>creditRating</name> + <value>OK</value> + <nature>0</nature> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>LoanApplication</type> + <name>app</name> + <fieldData> + <field-data> + <name>approved</name> + <value>false</value> + <nature>0</nature> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>IncomeSource</type> + <name>incomeSource</name> + <fieldData/> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>7</executionTimeResult> + <numberOfRulesFired>1</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>false</expected> + <successResult>true</successResult> + <explanation>[app] field [approved] was [false].</explanation> + <operator>==</operator> + <nature>0</nature> + </expect-field> + <expect-field> + <fieldName>explanation</fieldName> + <expected>Only AA</expected> + <successResult>true</successResult> + <explanation>[app] field [explanation] was [Only AA].</explanation> + <operator>==</operator> + <nature>1</nature> + </expect-field> + </fieldValues> + <name>app</name> + <anonymous>false</anonymous> + </expect-fact> + </fixtures> + <lastRunResult>2008-10-01 20:43:32.318 EEST</lastRunResult> + <rules/> + <inclusive>false</inclusive> +</scenario> + + + + + + mic + + + Obviously we only want people who can pay stuff back + + + false + + + scenario + + + admin + + + 2010-05-26T22:28:01.191+03:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Good credit history only + + + + + + 4 + + + 3bb0c7ba-66ee-4ec9-ac65-51ab38e233b2 + + + 2010-06-01T01:52:52.355+08:00 + + + admin + + + true + + + 3bb0c7ba-66ee-4ec9-ac65-51ab38e233b2 + + + eccd5105-f4de-452a-8cb4-00633e8e0333 + + + + + drools:assetNodeType + + + 61aec69e-e20a-43f5-b7c1-5c10cf19c589 + + + false + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + + + + <rule> + <name>no NINJAs</name> + <modelVersion>1.0</modelVersion> + <attributes> + <attribute> + <attributeName>salience</attributeName> + <value>10</value> + </attribute> + </attributes> + <lhs> + <fact> + <factType>LoanApplication</factType> + <boundName>app</boundName> + </fact> + <compositePattern> + <type>not</type> + <patterns> + <fact> + <factType>IncomeSource</factType> + </fact> + </patterns> + </compositePattern> + </lhs> + <rhs> + <setField> + <fieldValues> + <fieldValue> + <field>approved</field> + <value>false</value> + <type>Boolean</type> + </fieldValue> + <fieldValue> + <field>explanation</field> + <value>no NINJAs</value> + <type>String</type> + </fieldValue> + </fieldValues> + <variable>app</variable> + </setField> + <retract> + <variableName>app</variableName> + </retract> + </rhs> +</rule> + + + + + + mic + + + No ninjas ! + + + false + + + brl + + + mic + + + 2008-10-02T07:32:16.977+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + no NINJAs + + + + + + 4 + + + 99ac035a-9bdc-4fe3-9dc6-c8958efa64f6 + + + 2010-06-01T01:52:52.370+08:00 + + + admin + + + true + + + 99ac035a-9bdc-4fe3-9dc6-c8958efa64f6 + + + 54b0409e-d3ca-43ff-9ab4-58201743958b + + + + + drools:assetNodeType + + + d501211f-0bbc-452c-aa03-444ea218e79b + + + false + + + 96f4f6c2-01f9-445f-b773-6a7c5f77fa0b + + + + + + <scenario> + <maxRuleFirings>100000</maxRuleFirings> + <globals/> + <fixtures> + <fact-data> + <type>LoanApplication</type> + <name>app</name> + <fieldData/> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>Applicant</type> + <name>applicant</name> + <fieldData/> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>0</executionTimeResult> + <numberOfRulesFired>1</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>false</expected> + <successResult>true</successResult> + <explanation>[app] field [approved] was [false].</explanation> + <operator>==</operator> + </expect-field> + <expect-field> + <fieldName>explanation</fieldName> + <expected>no NINJAs</expected> + <actualResult>no NINJAs</actualResult> + <successResult>true</successResult> + <explanation>[app] field [explanation] was [no NINJAs].</explanation> + <operator>==</operator> + </expect-field> + </fieldValues> + <name>app</name> + <anonymous>false</anonymous> + </expect-fact> + </fixtures> + <lastRunResult>2008-10-01 12:47:29.730 EST</lastRunResult> + <rules/> + <inclusive>false</inclusive> +</scenario> + + + + + + mic + + + + + + false + + + scenario + + + mic + + + 2008-10-01T12:47:32.301+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + NINJAs + + + + + + 2 + + + 1c3715fd-adbc-4f8a-a4eb-825171fa3311 + + + 2010-06-01T01:52:52.402+08:00 + + + admin + + + true + + + 1c3715fd-adbc-4f8a-a4eb-825171fa3311 + + + f46bca4a-a129-462b-a2e5-0308f4d2dfc0 + + + + + drools:assetNodeType + + + f628bf77-f27c-4507-bdeb-fba3d202ac55 + + + false + + + 9be50562-7549-4e68-a6c0-42222781bde9 + + + + + + <decision-table> + <tableName>Pricing loans</tableName> + <attributeCols/> + <conditionCols> + <condition-column> + <width>96</width> + <header>amount min</header> + <factType>LoanApplication</factType> + <boundName>application</boundName> + <constraintValueType>1</constraintValueType> + <factField>amount</factField> + <operator>&gt;</operator> + </condition-column> + <condition-column> + <width>104</width> + <header>amount max</header> + <factType>LoanApplication</factType> + <boundName>application</boundName> + <constraintValueType>1</constraintValueType> + <factField>amount</factField> + <operator>&lt;=</operator> + </condition-column> + <condition-column> + <width>81</width> + <header>period</header> + <factType>LoanApplication</factType> + <boundName>application</boundName> + <constraintValueType>1</constraintValueType> + <factField>lengthYears</factField> + <operator>==</operator> + <valueList>20, 25, 30</valueList> + </condition-column> + <condition-column> + <width>-1</width> + <header>income</header> + <factType>IncomeSource</factType> + <boundName>income</boundName> + <constraintValueType>1</constraintValueType> + <factField>type</factField> + <operator>==</operator> + <valueList>Job, Asset</valueList> + </condition-column> + <condition-column> + <width>-1</width> + <header>deposit max</header> + <factType>LoanApplication</factType> + <boundName>application</boundName> + <constraintValueType>1</constraintValueType> + <factField>deposit</factField> + <operator>&lt;</operator> + </condition-column> + </conditionCols> + <actionCols> + <set-field-col> + <width>-1</width> + <header>Loan approved</header> + <boundName>application</boundName> + <factField>approved</factField> + <type>Boolean</type> + <valueList>true, false</valueList> + </set-field-col> + <set-field-col> + <width>-1</width> + <header>LMI</header> + <boundName>application</boundName> + <factField>insuranceCost</factField> + <type>Numeric</type> + </set-field-col> + <set-field-col> + <width>-1</width> + <header>rate</header> + <boundName>application</boundName> + <factField>approvedRate</factField> + <type>Numeric</type> + </set-field-col> + </actionCols> + <data> + <string-array> + <string>3</string> + <null/> + <string>131000</string> + <string>200000</string> + <string>30</string> + <string>Asset</string> + <string>20000</string> + <string>true</string> + <string>0</string> + <string>2</string> + </string-array> + <string-array> + <string>1</string> + <null/> + <string>10000</string> + <string>100000</string> + <string>20</string> + <string>Job</string> + <string>2000</string> + <string>true</string> + <string>0</string> + <string>4</string> + </string-array> + <string-array> + <string>2</string> + <null/> + <string>100001</string> + <string>130000</string> + <string>20</string> + <string>Job</string> + <string>3000</string> + <string>true</string> + <string>10</string> + <string>6</string> + </string-array> + </data> + <descriptionWidth>25</descriptionWidth> + <groupField>income</groupField> +</decision-table> + + + + + + mic + + + + + + false + + + gdst + + + mic + + + 2008-10-01T13:46:07.232+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Pricing loans + + + + + + 9 + + + fc0ade55-1a96-4eb6-9d00-104630d6f2c3 + + + 2010-06-01T01:52:52.417+08:00 + + + admin + + + true + + + fc0ade55-1a96-4eb6-9d00-104630d6f2c3 + + + 96c80b78-a035-40c8-a899-935d7849c3f2 + + + + + drools:assetNodeType + + + 1a5351d7-db08-4901-baaf-7e0379b49173 + + + false + + + 96f4f6c2-01f9-445f-b773-6a7c5f77fa0b + + + + + + <scenario> + <maxRuleFirings>100000</maxRuleFirings> + <globals/> + <fixtures> + <fact-data> + <type>IncomeSource</type> + <name>income</name> + <fieldData> + <field-data> + <name>type</name> + <value>Job</value> + </field-data> + <field-data> + <name>amount</name> + <value>65000</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>LoanApplication</type> + <name>application</name> + <fieldData> + <field-data> + <name>amount</name> + <value>25000</value> + </field-data> + <field-data> + <name>deposit</name> + <value>1500</value> + </field-data> + <field-data> + <name>lengthYears</name> + <value>20</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>0</executionTimeResult> + <numberOfRulesFired>1</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>true</expected> + <actualResult></actualResult> + <successResult>true</successResult> + <explanation>[application] field [approved] was [true].</explanation> + <operator>==</operator> + </expect-field> + <expect-field> + <fieldName>insuranceCost</fieldName> + <expected>0</expected> + <actualResult></actualResult> + <successResult>true</successResult> + <explanation>[application] field [insuranceCost] was [0].</explanation> + <operator>==</operator> + </expect-field> + <expect-field> + <fieldName>approvedRate</fieldName> + <expected>4</expected> + <successResult>true</successResult> + <explanation>[application] field [approvedRate] was [4].</explanation> + <operator>==</operator> + </expect-field> + </fieldValues> + <name>application</name> + <anonymous>false</anonymous> + </expect-fact> + </fixtures> + <lastRunResult>2008-10-01 13:46:20.746 EST</lastRunResult> + <rules/> + <inclusive>false</inclusive> +</scenario> + + + + + + mic + + + + + + false + + + scenario + + + mic + + + 2008-10-01T14:19:04.309+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Pricing low end + + + + + + 3 + + + 0b9e9d97-7019-426e-9d2b-24e0f9f33748 + + + 2010-06-01T01:52:52.433+08:00 + + + admin + + + true + + + 0b9e9d97-7019-426e-9d2b-24e0f9f33748 + + + b29caa59-3d3d-4aca-91b7-d4de7eaff4bf + + + + + drools:assetNodeType + + + 36ab299f-0f7f-4821-a2c2-c3f39fc389a4 + + + true + + + 0554b023-d7a5-4b63-83f8-2bee32424351 + + + Archived Item on Wed Oct 01 13:54:23 GMT+1000 2008 + + + salience -1 +when + app: LoanApplication(approved == null) +then + app.setApproved(false); + + + + + + mic + + + + + + false + + + drl + + + mic + + + 2008-10-01T13:54:23.662+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Unapprove by default + + + + + + 3 + + + 9fbddf68-59d4-43a2-97eb-e8bdc1d6dee7 + + + 2010-06-01T01:52:52.464+08:00 + + + admin + + + true + + + 9fbddf68-59d4-43a2-97eb-e8bdc1d6dee7 + + + e4817576-3bc9-4188-8435-15f037ce23b3 + + + + + drools:assetNodeType + + + efa760a9-df5e-49fc-b684-e5bad673bd17 + + + false + + + 0554b023-d7a5-4b63-83f8-2bee32424351 + + + Initial + + + when + #conditions +then + #actions + + + mic + + + + + + drl + + + 2008-10-02T11:23:51.322+10:00 + + + mortgages + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + Dummy rule + + + 6f320162-4749-4420-b161-49ca9638ed48 + + + 2010-06-01T01:52:52.464+08:00 + + + admin + + + true + + + 6f320162-4749-4420-b161-49ca9638ed48 + + + 02e234b6-85e4-4052-b261-2c46a8e90a88 + + + + + drools:assetNodeType + + + 75e84fc9-9555-42bd-8360-96b6b2003ef3 + + + false + + + + + + + W3doZW5dV2hlbiB0aGUgY3JlZGl0IHJhdGluZyBpcyB7cmF0aW5nOkVOVU06QXBwbGljYW50LmNyZWRpdFJhdGluZ30gPSBhcHBsaWNhbnQ6QXBwbGljYW50KGNyZWRpdFJhdGluZz09IntyYXRpbmd9IikNClt0aGVuXUFwcHJvdmUgdGhlIGxvYW4gPSBhcHBsaWNhbnQuc2V0QXBwcm92ZWQodHJ1ZSkNCg0KW3doZW5dV2hlbiB0aGUgYXBwbGljYW50IGRhdGVzIGlzIGFmdGVyIHtkb3M6REFURTpkZWZhdWx0fSA9IGFwcGxpY2FudDpBcHBsaWNhbnQoYXBwbGljYXRpb25EYXRlPiJ7ZG9zfSIpDQoNClt3aGVuXVdoZW4gdGhlIGFwcGxpY2FudCBhcHByb3ZhbCBpcyB7Ym9vbDpCT09MRUFOOmNoZWNrZWR9ID0gYXBwbGljYW50OkFwcGxpY2FudChhcHByb3ZlZD09e2Jvb2x9KQ0KDQpbd2hlbl1XaGVuIHRoZSBhZ2VzIGlzIGxlc3MgdGhhbiB7bnVtOjE/WzAtOV0/WzAtOV19ID0gYXBwbGljYW50OkFwcGxpY2FudChhZ2U8e251bX0p + + + + + + alan_parsons + + + + + + false + + + dsl + + + admin + + + 2008-10-22T15:01:37.661-05:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + ApplicantDsl + + + + + + 22 + + + 0308b960-d748-4fde-9fd4-ae77bfc173e1 + + + 2010-06-01T01:52:52.480+08:00 + + + admin + + + true + + + 0308b960-d748-4fde-9fd4-ae77bfc173e1 + + + 53b3a775-38c3-49c5-a36d-7e36d214a71c + + + + + drools:assetNodeType + + + 46a5c1a6-1c1f-4f56-a14b-6f4269fd93de + + + true + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + Archived Item on Tue Oct 21 11:34:26 CDT 2008 + + + <rule> + <name>CreditScoreApproval</name> + <modelVersion>1.0</modelVersion> + <attributes/> + <metadataList/> + <lhs/> + <rhs> + <dslSentence> + <sentence>Approve the loan</sentence> + </dslSentence> + </rhs> +</rule> + + + + + + alan_parsons + + + + + + false + + + brl + + + alan_parsons + + + 2008-10-21T11:34:26.546-05:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + CreditScoreApproval + + + + + + 2 + + + 378a8f89-c53d-4b73-897d-4ffee7e341c2 + + + 2010-06-01T01:52:52.511+08:00 + + + admin + + + true + + + 378a8f89-c53d-4b73-897d-4ffee7e341c2 + + + 445474fa-cbfe-4d7c-80fa-5d08810c1c21 + + + + + drools:assetNodeType + + + c8980346-0a46-4b46-9bb6-a73af9c5c9d4 + + + false + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + + + + <rule> + <name>CreditApproval</name> + <modelVersion>1.0</modelVersion> + <attributes/> + <metadataList/> + <lhs> + <dslSentence> + <sentence>When the credit rating is {OK:ENUM:Applicant.creditRating}</sentence> + </dslSentence> + </lhs> + <rhs> + <dslSentence> + <sentence>Approve the loan</sentence> + </dslSentence> + </rhs> +</rule> + + + + + + alan_parsons + + + + + + false + + + brl + + + alan_parsons + + + 2008-10-21T11:35:55.769-05:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + CreditApproval + + + + + + 1 + + + 1f65c334-a7dd-4a15-a4da-47e2c05c50c3 + + + 2010-06-01T01:52:52.526+08:00 + + + admin + + + true + + + 1f65c334-a7dd-4a15-a4da-47e2c05c50c3 + + + 68af0934-5397-47b6-a8c4-e138fb879f89 + + + + + drools:assetNodeType + + + fa3918c7-dcf8-45fd-8df5-b7578871ee98 + + + true + + + 0554b023-d7a5-4b63-83f8-2bee32424351 + + + Archived Item on :Wed Feb 25 11:52:09 GMT+1100 2009 + + + <rule> + <name>DateDslRule</name> + <modelVersion>1.0</modelVersion> + <attributes/> + <metadataList/> + <lhs> + <dslSentence> + <sentence>When the applicant dates is after {20-Oct-2008:DATE:d-M-y}</sentence> + </dslSentence> + </lhs> + <rhs/> +</rule> + + + + + + admin + + + + + + false + + + brl + + + alan_parsons + + + 2009-02-25T11:52:09.504+11:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + DateDslRule + + + + + + 4 + + + 453af344-b05b-413b-a5e2-84ca56503a69 + + + 2010-06-01T01:52:52.589+08:00 + + + admin + + + true + + + 453af344-b05b-413b-a5e2-84ca56503a69 + + + 2f569c3e-8d35-49d3-a5c9-913b9399f507 + + + + + drools:assetNodeType + + + e688d746-0d63-4707-9715-e8bede3e0fc0 + + + false + + + 0554b023-d7a5-4b63-83f8-2bee32424351 + + + + + + <rule> + <name>RegexDslRule</name> + <modelVersion>1.0</modelVersion> + <attributes/> + <metadataList/> + <lhs> + <dslSentence> + <sentence>When the ages is less than {57:1?[0-9]?[0-9]}</sentence> + </dslSentence> + </lhs> + <rhs/> +</rule> + + + + + + admin + + + + + + false + + + brl + + + admin + + + 2008-10-22T14:41:28.281-05:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + RegexDslRule + + + + + + 2 + + + 10a554ce-24d1-452d-b462-f1a35b8173b0 + + + 2010-06-01T01:52:52.636+08:00 + + + admin + + + true + + + 10a554ce-24d1-452d-b462-f1a35b8173b0 + + + 80659e57-0382-4ab5-9b0e-7441e0b40579 + + + + + drools:assetNodeType + + + 7f0bf1f0-1ea2-4456-b20c-94c1048f3143 + + + true + + + 359a278b-78e8-49c6-a562-a24d4b25419f + + + Archived Item on :Wed Feb 25 11:51:58 GMT+1100 2009 + + + <rule> + <name>DSLWithDate</name> + <modelVersion>1.0</modelVersion> + <attributes/> + <metadataList/> + <lhs> + <dslSentence> + <sentence>When the applicant dates is after {03-Feb-2009:DATE:d-M-y}</sentence> + </dslSentence> + </lhs> + <rhs/> +</rule> + + + + + + alan_parsons + + + + + + false + + + brl + + + alan_parsons + + + 2009-02-25T11:51:59.128+11:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + DSLWithDate + + + + + + 3 + + + 02a0ef63-b8f0-4ede-8fbf-b2c31d87d389 + + + 2010-06-01T01:52:52.667+08:00 + + + admin + + + true + + + 02a0ef63-b8f0-4ede-8fbf-b2c31d87d389 + + + f364fe49-8e70-4650-85e2-b41768b9f600 + + + + + + + drools:packageNodeType + + + e5645c2f-f79b-409a-a765-913fd054c9e2 + + + false + + + Initial + + + alan_parsons + + + the global area that holds sharable assets + + + package + + + alan_parsons + + + 2009-11-13T14:00:30.925+08:00 + + + globalArea + + + 1 + + + 76594a9e-d604-4d78-b8cb-d753e71f98aa + + + 2010-06-01T01:52:52.745+08:00 + + + admin + + + true + + + 76594a9e-d604-4d78-b8cb-d753e71f98aa + + + b19a2509-1d91-4173-b29b-c4fb15dda603 + + + + drools:versionableAssetFolder + + + d77d764b-4203-455c-a179-9192de317755 + + + b0dee2e4-2a44-43c3-883c-bab1e0338f97 + + + 2010-06-01T01:52:52.745+08:00 + + + admin + + + true + + + b0dee2e4-2a44-43c3-883c-bab1e0338f97 + + + b3ca2bca-8e6a-4940-82d5-e7750dd3c724 + + + + + + drools:packageNodeType + + + 8149adfa-b24a-4b6d-8a2f-2b84cb944bb9 + + + + + + + + + true + + + false + + + + + + mic + + + + + + + + + package + + + alan_parsons + + + 2009-12-15T16:27:06.545+08:00 + + + archivedExample + + + 5 + + + 68bdc8bb-c0e4-4888-919a-12f998cf8e0d + + + 2010-06-01T01:52:52.760+08:00 + + + admin + + + true + + + 68bdc8bb-c0e4-4888-919a-12f998cf8e0d + + + ee9466ad-4833-4c60-8235-a98bb6850dfc + + + + drools:versionableAssetFolder + + + 7c5b43cf-f580-4fdd-b3b8-84adc46941f4 + + + 252f1408-deda-49b5-a20c-13d70f261869 + + + 2010-06-01T01:52:52.760+08:00 + + + admin + + + true + + + 252f1408-deda-49b5-a20c-13d70f261869 + + + f2fa5f64-144a-4978-9058-a877b7829c07 + + + + drools:assetNodeType + + + c5aba078-814e-4ce9-8ee3-511633d7a209 + + + true + + + + + + + [when]The season is {var}=Season(name== "{var}") +[then]Print out the message "{var}"=System.err.println("{var}"); +[when]The supermodel ...=Supermodel() +[when]- name is "{var}"=name=="{var}" +[when]- is at least {x} years old=age >= {x} + + + + + + mic + + + + + + false + + + dsl + + + alan_parsons + + + 2009-12-15T16:27:06.576+08:00 + + + archivedExample + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + MyDSL + + + + + + 4 + + + 77893730-2f37-406c-b5b9-bb674d522100 + + + 2010-06-01T01:52:52.776+08:00 + + + admin + + + true + + + 77893730-2f37-406c-b5b9-bb674d522100 + + + 06ec3419-4543-4a16-8f7f-c44d7630a553 + + + + + drools:assetNodeType + + + b6f19a1c-fd9e-4158-a5f2-3291316fd352 + + + true + + + 359a278b-78e8-49c6-a562-a24d4b25419f + + + + + + when + The season is Summer + The supermodel ... + - name is "noel" + - is at least 21 years old +then + Print out the message "hey" + + + + + + mic + + + + + + false + + + dslr + + + alan_parsons + + + 2009-12-15T16:27:06.607+08:00 + + + archivedExample + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + A DSL rule + + + + + + 3 + + + a7484f75-41fd-406a-9dea-36ced3979023 + + + 2010-06-01T01:52:52.807+08:00 + + + admin + + + true + + + a7484f75-41fd-406a-9dea-36ced3979023 + + + b1039765-f740-43f9-ad98-6d7e2cbe6d5e + + + + + drools:assetNodeType + + + dfd09c64-d31a-4a6f-adbb-069f3cf1060e + + + true + + + 359a278b-78e8-49c6-a562-a24d4b25419f + + + + + + mic + + + + + + brl + + + alan_parsons + + + 2009-12-15T16:27:06.654+08:00 + + + archivedExample + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + another go + + + 1 + + + b9232528-40ea-41b0-b42e-88fbf295ba87 + + + 2010-06-01T01:52:52.823+08:00 + + + admin + + + true + + + b9232528-40ea-41b0-b42e-88fbf295ba87 + + + acd05f48-1842-41ca-abb3-dafcb6d06feb + + + + + drools:assetNodeType + + + 4b532c0d-3c5f-490f-9db9-01bbbe555148 + + + true + + + + + + + + + mic + + + + + + package + + + alan_parsons + + + 2009-12-15T16:27:06.701+08:00 + + + archivedExample + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + drools + + + 5 + + + 9bf62276-27f0-4d01-8957-188266f98999 + + + 2010-06-01T01:52:52.838+08:00 + + + admin + + + true + + + 9bf62276-27f0-4d01-8957-188266f98999 + + + 32ff8d59-4c65-4ada-9adf-f7fcec18c6e0 + + + + + + + + nt:folder + + + 2010-06-01T01:52:52.870+08:00 + + + admin + + + + nt:folder + + + 2010-06-01T01:52:52.870+08:00 + + + admin + + + + drools:packageNodeType + + + 6b104874-fadb-49a7-8619-05b188f3c154 + + + false + + + true + + + + + + rO0ABXNyABdvcmcuZHJvb2xzLnJ1bGUuUGFja2FnZQAAAAAAAAGQDAAAeHBzcgAmb3JnLmRyb29scy5ydWxlLkRpYWxlY3RSdW50aW1lUmVnaXN0cnkf4nrpqWIPIAwAAHhwc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAJ0AARqYXZhc3IAJm9yZy5kcm9vbHMucnVsZS5KYXZhRGlhbGVjdFJ1bnRpbWVEYXRhAAAAAAAAAZAMAAB4cHcEAAAABHQAH21vcnRnYWdlcy9Mb2FuQXBwbGljYXRpb24uY2xhc3N1cgACW0Ks8xf4BghU4AIAAHhwAAAH9cr+ur4AAAAwAGUBABltb3J0Z2FnZXMvTG9hbkFwcGxpY2F0aW9uBwABAQAQamF2YS9sYW5nL09iamVjdAcAAwEAFGphdmEvaW8vU2VyaWFsaXphYmxlBwAFAQAebW9ydGdhZ2VzLkxvYW5BcHBsaWNhdGlvbi5qYXZhAQAGYW1vdW50AQATTGphdmEvbGFuZy9JbnRlZ2VyOwEAB2RlcG9zaXQBAAhhcHByb3ZlZAEAE0xqYXZhL2xhbmcvQm9vbGVhbjsBAAxhcHByb3ZlZFJhdGUBAAtsZW5ndGhZZWFycwEAC2V4cGxhbmF0aW9uAQASTGphdmEvbGFuZy9TdHJpbmc7AQANaW5zdXJhbmNlQ29zdAEABjxpbml0PgEAAygpVgwAEgATCgAEABQBAAlnZXRBbW91bnQBABUoKUxqYXZhL2xhbmcvSW50ZWdlcjsMAAgACQkAAgAYAQAJc2V0QW1vdW50AQAWKExqYXZhL2xhbmcvSW50ZWdlcjspVgEACmdldERlcG9zaXQMAAoACQkAAgAdAQAKc2V0RGVwb3NpdAEAC2dldEFwcHJvdmVkAQAVKClMamF2YS9sYW5nL0Jvb2xlYW47DAALAAwJAAIAIgEAC3NldEFwcHJvdmVkAQAWKExqYXZhL2xhbmcvQm9vbGVhbjspVgEAD2dldEFwcHJvdmVkUmF0ZQwADQAJCQACACcBAA9zZXRBcHByb3ZlZFJhdGUBAA5nZXRMZW5ndGhZZWFycwwADgAJCQACACsBAA5zZXRMZW5ndGhZZWFycwEA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AAAwAEoBABNtb3J0Z2FnZXMvQXBwbGljYW50BwABAQAQamF2YS9sYW5nL09iamVjdAcAAwEAFGphdmEvaW8vU2VyaWFsaXphYmxlBwAFAQAYbW9ydGdhZ2VzLkFwcGxpY2FudC5qYXZhAQADYWdlAQATTGphdmEvbGFuZy9JbnRlZ2VyOwEADGNyZWRpdFJhdGluZwEAEkxqYXZhL2xhbmcvU3RyaW5nOwEABG5hbWUBAAY8aW5pdD4BAAMoKVYMAA0ADgoABAAPAQAGZ2V0QWdlAQAVKClMamF2YS9sYW5nL0ludGVnZXI7DAAIAAkJAAIAEwEABnNldEFnZQEAFihMamF2YS9sYW5nL0ludGVnZXI7KVYBAA9nZXRDcmVkaXRSYXRpbmcBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwwACgALCQACABkBAA9zZXRDcmVkaXRSYXRpbmcBABUoTGphdmEvbGFuZy9TdHJpbmc7KVYBAAdnZXROYW1lDAAMAAsJAAIAHgEAB3NldE5hbWUBAAZlcXVhbHMBABUoTGphdmEvbGFuZy9PYmplY3Q7KVoBAAhnZXRDbGFzcwEAEygpTGphdmEvbGFuZy9DbGFzczsMACMAJAoABAAlAQAIaGFzaENvZGUBAAMoKUkBAAh0b1N0cmluZwEAF2phdmEvbGFuZy9TdHJpbmdCdWlsZGVyBwAqCgArAA8KAAIAJQEAD2phdmEvbGFuZy9DbGFzcwcALgEADWdldFNpbXBsZU5hbWUMADAAGAoALwAxAQAGYXBwZW5kAQAtKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZ0J1aWxkZXI7DAAzADQKACsANQEAAiggCAA3CAAIAQABPQgAOgEALShMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwwAMwA8CgArAD0BAAIsIAgAPwgACggADAEAAiApCABDDAApABgKACsARQEABENvZGUBAAhTdGFja01hcAEAClNvdXJjZUZpbGUAIQACAAQAAQAGAAMAAgAIAAkAAAACAAoACwAAAAIADAALAAAACgABAA0ADgABAEcAAAARAAEAAQAAAAUqtwAQsQAAAAAAAQARABIAAQBHAAAAEQABAAEAAAAFKrQAFLAAAAAAAAEAFQAWAAEARwAAABIAAgACAAAABiortQAUsQAAAAAAAQAXABgAAQBHAAAAEQABAAEAAAAFKrQAGrAAAAAAAAEAGwAcAAEARwAAABIAAgACAAAABiortQAasQAAAAAAAQAdABgAAQBHAAAAEQABAAEAAAAFKrQAH7AAAAAAAAEAIAAcAAEARwAAABIAAgACAAAABiortQAfsQAAAAAAAQAhACIAAQBHAAAAWQACAAMAAAAhKiumAAUErCvHAAUDrCq2ACYrtgAmpQAFA6wrwAACTQOsAAAAAQBIAAAAJgADAAcAAgcAAgcABAAAAA0AAgcAAgcABAAAABoAAgcAAgcABAAAAAEAJwAoAAEARwAAABAAAQACAAAABAQ8G6wAAAAAAAEAKQAYAAEARwAAAGoAAgACAAAAXrsAK1m3ACxMKyq2AC22ADK2ADYSOLYANhI5tgA2Eju2ADYqtAAUtgA+EkC2ADYSQbYANhI7tgA2KrQAGrYAPhJAtgA2EkK2ADYSO7YANiq0AB+2AD4SRLYANrYARrAAAAAAAAEASQAAAAIAB3QAHG1vcnRnYWdlcy9JbmNvbWVTb3VyY2UuY2xhc3N1cQB+AAoAAASdyv66vgAAADAARAEAFm1vcnRnYWdlcy9JbmNvbWVTb3VyY2UHAAEBABBqYXZhL2xhbmcvT2JqZWN0BwADAQAUamF2YS9pby9TZXJpYWxpemFibGUHAAUBABttb3J0Z2FnZXMuSW5jb21lU291cmNlLmphdmEBAAZhbW91bnQBABNMamF2YS9sYW5nL0ludGVnZXI7AQAEdHlwZQEAEkxqYXZhL2xhbmcvU3RyaW5nOwEABjxpbml0PgEAAygpVgwADAANCgAEAA4BAAlnZXRBbW91bnQBABUoKUxqYXZhL2xhbmcvSW50ZWdlcjsMAAgACQkAAgASAQAJc2V0QW1vdW50AQAWKExqYXZhL2xhbmcvSW50ZWdlcjspVgEAB2dldFR5cGUBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwwACgALCQACABgBAAdzZXRUeXBlAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWAQAGZXF1YWxzAQAVKExqYXZhL2xhbmcvT2JqZWN0OylaAQAIZ2V0Q2xhc3MBABMoKUxqYXZhL2xhbmcvQ2xhc3M7DAAeAB8KAAQAIAEACGhhc2hDb2RlAQADKClJAQAIdG9TdHJpbmcBABdqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcgcAJQoAJgAOCgACACABAA9qYXZhL2xhbmcvQ2xhc3MHACkBAA1nZXRTaW1wbGVOYW1lDAArABcKACoALAEABmFwcGVuZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwwALgAvCgAmADABAAIoIAgAMggACAEAAT0IADUBAC0oTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsMAC4ANwoAJgA4AQACLCAIADoIAAoBAAIgKQgAPQwAJAAXCgAmAD8BAARDb2RlAQAIU3RhY2tNYXABAApTb3VyY2VGaWxlACEAAgAEAAEABgACAAIACAAJAAAAAgAKAAsAAAAIAAEADAANAAEAQQAAABEAAQABAAAABSq3AA+xAAAAAAABABAAEQABAEEAAAARAAEAAQAAAAUqtAATsAAAAAAAAQAUABUAAQBBAAAAEgACAAIAAAAGKiu1ABOxAAAAAAABABYAFwABAEEAAAARAAEAAQAAAAUqtAAZsAAAAAAAAQAaABsAAQBBAAAAEgACAAIAAAAGKiu1ABmxAAAAAAABABwAHQABAEEAAABZAAIAAwAAACEqK6YABQSsK8cABQOsKrYAISu2ACGlAAUDrCvAAAJNA6wAAAABAEIAAAAmAAMABwACBwACBwAEAAAADQACBwACBwAEAAAAGgACBwACBwAEAAAAAQAiACMAAQBBAAAAEAABAAIAAAAEBDwbrAAAAAAAAQAkABcAAQBBAAAAVAACAAIAAABIuwAmWbcAJ0wrKrYAKLYALbYAMRIztgAxEjS2ADESNrYAMSq0ABO2ADkSO7YAMRI8tgAxEja2ADEqtAAZtgA5Ej62ADG2AECwAAAAAAABAEMAAAACAAd3BAAAAAB4dAAEbXZlbHNyACZvcmcuZHJvb2xzLnJ1bGUuTVZFTERpYWxlY3RSdW50aW1lRGF0YeWjZyTO2TkODAAAeHBzcgAZamF2YS51dGlsLklkZW50aXR5SGFzaE1hcHGiZQEz8umAAwABSQAEc2l6ZXhwAAAAB3cEAAAAB3NyABRvcmcuZHJvb2xzLnJ1bGUuUnVsZQAAAAAAAAGQDAAAeHB0AAltb3J0Z2FnZXN0ABNSb3cgMiBQcmljaW5nIGxvYW5zcHNyAB9vcmcuZHJvb2xzLmJhc2UuU2FsaWVuY2VJbnRlZ2VyAAAAAAAAAZAMAAB4cHcEAAAAAHh3AQFwcHNyABxvcmcuZHJvb2xzLnJ1bGUuR3JvdXBFbGVtZW50AAAAAAAAAf4MAAB4cgAib3JnLmRyb29scy5ydWxlLkNvbmRpdGlvbmFsRWxlbWVudKYTM9lW0l/mDAAAeHB+cgAhb3JnLmRyb29scy5ydWxlLkdyb3VwRWxlbWVudCRUeXBlAAAAAAAAAAASAAB4cgAOamF2YS5sYW5nLkVudW0AAAAAAAAAABIAAHhwdAADQU5Ec3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAJ3BAAAAApzcgAXb3JnLmRyb29scy5ydWxlLlBhdHRlcm4AAAAAAAABkAwAAHhwc3IAH29yZy5kcm9vbHMuYmFzZS5DbGFzc09iamVjdFR5cGUAAAAAAAABkAwAAHhwdxwAGW1vcnRnYWdlcy5Mb2FuQXBwbGljYXRpb24AeHNxAH4AJAAAAAR3BAAAAARzcgAhb3JnLmRyb29scy5ydWxlLkxpdGVyYWxDb25zdHJhaW50AAAAAAAAAZAMAAB4cHNyACBvcmcuZHJvb2xzLmJhc2UuQ2xhc3NGaWVsZFJlYWRlcgAAAAAAAAGQDAAAeHB0ABltb3J0Z2FnZXMuTG9hbkFwcGxpY2F0aW9udAAGYW1vdW50eHNyACJvcmcuZHJvb2xzLnJ1bGUuTGl0ZXJhbFJlc3RyaWN0aW9uAAAAAAAAAZAMAAB4cHNyACVvcmcuZHJvb2xzLmJhc2UuZmllbGQuT2JqZWN0RmllbGRJbXBsAAAAAAAAAZAMAAB4cHcBAHBwdAAGMTAwMDAxeHNyAFFvcmcuZHJvb2xzLmJhc2UuZXZhbHVhdG9ycy5Db21wYXJhYmxlRXZhbHVhdG9yc0RlZmluaXRpb24kSW50ZWdlckdyZWF0ZXJFdmFsdWF0b3IAAAAAAAABkAwAAHhyAB1vcmcuZHJvb2xzLmJhc2UuQmFzZUV2YWx1YXRvcvKXsVKoPFv8DAAAeHBzcgAjb3JnLmRyb29scy5iYXNlLmV2YWx1YXRvcnMuT3BlcmF0b3IAAAAAAAABkAwAAHhwdAABPncBAHhzcgAZb3JnLmRyb29scy5iYXNlLlZhbHVlVHlwZQAAAAAAAAGQDAAAeHB0AANpbnR2cgADaW50AAAAAAAAAAAAAAB4cHcEAAAABHh4cQB+AC54eHNxAH4AK3EAfgAuc3EAfgAxc3EAfgAzdwEAcHB0AAYxMzAwMDB4c3IAVW9yZy5kcm9vbHMuYmFzZS5ldmFsdWF0b3JzLkNvbXBhcmFibGVFdmFsdWF0b3JzRGVmaW5pdGlvbiRJbnRlZ2VyTGVzc09yRXF1YWxFdmFsdWF0b3IAAAAAAAABkAwAAHhxAH4AN3NxAH4AOXQAAjw9dwEAeHEAfgA9eHEAfgAueHhzcQB+ACtzcQB+AC1xAH4AL3QAC2xlbmd0aFllYXJzeHNxAH4AMXNxAH4AM3cBAHBwdAACMjB4c3IATW9yZy5kcm9vbHMuYmFzZS5ldmFsdWF0b3JzLkVxdWFsaXR5RXZhbHVhdG9yc0RlZmluaXRpb24kSW50ZWdlckVxdWFsRXZhbHVhdG9yAAAAAAAAAZAMAAB4cQB+ADdzcQB+ADl0AAI9PXcBAHhxAH4APXhxAH4ASnh4c3EAfgArc3EAfgAtcQB+AC90AAdkZXBvc2l0eHNxAH4AMXNxAH4AM3cBAHBwdAAEMzAwMHhzcgBOb3JnLmRyb29scy5iYXNlLmV2YWx1YXRvcnMuQ29tcGFyYWJsZUV2YWx1YXRvcnNEZWZpbml0aW9uJEludGVnZXJMZXNzRXZhbHVhdG9yAAAAAAAAAZAMAAB4cQB+ADdzcQB+ADl0AAE8dwEAeHEAfgA9eHEAfgBUeHh4c3IAG29yZy5kcm9vbHMucnVsZS5EZWNsYXJhdGlvbgAAAAAAAAGQDAAAeHB0AAthcHBsaWNhdGlvbnNyAB9vcmcuZHJvb2xzLnNwaS5QYXR0ZXJuRXh0cmFjdG9yAAAAAAAAAZAMAAB4cHEAfgApeHEAfgAndwEAeHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgBfcQB+AF54cHcEAAAAAHB3BAAAAAB4c3EAfgAmc3EAfgAodxkAFm1vcnRnYWdlcy5JbmNvbWVTb3VyY2UAeHNxAH4AJAAAAAF3BAAAAAFzcQB+ACtzcQB+AC10ABZtb3J0Z2FnZXMuSW5jb21lU291cmNldAAEdHlwZXhzcQB+ADFzcQB+ADN3AQBwcHQAA0pvYnhzcgBMb3JnLmRyb29scy5iYXNlLmV2YWx1YXRvcnMuRXF1YWxpdHlFdmFsdWF0b3JzRGVmaW5pdGlvbiRTdHJpbmdFcXVhbEV2YWx1YXRvcgAAAAAAAAGQDAAAeHEAfgA3cQB+AFFzcQB+ADx0AAZTdHJpbmd2cgAQamF2YS5sYW5nLlN0cmluZ6DwpDh6O7NCAgAAeHB3BAAAAAd4eHEAfgBneHh4c3EAfgBddAAGaW5jb21lc3EAfgBgcQB+AGR4cQB+AGN3AQB4c3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB+AHRxAH4Ac3hwdwQAAAABcHcEAAAAAHh4eHQABG12ZWx0AARNQUlOc3EAfgAEP0AAAAAAAAx3CAAAABAAAAAAeHNyACRvcmcuZHJvb2xzLmJhc2UubXZlbC5NVkVMQ29uc2VxdWVuY2UAAAAAAAABkAwAAHhwc3IAKG9yZy5kcm9vbHMuYmFzZS5tdmVsLk1WRUxDb21waWxhdGlvblVuaXQvHWbbDALiswwAAHhwd5QAJG1vcnRnYWdlcy5SdWxlX1Jvd18yX1ByaWNpbmdfbG9hbnNfMABsCQlhcHBsaWNhdGlvbi5zZXRBcHByb3ZlZCggdHJ1ZSApOwoJCWFwcGxpY2F0aW9uLnNldEluc3VyYW5jZUNvc3QoIDEwICk7CgkJYXBwbGljYXRpb24uc2V0QXBwcm92ZWRSYXRlKCA2ICk7dXIAE1tMamF2YS5sYW5nLlN0cmluZzut0lbn6R17RwIAAHhwAAAAAXQACW1vcnRnYWdlc3VxAH4AfgAAAAB1cQB+AH4AAAAAdXEAfgB+AAAAAHVxAH4AfgAAAAB1cgAeW0xvcmcuZHJvb2xzLnJ1bGUuRGVjbGFyYXRpb2479afPCzRoKeMCAAB4cAAAAAFxAH4AXnB1cQB+AH4AAAAAdXEAfgB+AAAAAXEAfgBfdXEAfgB+AAAAAXEAfgAvcHcFAAAABAF4dwYABG12ZWx4cHB3CgAAAAAAAAAHAABwcHcDAAABcHBzcgAeb3JnLmRyb29scy5iYXNlLkVuYWJsZWRCb29sZWFuAAAAAAAAAZAMAAB4cHcBAXhweHEAfgB7c3EAfgAXcQB+ABl0ABNSb3cgMyBQ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X2xvYW5zXzBzcQB+AY9xAH4BmXcIAAAAEwAAAAB4dAAkbW9ydGdhZ2VzLlJ1bGVfUm93XzNfUHJpY2luZ19sb2Fuc18wc3EAfgGPcQB+AZt3CAAAAAcAAAAAeHh4c3EAfgAEP0AAAAAAAAx3CAAAABAAAAAEdAAKQmFua3J1cHRjeXNyAB9vcmcuZHJvb2xzLnJ1bGUuVHlwZURlY2xhcmF0aW9u5qIZN48ZfxQMAAB4cHEAfgGefnIAJG9yZy5kcm9vbHMucnVsZS5UeXBlRGVjbGFyYXRpb24kUm9sZQAAAAAAAAAAEgAAeHEAfgAhdAAERkFDVH5yACZvcmcuZHJvb2xzLnJ1bGUuVHlwZURlY2xhcmF0aW9uJEZvcm1hdAAAAAAAAAAAEgAAeHEAfgAhdAAEUE9KT3BwcQB+AS1wc3IAJG9yZy5kcm9vbHMuZmFjdG1vZGVsLkNsYXNzRGVmaW5pdGlvbkDJP7TT/aNYDAAAeHB0ABRtb3J0Z2FnZXMuQmFua3J1cHRjeXQAEGphdmEubGFuZy5PYmplY3R1cQB+AH4AAAABdAAUamF2YS5pby5TZXJpYWxpemFibGVzcgAXamF2YS51dGlsLkxpbmtlZEhhc2hNYXA0wE5cEGzA+wIAAVoAC2FjY2Vzc09yZGVyeHEAfgAEP0AAAAAAAAx3CAAAABAAAAACcQB+ATRzcgAkb3JnLmRyb29scy5mYWN0bW9kZWwuRmllbGREZWZpbml0aW9uiTflX6vzvF0MAAB4cHEAfgE0dAARamF2YS5sYW5nLkludGVnZXJ3AQBzcgAib3JnLmRyb29scy5iYXNlLkNsYXNzRmllbGRBY2Nlc3NvcgAAAAAAAAGQDAAAeHBxAH4BM3NyACBvcmcuZHJvb2xzLmJhc2UuQ2xhc3NGaWVsZFdyaXRlcgAAAAAAAAGQDAAAeHBxAH4BLXEAfgE0eHh4cQB+AS5zcQB+Aa9xAH4BLnEAfgGxdwEAc3EAfgGycQB+ASxzcQB+AbRxAH4BLXEAfgEueHh4eAB4cHBwdwkAAAAAAAAAAAB4dAAMSW5jb21lU291cmNlc3EAfgGfcQB+AblxAH4BonEAfgGlcHBxAH4AaHBzcQB+Aad0ABZtb3J0Z2FnZXMuSW5jb21lU291cmNlcQB+Aap1cQB+AH4AAAABcQB+AaxzcQB+Aa0/QAAAAAAADHcIAAAAEAAAAAJ0AAZhbW91bnRzcQB+Aa9xAH4Bv3EAfgGxdwEAc3EAfgGyc3EAfgAtcQB+AGhxAH4Bv3hzcQB+AbRxAH4AaHEAfgG/eHh4cQB+AGlzcQB+Aa9xAH4AaXQAEGphdmEubGFuZy5TdHJpbmd3AQBzcQB+AbJxAH4AZ3NxAH4BtHEAfgBocQB+AGl4eHh4AHhwcHB3CQAAAAAAAAAAAHh0AAlBcHBsaWNhbnRzcQB+AZ9xAH4ByHEAfgGicQB+AaVwcHEAfgD/cHNxAH4Bp3QAE21vcnRnYWdlcy5BcHBsaWNhbnRxAH4BqnVxAH4AfgAAAAFxAH4BrHNxAH4BrT9AAAAAAAAMdwgAAAAQAAAAA3EAfgEAc3EAfgGvcQB+AQBxAH4BsXcBAHNxAH4BsnEAfgD+c3EAfgG0cQB+AP9xAH4BAHh4eHEAfgF2c3EAfgGvcQB+AXZxAH4BxXcBAHNxAH4BsnEAfgF1c3EAfgG0cQB+AP9xAH4Bdnh4eHQABG5hbWVzcQB+Aa9xAH4B1HEAfgHFdwEAc3EAfgGyc3EAfgAtcQB+AP9xAH4B1HhzcQB+AbRxAH4A/3EAfgHUeHh4eAB4cHBwdwkAAAAAAAAAAAB4dAAPTG9hbkFwcGxpY2F0aW9uc3EAfgGfcQB+AdlxAH4BonEAfgGlcHBxAH4AL3BzcQB+Aad0ABltb3J0Z2FnZXMuTG9hbkFwcGxpY2F0aW9ucQB+Aap1cQB+AH4AAAABcQB+AaxzcQB+Aa0/QAAAAAAADHcIAAAAEAAAAAdxAH4AMHNxAH4Br3EAfgAwcQB+AbF3AQBzcQB+AbJxAH4ALnNxAH4BtHEAfgAvcQB+ADB4eHhxAH4AVXNxAH4Br3EAfgBVcQB+AbF3AQBzcQB+AbJxAH4AVHNxAH4BtHEAfgAvcQB+AFV4eHh0AAhhcHByb3ZlZHNxAH4Br3EAfgHldAARamF2YS5sYW5nLkJvb2xlYW53AQBzcQB+AbJzcQB+AC1xAH4AL3EAfgHleHNxAH4BtHEAfgAvcQB+AeV4eHh0AAxhcHByb3ZlZFJhdGVzcQB+Aa9xAH4B63EAfgGxdwEAc3EAfgGyc3EAfgAtcQB+AC9xAH4B63hzcQB+AbRxAH4AL3EAfgHreHh4cQB+AEtzcQB+Aa9xAH4AS3EAfgGxdwEAc3EAfgGycQB+AEpzcQB+AbRxAH4AL3EAfgBLeHh4dAALZXhwbGFuYXRpb25zcQB+Aa9xAH4B83EAfgHFdwEAc3EAfgGyc3EAfgAtcQB+AC9xAH4B83hzcQB+AbRxAH4AL3EAfgHzeHh4dAANaW5zdXJhbmNlQ29zdHNxAH4Br3EAfgH4cQB+AbF3AQBzcQB+AbJzcQB+AC1xAH4AL3EAfgH4eHNxAH4BtHEAfgAvcQB+Afh4eHh4AHhwcHB3CQAAAAAAAAAAAHh4cQB+ABlzcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAF0AAttb3J0Z2FnZXMuKnNyACFvcmcuZHJvb2xzLnJ1bGUuSW1wb3J0RGVjbGFyYXRpb25Y9QI+83vcJgwAAHhwcQB+Af54eHNyAB5qYXZhLnV0aWwuQ29sbGVjdGlvbnMkRW1wdHlTZXQV9XIdtAPLKAIAAHhwc3IAHmphdmEudXRpbC5Db2xsZWN0aW9ucyRFbXB0eU1hcFk2FIVa3OfQAgAAeHBxAH4CBHEAfgIEcQB+AgR3AQFzcQB+Aa0/QAAAAAAADHcIAAAAEAAAAAdxAH4A73EAfgDucQB+ARJxAH4BEXEAfgFlcQB+AWRxAH4BSXEAfgFIcQB+AI1xAH4AjHEAfgC+cQB+AL1xAH4AGnEAfgAYeABzcgAnb3JnLmRyb29scy5iYXNlLkNsYXNzRmllbGRBY2Nlc3NvclN0b3JlAAAAAAAAAZAMAAB4cHNxAH4ABD9AAAAAAAAYdwgAAAAgAAAAEnNyABtvcmcuZHJvb2xzLmJhc2UuQWNjZXNzb3JLZXkAAAAAAAABkAwAAHhwdxsAGW1vcnRnYWdlcy5Mb2FuQXBwbGljYXRpb25wdwQNaOZkcHhzcgBCb3JnLmRyb29scy5iYXNlLkNsYXNzRmllbGRBY2Nlc3NvclN0b3JlJENsYXNzT2JqZWN0VHlwZUxvb2t1cEVudHJ5EW25zm0BEsgMAAB4cgA3b3JnLmRyb29scy5iYXNlLkNsYXNzRmllbGRBY2Nlc3NvclN0b3JlJEJhc2VMb29rdXBFbnRyefpA5AfKJNg0DAAAeHBzcQB+ABUAAAAOdwQAAAAOcQB+AWlwcQB+ACdwcQB+AWxwcQB+ARZwcQB+AVBwcQB+ANVwcQB+AMFwcQB+APhwcQB+ARlwcQB+AU1wcQB+AJBwcQB+APNwcQB+AGFwcQB+AKRweHEAfgApeHNxAH4CCXcVABNtb3J0Z2FnZXMuQXBwbGljYW50cQB+AdR3BPKl4QVweHNyADhvcmcuZHJvb2xzLmJhc2UuQ2xhc3NGaWVsZEFjY2Vzc29yU3RvcmUkRmllbGRMb29rdXBFbnRyeXz4xX5L5QIfDAAAeHEAfgIMc3EAfgAVAAAAAXcEAAAAAXEAfgHWcHhxAH4B13EAfgHYeHNxAH4CCXcWABRtb3J0Z2FnZXMuQmFua3J1cHRjeXEAfgE0dwSGsIlWcHhzcQB+AhBzcQB+ABUAAAADdwQAAAADcQB+AbNwcQB+ATVwcQB+ATJweHEAfgEzcQB+AbV4c3EAfgIJdxsAGW1vcnRnYWdlcy5Mb2FuQXBwbGljYXRpb25xAH4B5XcEnCI7V3B4c3EAfgIQc3EAfgAVAAAAAXcEAAAAAXEAfgHocHhxAH4B6XEAfgHqeHNxAH4CCXcYABZtb3J0Z2FnZXMuSW5jb21lU291cmNlcQB+Ab93BMB3EEhweHNxAH4CEHNxAH4AFQAAAAF3BAAAAAFxAH4BwXB4cQB+AcJxAH4Bw3hzcQB+Agl3GwAZbW9ydGdhZ2VzLkxvYW5BcHBsaWNhdGlvbnEAfgHrdwRx3V3XcHhzcQB+AhBzcQB+ABUAAAABdwQAAAABcQB+Ae1weHEAfgHucQB+Ae94c3EAfgIJdxsAGW1vcnRnYWdlcy5Mb2FuQXBwbGljYXRpb25xAH4B83cEEr7ANXB4c3EAfgIQc3EAfgAVAAAAAXcEAAAAAXEAfgH1cHhxAH4B9nEAfgH3eHNxAH4CCXcWABRtb3J0Z2FnZXMuQmFua3J1cHRjeXB3BM8LnatweHNxAH4CC3NxAH4AFQAAAAF3BAAAAAFxAH4BH3B4cQB+ASB4c3EAfgIJdxUAE21vcnRnYWdlcy5BcHBsaWNhbnRwdwTruCVmcHhzcQB+AgtzcQB+ABUAAAADdwQAAAADcQB+APpwcQB+AXpwcQB+AXJweHEAfgD7eHNxAH4CCXcbABltb3J0Z2FnZXMuTG9hbkFwcGxpY2F0aW9ucQB+ADB3BNmqhdZweHNxAH4CEHNxAH4AFQAAAA13BAAAAA1xAH4AQXBxAH4AxHBxAH4AknBxAH4AQnBxAH4Ak3BxAH4Ax3BxAH4Aw3BxAH4B4HBxAH4Al3BxAH4AlnBxAH4AyHBxAH4ALHBxAH4AMnB4cQB+AC5xAH4B4XhzcQB+Agl3FgAUbW9ydGdhZ2VzLkJhbmtydXB0Y3lxAH4BLncEzN3jMHB4c3EAfgIQc3EAfgAVAAAAA3cEAAAAA3EAfgG3cHEAfgErcHEAfgEvcHhxAH4BLHEAfgG4eHNxAH4CCXcYABZtb3J0Z2FnZXMuSW5jb21lU291cmNlcQB+AGl3BPuCraZweHNxAH4CEHNxAH4AFQAAAAd3BAAAAAdxAH4AqXBxAH4AZnBxAH4A2nBxAH4A2XBxAH4AqHBxAH4AanBxAH4BxnB4cQB+AGdxAH4Bx3hzcQB+Agl3GwAZbW9ydGdhZ2VzLkxvYW5BcHBsaWNhdGlvbnEAfgH4dwRuXLZHcHhzcQB+AhBzcQB+ABUAAAABdwQAAAABcQB+AfpweHEAfgH7cQB+Afx4c3EAfgIJdxUAE21vcnRnYWdlcy5BcHBsaWNhbnRxAH4BAHcE7JexEXB4c3EAfgIQc3EAfgAVAAAAA3cEAAAAA3EAfgEBcHEAfgD9cHEAfgHPcHhxAH4A/nEAfgHQeHNxAH4CCXcbABltb3J0Z2FnZXMuTG9hbkFwcGxpY2F0aW9ucQB+AEt3BNeLKJ5weHNxAH4CEHNxAH4AFQAAAAd3BAAAAAdxAH4B8XBxAH4AmnBxAH4AzHBxAH4ATHBxAH4Ay3BxAH4ASXBxAH4Am3B4cQB+AEpxAH4B8nhzcQB+Agl3GAAWbW9ydGdhZ2VzLkluY29tZVNvdXJjZXB3BPQ1cNZweHNxAH4CC3NxAH4AFQAAAAd3BAAAAAdxAH4ApnBxAH4BVnBxAH4ArnBxAH4AY3BxAH4A33BxAH4A13BxAH4AdXB4cQB+AGR4c3EAfgIJdxUAE21vcnRnYWdlcy5BcHBsaWNhbnRxAH4BdncEQQ7e+nB4c3EAfgIQc3EAfgAVAAAABXcEAAAABXEAfgF3cHEAfgF8cHEAfgF9cHEAfgF0cHEAfgHScHhxAH4BdXEAfgHTeHNxAH4CCXcbABltb3J0Z2FnZXMuTG9hbkFwcGxpY2F0aW9ucQB+AFV3BEZWiFBweHNxAH4CEHNxAH4AFQAAAAd3BAAAAAdxAH4AU3BxAH4An3BxAH4A0HBxAH4AnnBxAH4B43BxAH4Az3BxAH4AVnB4cQB+AFRxAH4B5Hh4eHg= + + + mic + + + Mortgages that aren't stupid + + + + + + package + + + mic + + + 2010-06-01T01:53:08.548+08:00 + + + mortgages + + + 2 + + + e8d0bc8e-c02d-4dfa-bc89-10934a78f3c2 + + + 2010-06-01T01:52:52.870+08:00 + + + admin + + + true + + + e8d0bc8e-c02d-4dfa-bc89-10934a78f3c2 + + + 291d9d0d-86f7-48b4-9cf6-01d92eb085fa + + + + drools:versionableAssetFolder + + + 786e448b-2979-4310-ba34-bf229ae77ba1 + + + 5b2d5128-e1b8-4fe7-96b0-639a36857e34 + + + 2010-06-01T01:52:52.870+08:00 + + + admin + + + true + + + 5b2d5128-e1b8-4fe7-96b0-639a36857e34 + + + 6039ac3c-3a11-457f-9c30-022019fd4c12 + + + + drools:assetNodeType + + + 727159c3-057d-4793-b5e8-c95c49268a09 + + + false + + + + + + + + + mic + + + + + + package + + + mic + + + 2008-09-30T11:36:29.962+10:00 + + + mortgages + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + drools + + + 1 + + + f54ac9d2-78af-4e2b-b566-8ad722dfd6c2 + + + 2010-06-01T01:52:52.885+08:00 + + + admin + + + true + + + f54ac9d2-78af-4e2b-b566-8ad722dfd6c2 + + + 0a04ae95-9d60-4a5f-aff4-0b06981e4d75 + + + + + drools:assetNodeType + + + 8da7189a-f4a7-46d6-a940-661bcbfd6461 + + + false + + + + + + + declare LoanApplication + amount: Integer + approved: Boolean + deposit: Integer + approvedRate: Integer + lengthYears: Integer + explanation: String + insuranceCost: Integer +end + +declare Applicant + age: Integer + name: String + creditRating: String +end + +declare IncomeSource + amount: Integer + type: String +end + +declare Bankruptcy + amountOwed: Integer + yearOfOccurrence: Integer +end + + + + + + mic + + + + + + false + + + model.drl + + + mic + + + 2008-10-01T09:57:56.246+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + MortgageModel + + + + + + 4 + + + 364f3003-03d5-4e97-ab54-2a921e84e35d + + + 2010-06-01T01:52:52.885+08:00 + + + admin + + + true + + + 364f3003-03d5-4e97-ab54-2a921e84e35d + + + 20960dcb-493b-4ad8-8d04-5924661d854d + + + + + drools:assetNodeType + + + fe5d575b-1b07-4dd3-a818-21768cfee918 + + + false + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + + + + <rule> + <name>Underage</name> + <modelVersion>1.0</modelVersion> + <attributes> + <attribute> + <attributeName>salience</attributeName> + <value>10</value> + </attribute> + </attributes> + <lhs> + <fact> + <factType>LoanApplication</factType> + <boundName>application</boundName> + </fact> + <fact> + <constraintList> + <constraints> + <fieldConstraint> + <value>21</value> + <constraintValueType>1</constraintValueType> + <fieldName>age</fieldName> + <operator>&lt;</operator> + <fieldType>Numeric</fieldType> + </fieldConstraint> + </constraints> + </constraintList> + <factType>Applicant</factType> + </fact> + </lhs> + <rhs> + <setField> + <fieldValues> + <fieldValue> + <field>approved</field> + <value>false</value> + <type>Boolean</type> + </fieldValue> + <fieldValue> + <field>explanation</field> + <value>Underage</value> + <type>String</type> + </fieldValue> + </fieldValues> + <variable>application</variable> + </setField> + <retract> + <variableName>application</variableName> + </retract> + </rhs> +</rule> + + + + + + mic + + + + + + false + + + brl + + + mic + + + 2008-10-01T12:54:34.716+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Underage + + + + + + 2 + + + 519d8e28-def4-4fbc-88bc-c6ccd6eea1f0 + + + 2010-06-01T01:52:52.901+08:00 + + + admin + + + true + + + 519d8e28-def4-4fbc-88bc-c6ccd6eea1f0 + + + eb473455-0a3e-4be7-87bd-349790d44f28 + + + + + drools:assetNodeType + + + d05de643-884d-4244-8c05-6b20375a0fbf + + + false + + + 96f4f6c2-01f9-445f-b773-6a7c5f77fa0b + + + Renamed asset Are they old enough + + + <scenario> + <maxRuleFirings>100000</maxRuleFirings> + <globals/> + <fixtures> + <fact-data> + <type>Applicant</type> + <name>a</name> + <fieldData> + <field-data> + <name>age</name> + <value>17</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>LoanApplication</type> + <name>application</name> + <fieldData> + <field-data> + <name>amount</name> + <value>1</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>7</executionTimeResult> + <numberOfRulesFired>1</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>false</expected> + <actualResult></actualResult> + <successResult>true</successResult> + <explanation>[application] field [approved] was [false].</explanation> + <operator>==</operator> + </expect-field> + <expect-field> + <fieldName>explanation</fieldName> + <expected>Underage</expected> + <actualResult></actualResult> + <successResult>true</successResult> + <explanation>[application] field [explanation] was [Underage].</explanation> + <operator>==</operator> + </expect-field> + </fieldValues> + <name>application</name> + <anonymous>false</anonymous> + </expect-fact> + </fixtures> + <lastRunResult>2008-09-30 11:49:15.315 EST</lastRunResult> + <rules/> + <inclusive>false</inclusive> +</scenario> + + + + + + mic + + + Test really basic validation, common sense stuff + + + false + + + scenario + + + mic + + + 2008-09-30T11:51:04.746+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Are they old enough + + + + + + 4 + + + dfea9171-3b7a-425f-8ded-30da1a5ac17f + + + 2010-06-01T01:52:52.932+08:00 + + + admin + + + true + + + dfea9171-3b7a-425f-8ded-30da1a5ac17f + + + bdc2a92c-a914-4c63-aac0-f7f9f1f29fcf + + + + + drools:assetNodeType + + + a839a639-9fae-45ae-9cc1-2a111c32d591 + + + false + + + 96f4f6c2-01f9-445f-b773-6a7c5f77fa0b + + + + + + <scenario> + <maxRuleFirings>100000</maxRuleFirings> + <globals/> + <fixtures> + <fact-data> + <type>LoanApplication</type> + <name>application</name> + <fieldData/> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>Bankruptcy</type> + <name>bankruptcy</name> + <fieldData> + <field-data> + <name>yearOfOccurrence</name> + <value>1991</value> + </field-data> + <field-data> + <name>amountOwed</name> + <value>9000</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>Bankruptcy</type> + <name>moreBankruptcy</name> + <fieldData> + <field-data> + <name>yearOfOccurrence</name> + <value>1988</value> + </field-data> + <field-data> + <name>amountOwed</name> + <value>5000</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>0</executionTimeResult> + <numberOfRulesFired>2</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>false</expected> + <actualResult></actualResult> + <successResult>true</successResult> + <explanation>[application] field [approved] was [false].</explanation> + <operator>==</operator> + </expect-field> + <expect-field> + <fieldName>explanation</fieldName> + <expected>has been bankrupt</expected> + <actualResult>has been bankrupt</actualResult> + <successResult>true</successResult> + <explanation>[application] field [explanation] was [has been bankrupt].</explanation> + <operator>==</operator> + </expect-field> + </fieldValues> + <name>application</name> + <anonymous>false</anonymous> + </expect-fact> + <retract-fact> + <name>moreBankruptcy</name> + </retract-fact> + <fact-data> + <type>Bankruptcy</type> + <name>bankruptcy</name> + <fieldData> + <field-data> + <name>yearOfOccurrence</name> + <value>1980</value> + </field-data> + <field-data> + <name>amountOwed</name> + <value>100000</value> + </field-data> + </fieldData> + <isModify>true</isModify> + </fact-data> + <fact-data> + <type>LoanApplication</type> + <name>application2</name> + <fieldData/> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>0</executionTimeResult> + <numberOfRulesFired>1</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>false</expected> + <successResult>true</successResult> + <explanation>[application2] field [approved] was [false].</explanation> + <operator>==</operator> + </expect-field> + </fieldValues> + <name>application2</name> + <anonymous>false</anonymous> + </expect-fact> + </fixtures> + <lastRunResult>2008-10-01 10:18:15.949 EST</lastRunResult> + <rules/> + <inclusive>false</inclusive> +</scenario> + + + + + + mic + + + We don't want bankrupt people since 1990, or if their amount was over a certain amount + + + false + + + scenario + + + mic + + + 2008-10-01T10:20:53.588+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + No bankruptcies + + + + + + 5 + + + f61089a4-40d4-4f11-9b20-8d00e5033ded + + + 2010-06-01T01:52:52.963+08:00 + + + admin + + + true + + + f61089a4-40d4-4f11-9b20-8d00e5033ded + + + 0dfe2c92-776c-4326-a31f-05ef71146d6e + + + + + drools:assetNodeType + + + cd8e3ed3-9be5-429f-abb3-3c1e9d0faf0d + + + true + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + Archived Item on Wed Oct 01 12:54:56 GMT+1000 2008 + + + <rule> + <name>Bankruptcies</name> + <modelVersion>1.0</modelVersion> + <attributes/> + <lhs> + <compositePattern> + <type>exists</type> + <patterns> + <fact> + <constraintList> + <constraints> + <fieldConstraint> + <value>1990</value> + <constraintValueType>1</constraintValueType> + <fieldName>yearOfOccurrence</fieldName> + <operator>&gt;</operator> + <fieldType>Numeric</fieldType> + </fieldConstraint> + </constraints> + </constraintList> + <factType>Bankruptcy</factType> + </fact> + </patterns> + </compositePattern> + </lhs> + <rhs/> +</rule> + + + + + + mic + + + + + + false + + + brl + + + mic + + + 2008-10-01T12:54:56.805+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Bankruptcies + + + + + + 2 + + + cb157668-aca5-447c-88e5-e089032a9dec + + + 2010-06-01T01:52:52.994+08:00 + + + admin + + + true + + + cb157668-aca5-447c-88e5-e089032a9dec + + + e2bef79a-e26b-4b4b-b5b7-3221e7906da7 + + + + + drools:assetNodeType + + + ba1e444e-8528-486b-a2fa-a8a7b6119d3f + + + false + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + + + + <rule> + <name>Bankruptcy history</name> + <modelVersion>1.0</modelVersion> + <attributes> + <attribute> + <attributeName>salience</attributeName> + <value>10</value> + </attribute> + </attributes> + <lhs> + <fact> + <factType>LoanApplication</factType> + <boundName>a</boundName> + </fact> + <compositePattern> + <type>exists</type> + <patterns> + <fact> + <constraintList> + <constraints> + <compositeConstraint> + <compositeJunctionType>||</compositeJunctionType> + <constraints> + <fieldConstraint> + <value>1990</value> + <constraintValueType>1</constraintValueType> + <fieldName>yearOfOccurrence</fieldName> + <operator>&gt;</operator> + <fieldType></fieldType> + </fieldConstraint> + <fieldConstraint> + <value>10000</value> + <constraintValueType>1</constraintValueType> + <fieldName>amountOwed</fieldName> + <operator>&gt;</operator> + <fieldType></fieldType> + </fieldConstraint> + </constraints> + </compositeConstraint> + </constraints> + </constraintList> + <factType>Bankruptcy</factType> + </fact> + </patterns> + </compositePattern> + </lhs> + <rhs> + <setField> + <fieldValues> + <fieldValue> + <field>approved</field> + <value>false</value> + <type>Boolean</type> + </fieldValue> + <fieldValue> + <field>explanation</field> + <value>has been bankrupt</value> + <type>String</type> + </fieldValue> + </fieldValues> + <variable>a</variable> + </setField> + <retract> + <variableName>a</variableName> + </retract> + </rhs> +</rule> + + + + + + mic + + + + + + false + + + brl + + + mic + + + 2008-10-01T12:55:07.598+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Bankruptcy history + + + + + + 3 + + + 7cd77e09-f31c-4993-84f3-442ad1710bf9 + + + 2010-06-01T01:52:53.010+08:00 + + + admin + + + true + + + 7cd77e09-f31c-4993-84f3-442ad1710bf9 + + + 45e6e55d-9448-493c-8754-5e0940ea7687 + + + + + drools:assetNodeType + + + bb1d3503-83f9-41f5-9b74-d5dac05ebbc6 + + + false + + + + + + + 'Applicant.creditRating': ['AA', 'OK', 'Sub prime'] + + + + + + mic + + + An enumeration is a mapping from fields to a list of values.This will mean the rule editor will show a drop down for fields, instead of a text box.The format of this is: 'FactType.fieldName': ['Value1', 'Value2'] +You can add more mappings by adding in more lines. +For example: + +'Person.sex' : ['M', 'F'] +'Person.rating' : ['High', 'Low'] + +You can also ad display aliases (so the value used in the rule is separate to the one displayed: +'Person.sex' : ['M=Male', 'F=Female'] +in the above case, the 'M=Male' means that 'Male' will be displayed as an item in a drop down box, but the value 'M' will be used in the rule. + + + false + + + enumeration + + + mic + + + 2008-10-01T10:26:35.668+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + credit ratings + + + + + + 1 + + + af1e26b1-defa-4b58-af4d-c633dae43be6 + + + 2010-06-01T01:52:53.026+08:00 + + + admin + + + true + + + af1e26b1-defa-4b58-af4d-c633dae43be6 + + + fa4df4dd-c4ce-4fb5-9e47-ce450c28139d + + + + + drools:assetNodeType + + + 4792fe13-3acc-4f44-8ec1-7972ebe9dec1 + + + false + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + + + + <rule> + <name>No bad credit checks</name> + <modelVersion>1.0</modelVersion> + <attributes> + <attribute> + <attributeName>salience</attributeName> + <value>10</value> + </attribute> + </attributes> + <lhs> + <fact> + <factType>LoanApplication</factType> + <boundName>app</boundName> + </fact> + <compositePattern> + <type>or</type> + <patterns> + <fact> + <constraintList> + <constraints> + <fieldConstraint> + <value>OK</value> + <constraintValueType>1</constraintValueType> + <fieldName>creditRating</fieldName> + <operator>==</operator> + <fieldType>String</fieldType> + </fieldConstraint> + </constraints> + </constraintList> + <factType>Applicant</factType> + </fact> + <fact> + <constraintList> + <constraints> + <fieldConstraint> + <value>Sub prime</value> + <constraintValueType>1</constraintValueType> + <fieldName>creditRating</fieldName> + <operator>==</operator> + <fieldType>String</fieldType> + </fieldConstraint> + </constraints> + </constraintList> + <factType>Applicant</factType> + </fact> + </patterns> + </compositePattern> + </lhs> + <rhs> + <setField> + <fieldValues> + <fieldValue> + <field>approved</field> + <value>false</value> + <type>Boolean</type> + </fieldValue> + <fieldValue> + <field>explanation</field> + <value>Only AA</value> + <type>String</type> + </fieldValue> + </fieldValues> + <variable>app</variable> + </setField> + <retract> + <variableName>app</variableName> + </retract> + </rhs> +</rule> + + + + + + mic + + + + + + false + + + brl + + + mic + + + 2008-10-01T12:55:21.006+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + No bad credit checks + + + + + + 7 + + + 43d99ffc-998d-4263-a66f-022e5e5178be + + + 2010-06-01T01:52:53.057+08:00 + + + admin + + + true + + + 43d99ffc-998d-4263-a66f-022e5e5178be + + + 807f9946-de8a-4acb-87dd-3fb19faa4d0b + + + + + drools:assetNodeType + + + 92e21ae6-b23a-4c44-9d0e-68f726211d17 + + + false + + + 96f4f6c2-01f9-445f-b773-6a7c5f77fa0b + + + + + + <scenario> + <maxRuleFirings>100000</maxRuleFirings> + <globals/> + <fixtures> + <fact-data> + <type>Applicant</type> + <name>a</name> + <fieldData> + <field-data> + <name>creditRating</name> + <value>OK</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>LoanApplication</type> + <name>app</name> + <fieldData> + <field-data> + <name>approved</name> + <value>false</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>7</executionTimeResult> + <numberOfRulesFired>1</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>false</expected> + <successResult>true</successResult> + <explanation>[app] field [approved] was [false].</explanation> + <operator>==</operator> + </expect-field> + <expect-field> + <fieldName>explanation</fieldName> + <expected>Only AA</expected> + <successResult>true</successResult> + <explanation>[app] field [explanation] was [Only AA].</explanation> + <operator>==</operator> + </expect-field> + </fieldValues> + <name>app</name> + <anonymous>false</anonymous> + </expect-fact> + </fixtures> + <lastRunResult>2008-10-01 12:43:32.318 EST</lastRunResult> + <rules/> + <inclusive>false</inclusive> +</scenario> + + + + + + mic + + + Obviously we only want people who can pay stuff back + + + false + + + scenario + + + mic + + + 2008-10-01T12:43:41.518+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Good credit history only + + + + + + 3 + + + b174d3f0-9a77-46d2-ba9b-c6c06f47dd2d + + + 2010-06-01T01:52:53.072+08:00 + + + admin + + + true + + + b174d3f0-9a77-46d2-ba9b-c6c06f47dd2d + + + f1a83f3c-b4b6-4f8b-8203-d84986e012df + + + + + drools:assetNodeType + + + a9d6b2d3-8f94-42d6-9d51-0928fe1554b1 + + + false + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + + + + <rule> + <name>no NINJAs</name> + <modelVersion>1.0</modelVersion> + <attributes> + <attribute> + <attributeName>salience</attributeName> + <value>10</value> + </attribute> + </attributes> + <lhs> + <fact> + <factType>LoanApplication</factType> + <boundName>app</boundName> + </fact> + <compositePattern> + <type>not</type> + <patterns> + <fact> + <factType>IncomeSource</factType> + </fact> + </patterns> + </compositePattern> + </lhs> + <rhs> + <setField> + <fieldValues> + <fieldValue> + <field>approved</field> + <value>false</value> + <type>Boolean</type> + </fieldValue> + <fieldValue> + <field>explanation</field> + <value>no NINJAs</value> + <type>String</type> + </fieldValue> + </fieldValues> + <variable>app</variable> + </setField> + <retract> + <variableName>app</variableName> + </retract> + </rhs> +</rule> + + + + + + mic + + + No ninjas ! + + + false + + + brl + + + mic + + + 2008-10-01T12:55:44.955+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + no NINJAs + + + + + + 3 + + + 034b9931-dad4-46bb-b087-eeaf501ef2d5 + + + 2010-06-01T01:52:53.104+08:00 + + + admin + + + true + + + 034b9931-dad4-46bb-b087-eeaf501ef2d5 + + + 4246392b-1022-41ea-91f6-d38fa1a0cc27 + + + + + drools:assetNodeType + + + b573df1f-4d6a-43a8-b2be-079cb60ab64e + + + false + + + 96f4f6c2-01f9-445f-b773-6a7c5f77fa0b + + + + + + <scenario> + <maxRuleFirings>100000</maxRuleFirings> + <globals/> + <fixtures> + <fact-data> + <type>LoanApplication</type> + <name>app</name> + <fieldData/> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>Applicant</type> + <name>applicant</name> + <fieldData/> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>0</executionTimeResult> + <numberOfRulesFired>1</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>false</expected> + <successResult>true</successResult> + <explanation>[app] field [approved] was [false].</explanation> + <operator>==</operator> + </expect-field> + <expect-field> + <fieldName>explanation</fieldName> + <expected>no NINJAs</expected> + <actualResult>no NINJAs</actualResult> + <successResult>true</successResult> + <explanation>[app] field [explanation] was [no NINJAs].</explanation> + <operator>==</operator> + </expect-field> + </fieldValues> + <name>app</name> + <anonymous>false</anonymous> + </expect-fact> + </fixtures> + <lastRunResult>2008-10-01 12:47:29.730 EST</lastRunResult> + <rules/> + <inclusive>false</inclusive> +</scenario> + + + + + + mic + + + + + + false + + + scenario + + + mic + + + 2008-10-01T12:47:32.301+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + NINJAs + + + + + + 2 + + + dbcc2d4a-0021-4191-afd9-f35363e82e8c + + + 2010-06-01T01:52:53.119+08:00 + + + admin + + + true + + + dbcc2d4a-0021-4191-afd9-f35363e82e8c + + + 21ddd297-6ae9-4f8b-9bef-1d0b4c2c525f + + + + + drools:assetNodeType + + + e25d9eb0-48cf-4373-806d-df9b8cf78717 + + + false + + + 9be50562-7549-4e68-a6c0-42222781bde9 + + + + + + <decision-table> + <tableName>Pricing loans</tableName> + <attributeCols/> + <conditionCols> + <condition-column> + <width>96</width> + <header>amount min</header> + <factType>LoanApplication</factType> + <boundName>application</boundName> + <constraintValueType>1</constraintValueType> + <factField>amount</factField> + <operator>&gt;</operator> + </condition-column> + <condition-column> + <width>104</width> + <header>amount max</header> + <factType>LoanApplication</factType> + <boundName>application</boundName> + <constraintValueType>1</constraintValueType> + <factField>amount</factField> + <operator>&lt;=</operator> + </condition-column> + <condition-column> + <width>81</width> + <header>period</header> + <factType>LoanApplication</factType> + <boundName>application</boundName> + <constraintValueType>1</constraintValueType> + <factField>lengthYears</factField> + <operator>==</operator> + <valueList>20, 25, 30</valueList> + </condition-column> + <condition-column> + <width>-1</width> + <header>income</header> + <factType>IncomeSource</factType> + <boundName>income</boundName> + <constraintValueType>1</constraintValueType> + <factField>type</factField> + <operator>==</operator> + <valueList>Job, Asset</valueList> + </condition-column> + <condition-column> + <width>-1</width> + <header>deposit max</header> + <factType>LoanApplication</factType> + <boundName>application</boundName> + <constraintValueType>1</constraintValueType> + <factField>deposit</factField> + <operator>&lt;</operator> + </condition-column> + </conditionCols> + <actionCols> + <set-field-col> + <width>-1</width> + <header>Loan approved</header> + <boundName>application</boundName> + <factField>approved</factField> + <type>Boolean</type> + <valueList>true, false</valueList> + </set-field-col> + <set-field-col> + <width>-1</width> + <header>LMI</header> + <boundName>application</boundName> + <factField>insuranceCost</factField> + <type>Numeric</type> + </set-field-col> + <set-field-col> + <width>-1</width> + <header>rate</header> + <boundName>application</boundName> + <factField>approvedRate</factField> + <type>Numeric</type> + </set-field-col> + </actionCols> + <data> + <string-array> + <string>3</string> + <null/> + <string>131000</string> + <string>200000</string> + <string>30</string> + <string>Asset</string> + <string>20000</string> + <string>true</string> + <string>0</string> + <string>2</string> + </string-array> + <string-array> + <string>1</string> + <null/> + <string>10000</string> + <string>100000</string> + <string>20</string> + <string>Job</string> + <string>2000</string> + <string>true</string> + <string>0</string> + <string>4</string> + </string-array> + <string-array> + <string>2</string> + <null/> + <string>100001</string> + <string>130000</string> + <string>20</string> + <string>Job</string> + <string>3000</string> + <string>true</string> + <string>10</string> + <string>6</string> + </string-array> + </data> + <descriptionWidth>25</descriptionWidth> + <groupField>income</groupField> +</decision-table> + + + + + + mic + + + + + + false + + + gdst + + + mic + + + 2008-10-01T13:46:07.232+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Pricing loans + + + + + + 9 + + + b47a345c-6e50-4ee9-870c-63e8896b9bc9 + + + 2010-06-01T01:52:53.182+08:00 + + + admin + + + true + + + b47a345c-6e50-4ee9-870c-63e8896b9bc9 + + + b8e84a73-25b1-4614-925a-f8abe37a6762 + + + + + drools:assetNodeType + + + a14e46f2-403e-4f95-b90d-0864749309b7 + + + false + + + 96f4f6c2-01f9-445f-b773-6a7c5f77fa0b + + + + + + <scenario> + <maxRuleFirings>100000</maxRuleFirings> + <globals/> + <fixtures> + <fact-data> + <type>IncomeSource</type> + <name>income</name> + <fieldData> + <field-data> + <name>type</name> + <value>Job</value> + </field-data> + <field-data> + <name>amount</name> + <value>65000</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>LoanApplication</type> + <name>application</name> + <fieldData> + <field-data> + <name>amount</name> + <value>25000</value> + </field-data> + <field-data> + <name>deposit</name> + <value>1500</value> + </field-data> + <field-data> + <name>lengthYears</name> + <value>20</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>0</executionTimeResult> + <numberOfRulesFired>1</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>true</expected> + <actualResult></actualResult> + <successResult>true</successResult> + <explanation>[application] field [approved] was [true].</explanation> + <operator>==</operator> + </expect-field> + <expect-field> + <fieldName>insuranceCost</fieldName> + <expected>0</expected> + <actualResult></actualResult> + <successResult>true</successResult> + <explanation>[application] field [insuranceCost] was [0].</explanation> + <operator>==</operator> + </expect-field> + <expect-field> + <fieldName>approvedRate</fieldName> + <expected>4</expected> + <successResult>true</successResult> + <explanation>[application] field [approvedRate] was [4].</explanation> + <operator>==</operator> + </expect-field> + </fieldValues> + <name>application</name> + <anonymous>false</anonymous> + </expect-fact> + </fixtures> + <lastRunResult>2008-10-01 13:46:20.746 EST</lastRunResult> + <rules/> + <inclusive>false</inclusive> +</scenario> + + + + + + mic + + + + + + false + + + scenario + + + mic + + + 2008-10-01T14:19:04.309+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Pricing low end + + + + + + 3 + + + da86c207-ca38-408c-ab65-dea6bbeb665d + + + 2010-06-01T01:52:53.197+08:00 + + + admin + + + true + + + da86c207-ca38-408c-ab65-dea6bbeb665d + + + a0f33007-1166-45e6-948c-85946f5829cc + + + + + drools:assetNodeType + + + 6dc73458-46c0-440d-b533-7512453f7c77 + + + true + + + 0554b023-d7a5-4b63-83f8-2bee32424351 + + + Archived Item on Wed Oct 01 13:54:23 GMT+1000 2008 + + + salience -1 +when + app: LoanApplication(approved == null) +then + app.setApproved(false); + + + + + + mic + + + + + + false + + + drl + + + mic + + + 2008-10-01T13:54:23.662+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Unapprove by default + + + + + + 3 + + + 6601a2ac-f295-4bc0-a146-42765a983078 + + + 2010-06-01T01:52:53.228+08:00 + + + admin + + + true + + + 6601a2ac-f295-4bc0-a146-42765a983078 + + + 13dbd6c0-cc0f-464c-b5ef-c91804849892 + + + + + + + drools:packageNodeType + + + 1864b431-37da-46e7-8f8d-12645d0773ad + + + false + + + true + + + + + + rO0ABXNyABdvcmcuZHJvb2xzLnJ1bGUuUGFja2FnZQAAAAAAAAGQDAAAeHBzcgAmb3JnLmRyb29scy5ydWxlLkRpYWxlY3RSdW50aW1lUmVnaXN0cnkf4nrpqWIPIAwAAHhwc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAJ0AARqYXZhc3IAJm9yZy5kcm9vbHMucnVsZS5KYXZhRGlhbGVjdFJ1bnRpbWVEYXRhAAAAAAAAAZAMAAB4cHcEAAAABHQAH21vcnRnYWdlcy9Mb2FuQXBwbGljYXRpb24uY2xhc3N1cgACW0Ks8xf4BghU4AIAAHhwAAAH9cr+ur4AAAAwAGUBABltb3J0Z2FnZXMvTG9hbkFwcGxpY2F0aW9uBwABAQAQamF2YS9sYW5nL09iamVjdAcAAwEAFGphdmEvaW8vU2VyaWFsaXphYmxlBwAFAQAebW9ydGdhZ2VzLkxvYW5BcHBsaWNhdGlvbi5qYXZhAQAGYW1vdW50AQATTGphdmEvbGFuZy9JbnRlZ2VyOwEAB2RlcG9zaXQBAAhhcHByb3ZlZAEAE0xqYXZhL2xhbmcvQm9vbGVhbjsBAAxhcHByb3ZlZFJhdGUBAAtsZW5ndGhZZWFycwEAC2V4cGxhbmF0aW9uAQASTGphdmEvbGFuZy9TdHJpbmc7AQANaW5zdXJhbmNlQ29zdAEABjxpbml0PgEAAygpVgwAEgATCgAEABQBAAlnZXRBbW91bnQBABUoKUxqYXZhL2xhbmcvSW50ZWdlcjsMAAgACQkAAgAYAQAJc2V0QW1vdW50AQAWKExqYXZhL2xhbmcvSW50ZWdlcjspVgEACmdldERlcG9zaXQMAAoACQkAAgAdAQAKc2V0RGVwb3NpdAEAC2dldEFwcHJvdmVkAQAVKClMamF2YS9sYW5nL0Jvb2xlYW47DAALAAwJAAIAIgEAC3NldEFwcHJvdmVkAQAWKExqYXZhL2xhbmcvQm9vbGVhbjspVgEAD2dldEFwcHJvdmVkUmF0ZQwADQAJCQACACcBAA9zZXRBcHByb3ZlZFJhdGUBAA5nZXRMZW5ndGhZZWFycwwADgAJCQACACsBAA5zZXRMZW5ndGhZZWFycwEA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AAAwAEoBABNtb3J0Z2FnZXMvQXBwbGljYW50BwABAQAQamF2YS9sYW5nL09iamVjdAcAAwEAFGphdmEvaW8vU2VyaWFsaXphYmxlBwAFAQAYbW9ydGdhZ2VzLkFwcGxpY2FudC5qYXZhAQADYWdlAQATTGphdmEvbGFuZy9JbnRlZ2VyOwEADGNyZWRpdFJhdGluZwEAEkxqYXZhL2xhbmcvU3RyaW5nOwEABG5hbWUBAAY8aW5pdD4BAAMoKVYMAA0ADgoABAAPAQAGZ2V0QWdlAQAVKClMamF2YS9sYW5nL0ludGVnZXI7DAAIAAkJAAIAEwEABnNldEFnZQEAFihMamF2YS9sYW5nL0ludGVnZXI7KVYBAA9nZXRDcmVkaXRSYXRpbmcBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwwACgALCQACABkBAA9zZXRDcmVkaXRSYXRpbmcBABUoTGphdmEvbGFuZy9TdHJpbmc7KVYBAAdnZXROYW1lDAAMAAsJAAIAHgEAB3NldE5hbWUBAAZlcXVhbHMBABUoTGphdmEvbGFuZy9PYmplY3Q7KVoBAAhnZXRDbGFzcwEAEygpTGphdmEvbGFuZy9DbGFzczsMACMAJAoABAAlAQAIaGFzaENvZGUBAAMoKUkBAAh0b1N0cmluZwEAF2phdmEvbGFuZy9TdHJpbmdCdWlsZGVyBwAqCgArAA8KAAIAJQEAD2phdmEvbGFuZy9DbGFzcwcALgEADWdldFNpbXBsZU5hbWUMADAAGAoALwAxAQAGYXBwZW5kAQAtKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZ0J1aWxkZXI7DAAzADQKACsANQEAAiggCAA3CAAIAQABPQgAOgEALShMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwwAMwA8CgArAD0BAAIsIAgAPwgACggADAEAAiApCABDDAApABgKACsARQEABENvZGUBAAhTdGFja01hcAEAClNvdXJjZUZpbGUAIQACAAQAAQAGAAMAAgAIAAkAAAACAAoACwAAAAIADAALAAAACgABAA0ADgABAEcAAAARAAEAAQAAAAUqtwAQsQAAAAAAAQARABIAAQBHAAAAEQABAAEAAAAFKrQAFLAAAAAAAAEA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DAAAeHB0AAltb3J0Z2FnZXN0ABNSb3cgMSBQcmljaW5nIGxvYW5zcHNyAB9vcmcuZHJvb2xzLmJhc2UuU2FsaWVuY2VJbnRlZ2VyAAAAAAAAAZAMAAB4cHcEAAAAAHh3AQFwcHNyABxvcmcuZHJvb2xzLnJ1bGUuR3JvdXBFbGVtZW50AAAAAAAAAf4MAAB4cgAib3JnLmRyb29scy5ydWxlLkNvbmRpdGlvbmFsRWxlbWVudKYTM9lW0l/mDAAAeHB+cgAhb3JnLmRyb29scy5ydWxlLkdyb3VwRWxlbWVudCRUeXBlAAAAAAAAAAASAAB4cgAOamF2YS5sYW5nLkVudW0AAAAAAAAAABIAAHhwdAADQU5Ec3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAJ3BAAAAApzcgAXb3JnLmRyb29scy5ydWxlLlBhdHRlcm4AAAAAAAABkAwAAHhwc3IAH29yZy5kcm9vbHMuYmFzZS5DbGFzc09iamVjdFR5cGUAAAAAAAABkAwAAHhwdxwAGW1vcnRnYWdlcy5Mb2FuQXBwbGljYXRpb24AeHNxAH4AJAAAAAR3BAAAAARzcgAhb3JnLmRyb29scy5ydWxlLkxpdGVyYWxDb25zdHJhaW50AAAAAAAAAZAMAAB4cHNyACBvcmcuZHJvb2xzLmJhc2UuQ2xhc3NGaWVsZFJlYWRlcgAAAAAAAAGQDAAAeHB0ABltb3J0Z2FnZXMuTG9hbkFwcGxpY2F0aW9udAAGYW1vdW50eHNyACJvcmcuZHJvb2xzLnJ1bGUuTGl0ZXJhbFJlc3RyaWN0aW9uAAAAAAAAAZAMAAB4cHNyACVvcmcuZHJvb2xzLmJhc2UuZmllbGQuT2JqZWN0RmllbGRJbXBsAAAAAAAAAZAMAAB4cHcBAHBwdAAFMTAwMDB4c3IAUW9yZy5kcm9vbHMuYmFzZS5ldmFsdWF0b3JzLkNvbXBhcmFibGVFdmFsdWF0b3JzRGVmaW5pdGlvbiRJbnRlZ2VyR3JlYXRlckV2YWx1YXRvcgAAAAAAAAGQDAAAeHIAHW9yZy5kcm9vbHMuYmFzZS5CYXNlRXZhbHVhdG9y8pexUqg8W/wMAAB4cHNyACNvcmcuZHJvb2xzLmJhc2UuZXZhbHVhdG9ycy5PcGVyYXRvcgAAAAAAAAGQDAAAeHB0AAE+dwEAeHNyABlvcmcuZHJvb2xzLmJhc2UuVmFsdWVUeXBlAAAAAAAAAZAMAAB4cHQAA2ludHZyAANpbnQAAAAAAAAAAAAAAHhwdwQAAAAEeHhxAH4ALnh4c3EAfgArcQB+AC5zcQB+ADFzcQB+ADN3AQBwcHQABjEwMDAwMHhzcgBVb3JnLmRyb29scy5iYXNlLmV2YWx1YXRvcnMuQ29tcGFyYWJsZUV2YWx1YXRvcnNEZWZpbml0aW9uJEludGVnZXJMZXNzT3JFcXVhbEV2YWx1YXRvcgAAAAAAAAGQDAAAeHEAfgA3c3EAfgA5dAACPD13AQB4cQB+AD14cQB+AC54eHNxAH4AK3NxAH4ALXEAfgAvdAALbGVuZ3RoWWVhcnN4c3EAfgAxc3EAfgAzdwEAcHB0AAIyMHhzcgBNb3JnLmRyb29scy5iYXNlLmV2YWx1YXRvcnMuRXF1YWxpdHlFdmFsdWF0b3JzRGVmaW5pdGlvbiRJbnRlZ2VyRXF1YWxFdmFsdWF0b3IAAAAAAAABkAwAAHhxAH4AN3NxAH4AOXQAAj09dwEAeHEAfgA9eHEAfgBKeHhzcQB+ACtzcQB+AC1xAH4AL3QAB2RlcG9zaXR4c3EAfgAxc3EAfgAzdwEAcHB0AAQyMDAweHNyAE5vcmcuZHJvb2xzLmJhc2UuZXZhbHVhdG9ycy5Db21wYXJhYmxlRXZhbHVhdG9yc0RlZmluaXRpb24kSW50ZWdlckxlc3NFdmFsdWF0b3IAAAAAAAABkAwAAHhxAH4AN3NxAH4AOXQAATx3AQB4cQB+AD14cQB+AFR4eHhzcgAbb3JnLmRyb29scy5ydWxlLkRlY2xhcmF0aW9uAAAAAAAAAZAMAAB4cHQAC2FwcGxpY2F0aW9uc3IAH29yZy5kcm9vbHMuc3BpLlBhdHRlcm5FeHRyYWN0b3IAAAAAAAABkAwAAHhwcQB+ACl4cQB+ACd3AQB4c3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB+AF9xAH4AXnhwdwQAAAAAcHcEAAAAAHhzcQB+ACZzcQB+ACh3GQAWbW9ydGdhZ2VzLkluY29tZVNvdXJjZQB4c3EAfgAkAAAAAXcEAAAAAXNxAH4AK3NxAH4ALXQAFm1vcnRnYWdlcy5JbmNvbWVTb3VyY2V0AAR0eXBleHNxAH4AMXNxAH4AM3cBAHBwdAADSm9ieHNyAExvcmcuZHJvb2xzLmJhc2UuZXZhbHVhdG9ycy5FcXVhbGl0eUV2YWx1YXRvcnNEZWZpbml0aW9uJFN0cmluZ0VxdWFsRXZhbHVhdG9yAAAAAAAAAZAMAAB4cQB+ADdxAH4AUXNxAH4APHQABlN0cmluZ3ZyABBqYXZhLmxhbmcuU3RyaW5noPCkOHo7s0ICAAB4cHcEAAAAB3h4cQB+AGd4eHhzcQB+AF10AAZpbmNvbWVzcQB+AGBxAH4AZHhxAH4AY3cBAHhzcQB+AAQ/QAAAAAAAAXcIAAAAAgAAAAFxAH4AdHEAfgBzeHB3BAAAAAFwdwQAAAAAeHh4dAAEbXZlbHQABE1BSU5zcQB+AAQ/QAAAAAAADHcIAAAAEAAAAAB4c3IAJG9yZy5kcm9vbHMuYmFzZS5tdmVsLk1WRUxDb25zZXF1ZW5jZQAAAAAAAAGQDAAAeHBzcgAob3JnLmRyb29scy5iYXNlLm12ZWwuTVZFTENvbXBpbGF0aW9uVW5pdC8dZtsMAuKzDAAAeHB3kwAkbW9ydGdhZ2VzLlJ1bGVfUm93XzFfUHJpY2luZ19sb2Fuc18wAGsJCWFwcGxpY2F0aW9uLnNldEFwcHJvdmVkKCB0cnVlICk7CgkJYXBwbGljYXRpb24uc2V0SW5zdXJhbmNlQ29zdCggMCApOwoJCWFwcGxpY2F0aW9uLnNldEFwcHJvdmVkUmF0ZSggNCApO3VyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0AAltb3J0Z2FnZXN1cQB+AH4AAAAAdXEAfgB+AAAAAHVxAH4AfgAAAAB1cQB+AH4AAAAAdXIAHltMb3JnLmRyb29scy5ydWxlLkRlY2xhcmF0aW9uO/Wnzws0aCnjAgAAeHAAAAABcQB+AF5wdXEAfgB+AAAAAHVxAH4AfgAAAAFxAH4AX3VxAH4AfgAAAAFxAH4AL3B3BQAAAAQBeHcGAARtdmVseHBwdwoAAAAAAAAABwAAcHB3AwAAAXBwc3IAHm9yZy5kcm9vbHMuYmFzZS5FbmFibGVkQm9vbGVhbgAAAAAAAAGQDAAAeHB3AQF4cHhxAH4Ae3NxAH4AF3EAfgAZdAATUm93IDMgUHJp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LkxpbmVNYXBwaW5nc7XQaA/XzjIQDAAAeHBxAH4Bn3cIAAAABQAAAAB4dAAjbW9ydGdhZ2VzLlJ1bGVfQmFua3J1cHRjeV9oaXN0b3J5XzBzcQB+AaBxAH4BoncIAAAABwAAAAB4dAAabW9ydGdhZ2VzLlJ1bGVfbm9fTklOSkFzXzBzcQB+AaBxAH4BpHcIAAAABwAAAAB4dAAZbW9ydGdhZ2VzLlJ1bGVfVW5kZXJhZ2VfMHNxAH4BoHEAfgGmdwgAAAAHAAAAAHh0ACVtb3J0Z2FnZXMuUnVsZV9Ob19iYWRfY3JlZGl0X2NoZWNrc18wc3EAfgGgcQB+Aah3CAAAAAcAAAAAeHQAJG1vcnRnYWdlcy5SdWxlX1Jvd18yX1ByaWNpbmdfbG9hbnNfMHNxAH4BoHEAfgGqdwgAAAAfAAAAAHh0ACRtb3J0Z2FnZXMuUnVsZV9Sb3dfMV9QcmljaW5nX2xvYW5zXzBzcQB+AaBxAH4BrHcIAAAAEwAAAAB4dAAkbW9ydGdhZ2VzLlJ1bGVfUm93XzNfUHJpY2luZ19sb2Fuc18wc3EAfgGgcQB+Aa53CAAAAAcAAAAAeHh4c3EAfgAEP0AAAAAAAAx3CAAAABAAAAAEdAAKQmFua3J1cHRjeXNyAB9vcmcuZHJvb2xzLnJ1bGUuVHlwZURlY2xhcmF0aW9u5qIZN48ZfxQMAAB4cHEAfgGxfnIAJG9yZy5kcm9vbHMucnVsZS5UeXBlRGVjbGFyYXRpb24kUm9sZQAAAAAAAAAAEgAAeHEAfgAhdAAERkFDVH5yACZvcmcuZHJvb2xzLnJ1bGUuVHlwZURlY2xhcmF0aW9uJEZvcm1hdAAAAAAAAAAAEgAAeHEAfgAhdAAEUE9KT3BwcQB+AShwc3IAJG9yZy5kcm9vbHMuZmFjdG1vZGVsLkNsYXNzRGVmaW5pdGlvbkDJP7TT/aNYDAAAeHB0ABRtb3J0Z2FnZXMuQmFua3J1cHRjeXQAEGphdmEubGFuZy5PYmplY3R1cQB+AH4AAAABdAAUamF2YS5pby5TZXJpYWxpemFibGVzcgAXamF2YS51dGlsLkxpbmtlZEhhc2hNYXA0wE5cEGzA+wIAAVoAC2FjY2Vzc09yZGVyeHEAfgAEP0AAAAAAAAx3CAAAABAAAAACcQB+AS9zcgAkb3JnLmRyb29s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 + + + mic + + + Mortgages that aren't stupid + + + + + + package + + + mic + + + 2010-06-01T01:53:09.936+08:00 + + + mortgages + + + 2 + + + 5cddc8e6-0ded-4124-9779-49ede438dfb9 + + + 2010-06-01T01:52:53.260+08:00 + + + admin + + + true + + + 5cddc8e6-0ded-4124-9779-49ede438dfb9 + + + 10311f80-d979-4536-9af2-9c046bde5536 + + + + drools:versionableAssetFolder + + + 081033ec-4a59-4a7a-a58d-a31ad673d16f + + + 342cc7a2-c3ad-44ae-882b-22fb652ee0c8 + + + 2010-06-01T01:52:53.260+08:00 + + + admin + + + true + + + 342cc7a2-c3ad-44ae-882b-22fb652ee0c8 + + + 176a919c-3b11-4013-8a3a-4c121f8bb963 + + + + drools:assetNodeType + + + b3770f7a-c122-4b28-b2c9-a53fe5a329a8 + + + false + + + + + + + + + mic + + + + + + package + + + mic + + + 2008-09-30T11:36:29.962+10:00 + + + mortgages + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + drools + + + 1 + + + 8e62a7af-0e97-451f-915d-148e475f5c84 + + + 2010-06-01T01:52:53.275+08:00 + + + admin + + + true + + + 8e62a7af-0e97-451f-915d-148e475f5c84 + + + 16f90269-508f-40dd-9a8e-62edfd6c990f + + + + + drools:assetNodeType + + + 82188ee0-8746-474f-a207-b5d2684d6885 + + + false + + + + + + + declare LoanApplication + amount: Integer + approved: Boolean + deposit: Integer + approvedRate: Integer + lengthYears: Integer + explanation: String + insuranceCost: Integer +end + +declare Applicant + age: Integer + name: String + creditRating: String +end + +declare IncomeSource + amount: Integer + type: String +end + +declare Bankruptcy + amountOwed: Integer + yearOfOccurrence: Integer +end + + + + + + mic + + + + + + false + + + model.drl + + + mic + + + 2008-10-01T09:57:56.246+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + MortgageModel + + + + + + 4 + + + 891c40ed-8b6d-4d46-941e-66b89d54f833 + + + 2010-06-01T01:52:53.291+08:00 + + + admin + + + true + + + 891c40ed-8b6d-4d46-941e-66b89d54f833 + + + b624ffff-1b49-4666-a1c7-6bafaa4e2c8e + + + + + drools:assetNodeType + + + 8da7c94b-c006-450d-82aa-3a349f0dc5cb + + + false + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + + + + <rule> + <name>Underage</name> + <modelVersion>1.0</modelVersion> + <attributes> + <attribute> + <attributeName>salience</attributeName> + <value>10</value> + </attribute> + </attributes> + <lhs> + <fact> + <factType>LoanApplication</factType> + <boundName>application</boundName> + </fact> + <fact> + <constraintList> + <constraints> + <fieldConstraint> + <value>21</value> + <constraintValueType>1</constraintValueType> + <fieldName>age</fieldName> + <operator>&lt;</operator> + <fieldType>Numeric</fieldType> + </fieldConstraint> + </constraints> + </constraintList> + <factType>Applicant</factType> + </fact> + </lhs> + <rhs> + <setField> + <fieldValues> + <fieldValue> + <field>approved</field> + <value>false</value> + <type>Boolean</type> + </fieldValue> + <fieldValue> + <field>explanation</field> + <value>Underage</value> + <type>String</type> + </fieldValue> + </fieldValues> + <variable>application</variable> + </setField> + <retract> + <variableName>application</variableName> + </retract> + </rhs> +</rule> + + + + + + mic + + + + + + false + + + brl + + + mic + + + 2008-10-01T12:54:34.716+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Underage + + + + + + 2 + + + 725305db-3075-4c9c-b6fb-569a767b2a41 + + + 2010-06-01T01:52:53.306+08:00 + + + admin + + + true + + + 725305db-3075-4c9c-b6fb-569a767b2a41 + + + 47d5f5d0-da5e-48d9-8cb0-3001d97a32b4 + + + + + drools:assetNodeType + + + 05a0c7fb-1923-4b0a-887b-9b888eb4dce2 + + + false + + + 96f4f6c2-01f9-445f-b773-6a7c5f77fa0b + + + Renamed asset Are they old enough + + + <scenario> + <maxRuleFirings>100000</maxRuleFirings> + <globals/> + <fixtures> + <fact-data> + <type>Applicant</type> + <name>a</name> + <fieldData> + <field-data> + <name>age</name> + <value>17</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>LoanApplication</type> + <name>application</name> + <fieldData> + <field-data> + <name>amount</name> + <value>1</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>7</executionTimeResult> + <numberOfRulesFired>1</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>false</expected> + <actualResult></actualResult> + <successResult>true</successResult> + <explanation>[application] field [approved] was [false].</explanation> + <operator>==</operator> + </expect-field> + <expect-field> + <fieldName>explanation</fieldName> + <expected>Underage</expected> + <actualResult></actualResult> + <successResult>true</successResult> + <explanation>[application] field [explanation] was [Underage].</explanation> + <operator>==</operator> + </expect-field> + </fieldValues> + <name>application</name> + <anonymous>false</anonymous> + </expect-fact> + </fixtures> + <lastRunResult>2008-09-30 11:49:15.315 EST</lastRunResult> + <rules/> + <inclusive>false</inclusive> +</scenario> + + + + + + mic + + + Test really basic validation, common sense stuff + + + false + + + scenario + + + mic + + + 2008-09-30T11:51:04.746+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Are they old enough + + + + + + 4 + + + d7531227-88e8-4016-b2f6-cf2540bbf290 + + + 2010-06-01T01:52:53.306+08:00 + + + admin + + + true + + + d7531227-88e8-4016-b2f6-cf2540bbf290 + + + 2f9a8d30-0671-4a3e-9f62-cedbfce18d21 + + + + + drools:assetNodeType + + + db3e1db3-8046-475c-ae43-7bb9997d016a + + + false + + + 96f4f6c2-01f9-445f-b773-6a7c5f77fa0b + + + + + + <scenario> + <maxRuleFirings>100000</maxRuleFirings> + <globals/> + <fixtures> + <fact-data> + <type>LoanApplication</type> + <name>application</name> + <fieldData/> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>Bankruptcy</type> + <name>bankruptcy</name> + <fieldData> + <field-data> + <name>yearOfOccurrence</name> + <value>1991</value> + </field-data> + <field-data> + <name>amountOwed</name> + <value>9000</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>Bankruptcy</type> + <name>moreBankruptcy</name> + <fieldData> + <field-data> + <name>yearOfOccurrence</name> + <value>1988</value> + </field-data> + <field-data> + <name>amountOwed</name> + <value>5000</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>0</executionTimeResult> + <numberOfRulesFired>2</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>false</expected> + <actualResult></actualResult> + <successResult>true</successResult> + <explanation>[application] field [approved] was [false].</explanation> + <operator>==</operator> + </expect-field> + <expect-field> + <fieldName>explanation</fieldName> + <expected>has been bankrupt</expected> + <actualResult>has been bankrupt</actualResult> + <successResult>true</successResult> + <explanation>[application] field [explanation] was [has been bankrupt].</explanation> + <operator>==</operator> + </expect-field> + </fieldValues> + <name>application</name> + <anonymous>false</anonymous> + </expect-fact> + <retract-fact> + <name>moreBankruptcy</name> + </retract-fact> + <fact-data> + <type>Bankruptcy</type> + <name>bankruptcy</name> + <fieldData> + <field-data> + <name>yearOfOccurrence</name> + <value>1980</value> + </field-data> + <field-data> + <name>amountOwed</name> + <value>100000</value> + </field-data> + </fieldData> + <isModify>true</isModify> + </fact-data> + <fact-data> + <type>LoanApplication</type> + <name>application2</name> + <fieldData/> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>0</executionTimeResult> + <numberOfRulesFired>1</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>false</expected> + <successResult>true</successResult> + <explanation>[application2] field [approved] was [false].</explanation> + <operator>==</operator> + </expect-field> + </fieldValues> + <name>application2</name> + <anonymous>false</anonymous> + </expect-fact> + </fixtures> + <lastRunResult>2008-10-01 10:18:15.949 EST</lastRunResult> + <rules/> + <inclusive>false</inclusive> +</scenario> + + + + + + mic + + + We don't want bankrupt people since 1990, or if their amount was over a certain amount + + + false + + + scenario + + + mic + + + 2008-10-01T10:20:53.588+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + No bankruptcies + + + + + + 5 + + + 155baa66-4c92-4ecb-814d-b42f3d7491f2 + + + 2010-06-01T01:52:53.322+08:00 + + + admin + + + true + + + 155baa66-4c92-4ecb-814d-b42f3d7491f2 + + + 2e1d9abf-7589-480d-988d-9d758e379f76 + + + + + drools:assetNodeType + + + f69de598-a54b-4721-b60d-d40b60eb4275 + + + true + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + Archived Item on Wed Oct 01 12:54:56 GMT+1000 2008 + + + <rule> + <name>Bankruptcies</name> + <modelVersion>1.0</modelVersion> + <attributes/> + <lhs> + <compositePattern> + <type>exists</type> + <patterns> + <fact> + <constraintList> + <constraints> + <fieldConstraint> + <value>1990</value> + <constraintValueType>1</constraintValueType> + <fieldName>yearOfOccurrence</fieldName> + <operator>&gt;</operator> + <fieldType>Numeric</fieldType> + </fieldConstraint> + </constraints> + </constraintList> + <factType>Bankruptcy</factType> + </fact> + </patterns> + </compositePattern> + </lhs> + <rhs/> +</rule> + + + + + + mic + + + + + + false + + + brl + + + mic + + + 2008-10-01T12:54:56.805+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Bankruptcies + + + + + + 2 + + + e6d2fa15-cb0b-42d0-9b55-7f13f4721f76 + + + 2010-06-01T01:52:53.338+08:00 + + + admin + + + true + + + e6d2fa15-cb0b-42d0-9b55-7f13f4721f76 + + + da0787b2-7f34-4043-8464-7714ed3b5115 + + + + + drools:assetNodeType + + + 65fac523-17ac-4d82-a8df-199a21a832e6 + + + false + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + + + + <rule> + <name>Bankruptcy history</name> + <modelVersion>1.0</modelVersion> + <attributes> + <attribute> + <attributeName>salience</attributeName> + <value>10</value> + </attribute> + </attributes> + <lhs> + <fact> + <factType>LoanApplication</factType> + <boundName>a</boundName> + </fact> + <compositePattern> + <type>exists</type> + <patterns> + <fact> + <constraintList> + <constraints> + <compositeConstraint> + <compositeJunctionType>||</compositeJunctionType> + <constraints> + <fieldConstraint> + <value>1990</value> + <constraintValueType>1</constraintValueType> + <fieldName>yearOfOccurrence</fieldName> + <operator>&gt;</operator> + <fieldType></fieldType> + </fieldConstraint> + <fieldConstraint> + <value>10000</value> + <constraintValueType>1</constraintValueType> + <fieldName>amountOwed</fieldName> + <operator>&gt;</operator> + <fieldType></fieldType> + </fieldConstraint> + </constraints> + </compositeConstraint> + </constraints> + </constraintList> + <factType>Bankruptcy</factType> + </fact> + </patterns> + </compositePattern> + </lhs> + <rhs> + <setField> + <fieldValues> + <fieldValue> + <field>approved</field> + <value>false</value> + <type>Boolean</type> + </fieldValue> + <fieldValue> + <field>explanation</field> + <value>has been bankrupt</value> + <type>String</type> + </fieldValue> + </fieldValues> + <variable>a</variable> + </setField> + <retract> + <variableName>a</variableName> + </retract> + </rhs> +</rule> + + + + + + mic + + + + + + false + + + brl + + + mic + + + 2008-10-01T12:55:07.598+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Bankruptcy history + + + + + + 3 + + + 425c5131-a8fa-4d42-8e42-5766800d313f + + + 2010-06-01T01:52:53.369+08:00 + + + admin + + + true + + + 425c5131-a8fa-4d42-8e42-5766800d313f + + + 5d7ef7b4-6c97-4e8a-b5dd-1db9e663a175 + + + + + drools:assetNodeType + + + 7daa9681-bb0c-4947-87da-c0b6344e5d3c + + + false + + + + + + + 'Applicant.creditRating': ['AA', 'OK', 'Sub prime'] + + + + + + mic + + + An enumeration is a mapping from fields to a list of values.This will mean the rule editor will show a drop down for fields, instead of a text box.The format of this is: 'FactType.fieldName': ['Value1', 'Value2'] +You can add more mappings by adding in more lines. +For example: + +'Person.sex' : ['M', 'F'] +'Person.rating' : ['High', 'Low'] + +You can also ad display aliases (so the value used in the rule is separate to the one displayed: +'Person.sex' : ['M=Male', 'F=Female'] +in the above case, the 'M=Male' means that 'Male' will be displayed as an item in a drop down box, but the value 'M' will be used in the rule. + + + false + + + enumeration + + + mic + + + 2008-10-01T10:26:35.668+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + credit ratings + + + + + + 1 + + + 21580346-1fc2-4908-9015-a5b4bd265ef7 + + + 2010-06-01T01:52:53.384+08:00 + + + admin + + + true + + + 21580346-1fc2-4908-9015-a5b4bd265ef7 + + + b2ec7722-5608-4188-a222-4bd400cffed4 + + + + + drools:assetNodeType + + + 4c0cf2ae-e3ff-406d-bf52-aa5f482177e9 + + + false + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + + + + <rule> + <name>No bad credit checks</name> + <modelVersion>1.0</modelVersion> + <attributes> + <attribute> + <attributeName>salience</attributeName> + <value>10</value> + </attribute> + </attributes> + <lhs> + <fact> + <factType>LoanApplication</factType> + <boundName>app</boundName> + </fact> + <compositePattern> + <type>or</type> + <patterns> + <fact> + <constraintList> + <constraints> + <fieldConstraint> + <value>OK</value> + <constraintValueType>1</constraintValueType> + <fieldName>creditRating</fieldName> + <operator>==</operator> + <fieldType>String</fieldType> + </fieldConstraint> + </constraints> + </constraintList> + <factType>Applicant</factType> + </fact> + <fact> + <constraintList> + <constraints> + <fieldConstraint> + <value>Sub prime</value> + <constraintValueType>1</constraintValueType> + <fieldName>creditRating</fieldName> + <operator>==</operator> + <fieldType>String</fieldType> + </fieldConstraint> + </constraints> + </constraintList> + <factType>Applicant</factType> + </fact> + </patterns> + </compositePattern> + </lhs> + <rhs> + <setField> + <fieldValues> + <fieldValue> + <field>approved</field> + <value>false</value> + <type>Boolean</type> + </fieldValue> + <fieldValue> + <field>explanation</field> + <value>Only AA</value> + <type>String</type> + </fieldValue> + </fieldValues> + <variable>app</variable> + </setField> + <retract> + <variableName>app</variableName> + </retract> + </rhs> +</rule> + + + + + + mic + + + + + + false + + + brl + + + mic + + + 2008-10-01T12:55:21.006+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + No bad credit checks + + + + + + 7 + + + 7d328de0-da5c-47c5-a605-c3b645059c62 + + + 2010-06-01T01:52:53.400+08:00 + + + admin + + + true + + + 7d328de0-da5c-47c5-a605-c3b645059c62 + + + 286c6b06-d230-41a0-bc06-7a8b6102f1a6 + + + + + drools:assetNodeType + + + 6d31f623-2e63-4187-9333-235b3ae0e894 + + + false + + + 96f4f6c2-01f9-445f-b773-6a7c5f77fa0b + + + + + + <scenario> + <maxRuleFirings>100000</maxRuleFirings> + <globals/> + <fixtures> + <fact-data> + <type>Applicant</type> + <name>a</name> + <fieldData> + <field-data> + <name>creditRating</name> + <value>OK</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>LoanApplication</type> + <name>app</name> + <fieldData> + <field-data> + <name>approved</name> + <value>false</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>7</executionTimeResult> + <numberOfRulesFired>1</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>false</expected> + <successResult>true</successResult> + <explanation>[app] field [approved] was [false].</explanation> + <operator>==</operator> + </expect-field> + <expect-field> + <fieldName>explanation</fieldName> + <expected>Only AA</expected> + <successResult>true</successResult> + <explanation>[app] field [explanation] was [Only AA].</explanation> + <operator>==</operator> + </expect-field> + </fieldValues> + <name>app</name> + <anonymous>false</anonymous> + </expect-fact> + </fixtures> + <lastRunResult>2008-10-01 12:43:32.318 EST</lastRunResult> + <rules/> + <inclusive>false</inclusive> +</scenario> + + + + + + mic + + + Obviously we only want people who can pay stuff back + + + false + + + scenario + + + mic + + + 2008-10-01T12:43:41.518+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Good credit history only + + + + + + 3 + + + fd3dfeea-bcd2-4c08-8b8d-b8769b7ed2b3 + + + 2010-06-01T01:52:53.416+08:00 + + + admin + + + true + + + fd3dfeea-bcd2-4c08-8b8d-b8769b7ed2b3 + + + 20c2c6bb-2827-4dae-9a43-0bd96ebb4743 + + + + + drools:assetNodeType + + + 061cedf0-a57f-497d-95e5-b134232f1ffd + + + false + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + + + + <rule> + <name>no NINJAs</name> + <modelVersion>1.0</modelVersion> + <attributes> + <attribute> + <attributeName>salience</attributeName> + <value>10</value> + </attribute> + </attributes> + <lhs> + <fact> + <factType>LoanApplication</factType> + <boundName>app</boundName> + </fact> + <compositePattern> + <type>not</type> + <patterns> + <fact> + <factType>IncomeSource</factType> + </fact> + </patterns> + </compositePattern> + </lhs> + <rhs> + <setField> + <fieldValues> + <fieldValue> + <field>approved</field> + <value>false</value> + <type>Boolean</type> + </fieldValue> + <fieldValue> + <field>explanation</field> + <value>no NINJAs</value> + <type>String</type> + </fieldValue> + </fieldValues> + <variable>app</variable> + </setField> + <retract> + <variableName>app</variableName> + </retract> + </rhs> +</rule> + + + + + + mic + + + No ninjas ! + + + false + + + brl + + + mic + + + 2008-10-02T07:32:16.977+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + no NINJAs + + + + + + 4 + + + c1acf6bc-129e-4912-af99-29573f140394 + + + 2010-06-01T01:52:53.462+08:00 + + + admin + + + true + + + c1acf6bc-129e-4912-af99-29573f140394 + + + fe0cc89b-5e4c-4390-be82-451ecc53ac31 + + + + + drools:assetNodeType + + + 788b6d67-37a5-4b57-a2ad-c7784040fc0a + + + false + + + 96f4f6c2-01f9-445f-b773-6a7c5f77fa0b + + + + + + <scenario> + <maxRuleFirings>100000</maxRuleFirings> + <globals/> + <fixtures> + <fact-data> + <type>LoanApplication</type> + <name>app</name> + <fieldData/> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>Applicant</type> + <name>applicant</name> + <fieldData/> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>0</executionTimeResult> + <numberOfRulesFired>1</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>false</expected> + <successResult>true</successResult> + <explanation>[app] field [approved] was [false].</explanation> + <operator>==</operator> + </expect-field> + <expect-field> + <fieldName>explanation</fieldName> + <expected>no NINJAs</expected> + <actualResult>no NINJAs</actualResult> + <successResult>true</successResult> + <explanation>[app] field [explanation] was [no NINJAs].</explanation> + <operator>==</operator> + </expect-field> + </fieldValues> + <name>app</name> + <anonymous>false</anonymous> + </expect-fact> + </fixtures> + <lastRunResult>2008-10-01 12:47:29.730 EST</lastRunResult> + <rules/> + <inclusive>false</inclusive> +</scenario> + + + + + + mic + + + + + + false + + + scenario + + + mic + + + 2008-10-01T12:47:32.301+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + NINJAs + + + + + + 2 + + + d06c362f-8a93-4f72-8fa4-69804ca508a4 + + + 2010-06-01T01:52:53.494+08:00 + + + admin + + + true + + + d06c362f-8a93-4f72-8fa4-69804ca508a4 + + + 68687879-9c5e-4a57-bf57-17f65e3b5aa5 + + + + + drools:assetNodeType + + + 680d227d-4653-4bd8-9a4a-bc75b80b3b82 + + + false + + + 9be50562-7549-4e68-a6c0-42222781bde9 + + + + + + <decision-table> + <tableName>Pricing loans</tableName> + <attributeCols/> + <conditionCols> + <condition-column> + <width>96</width> + <header>amount min</header> + <factType>LoanApplication</factType> + <boundName>application</boundName> + <constraintValueType>1</constraintValueType> + <factField>amount</factField> + <operator>&gt;</operator> + </condition-column> + <condition-column> + <width>104</width> + <header>amount max</header> + <factType>LoanApplication</factType> + <boundName>application</boundName> + <constraintValueType>1</constraintValueType> + <factField>amount</factField> + <operator>&lt;=</operator> + </condition-column> + <condition-column> + <width>81</width> + <header>period</header> + <factType>LoanApplication</factType> + <boundName>application</boundName> + <constraintValueType>1</constraintValueType> + <factField>lengthYears</factField> + <operator>==</operator> + <valueList>20, 25, 30</valueList> + </condition-column> + <condition-column> + <width>-1</width> + <header>income</header> + <factType>IncomeSource</factType> + <boundName>income</boundName> + <constraintValueType>1</constraintValueType> + <factField>type</factField> + <operator>==</operator> + <valueList>Job, Asset</valueList> + </condition-column> + <condition-column> + <width>-1</width> + <header>deposit max</header> + <factType>LoanApplication</factType> + <boundName>application</boundName> + <constraintValueType>1</constraintValueType> + <factField>deposit</factField> + <operator>&lt;</operator> + </condition-column> + </conditionCols> + <actionCols> + <set-field-col> + <width>-1</width> + <header>Loan approved</header> + <boundName>application</boundName> + <factField>approved</factField> + <type>Boolean</type> + <valueList>true, false</valueList> + </set-field-col> + <set-field-col> + <width>-1</width> + <header>LMI</header> + <boundName>application</boundName> + <factField>insuranceCost</factField> + <type>Numeric</type> + </set-field-col> + <set-field-col> + <width>-1</width> + <header>rate</header> + <boundName>application</boundName> + <factField>approvedRate</factField> + <type>Numeric</type> + </set-field-col> + </actionCols> + <data> + <string-array> + <string>3</string> + <null/> + <string>131000</string> + <string>200000</string> + <string>30</string> + <string>Asset</string> + <string>20000</string> + <string>true</string> + <string>0</string> + <string>2</string> + </string-array> + <string-array> + <string>1</string> + <null/> + <string>10000</string> + <string>100000</string> + <string>20</string> + <string>Job</string> + <string>2000</string> + <string>true</string> + <string>0</string> + <string>4</string> + </string-array> + <string-array> + <string>2</string> + <null/> + <string>100001</string> + <string>130000</string> + <string>20</string> + <string>Job</string> + <string>3000</string> + <string>true</string> + <string>10</string> + <string>6</string> + </string-array> + </data> + <descriptionWidth>25</descriptionWidth> + <groupField>income</groupField> +</decision-table> + + + + + + mic + + + + + + false + + + gdst + + + mic + + + 2008-10-01T13:46:07.232+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Pricing loans + + + + + + 9 + + + a131b908-2613-4679-8865-49b8f14b16df + + + 2010-06-01T01:52:53.525+08:00 + + + admin + + + true + + + a131b908-2613-4679-8865-49b8f14b16df + + + f0062800-6375-4222-a298-1ff681a40c2e + + + + + drools:assetNodeType + + + 8c26a963-e477-4b30-b931-c3d2322829a5 + + + false + + + 96f4f6c2-01f9-445f-b773-6a7c5f77fa0b + + + + + + <scenario> + <maxRuleFirings>100000</maxRuleFirings> + <globals/> + <fixtures> + <fact-data> + <type>IncomeSource</type> + <name>income</name> + <fieldData> + <field-data> + <name>type</name> + <value>Job</value> + </field-data> + <field-data> + <name>amount</name> + <value>65000</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <fact-data> + <type>LoanApplication</type> + <name>application</name> + <fieldData> + <field-data> + <name>amount</name> + <value>25000</value> + </field-data> + <field-data> + <name>deposit</name> + <value>1500</value> + </field-data> + <field-data> + <name>lengthYears</name> + <value>20</value> + </field-data> + </fieldData> + <isModify>false</isModify> + </fact-data> + <execution-trace> + <executionTimeResult>0</executionTimeResult> + <numberOfRulesFired>1</numberOfRulesFired> + </execution-trace> + <expect-fact> + <fieldValues> + <expect-field> + <fieldName>approved</fieldName> + <expected>true</expected> + <actualResult></actualResult> + <successResult>true</successResult> + <explanation>[application] field [approved] was [true].</explanation> + <operator>==</operator> + </expect-field> + <expect-field> + <fieldName>insuranceCost</fieldName> + <expected>0</expected> + <actualResult></actualResult> + <successResult>true</successResult> + <explanation>[application] field [insuranceCost] was [0].</explanation> + <operator>==</operator> + </expect-field> + <expect-field> + <fieldName>approvedRate</fieldName> + <expected>4</expected> + <successResult>true</successResult> + <explanation>[application] field [approvedRate] was [4].</explanation> + <operator>==</operator> + </expect-field> + </fieldValues> + <name>application</name> + <anonymous>false</anonymous> + </expect-fact> + </fixtures> + <lastRunResult>2008-10-01 13:46:20.746 EST</lastRunResult> + <rules/> + <inclusive>false</inclusive> +</scenario> + + + + + + mic + + + + + + false + + + scenario + + + mic + + + 2008-10-01T14:19:04.309+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Pricing low end + + + + + + 3 + + + 7a5b47f5-e942-4556-a692-05173058e2b7 + + + 2010-06-01T01:52:53.540+08:00 + + + admin + + + true + + + 7a5b47f5-e942-4556-a692-05173058e2b7 + + + bdede786-c7c7-4c15-b58f-0f6c2b7a9688 + + + + + drools:assetNodeType + + + 11c1645e-cb92-4e52-8569-35fccf40dbd5 + + + true + + + 0554b023-d7a5-4b63-83f8-2bee32424351 + + + Archived Item on Wed Oct 01 13:54:23 GMT+1000 2008 + + + salience -1 +when + app: LoanApplication(approved == null) +then + app.setApproved(false); + + + + + + mic + + + + + + false + + + drl + + + mic + + + 2008-10-01T13:54:23.662+10:00 + + + mortgages + + + + + + + + + + + + + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + + + + Unapprove by default + + + + + + 3 + + + 0172e07c-9476-4b3b-8f00-278234864897 + + + 2010-06-01T01:52:53.603+08:00 + + + admin + + + true + + + 0172e07c-9476-4b3b-8f00-278234864897 + + + 987fd08a-b66d-4e6f-ade8-617a91c75d2b + + + + + drools:assetNodeType + + + 143c1d79-4844-42fc-a332-e9e250a179b8 + + + false + + + 0554b023-d7a5-4b63-83f8-2bee32424351 + + + Initial + + + when + #conditions +then + #actions + + + mic + + + + + + drl + + + 2008-10-02T11:23:51.322+10:00 + + + mortgages + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + Dummy rule + + + e420a592-de9b-4dd2-8e2f-2e8d4c14b478 + + + 2010-06-01T01:52:53.618+08:00 + + + admin + + + true + + + e420a592-de9b-4dd2-8e2f-2e8d4c14b478 + + + 08c85eb9-d768-42b8-91aa-1f505e367ab7 + + + + + + + + + nt:folder + + + 2010-06-01T01:52:53.650+08:00 + + + admin + + + + drools:categoryNodeType + + + 89aeb935-56e3-4a83-9e74-a368f02a512c + + + 2010-06-01T01:52:53.650+08:00 + + + admin + + + + drools:categoryNodeType + + + 62b38072-6698-41d5-862c-911d1a7c4bdd + + + 2010-06-01T01:52:53.650+08:00 + + + admin + + + + + drools:categoryNodeType + + + 9be50562-7549-4e68-a6c0-42222781bde9 + + + 2010-06-01T01:52:53.650+08:00 + + + admin + + + + + drools:categoryNodeType + + + 96f4f6c2-01f9-445f-b773-6a7c5f77fa0b + + + 2010-06-01T01:52:53.650+08:00 + + + admin + + + + + drools:categoryNodeType + + + 0554b023-d7a5-4b63-83f8-2bee32424351 + + + 2010-06-01T01:52:53.650+08:00 + + + admin + + + + + + drools:categoryNodeType + + + 359a278b-78e8-49c6-a562-a24d4b25419f + + + 2010-06-01T01:52:53.650+08:00 + + + admin + + + + + + nt:folder + + + 2010-06-01T01:52:53.650+08:00 + + + admin + + + + drools:stateNodeType + + + 7339b210-2abd-4f79-9081-0d00af756040 + + + 2010-06-01T01:52:53.650+08:00 + + + admin + + + + + + nt:folder + + + 2010-06-01T01:52:53.650+08:00 + + + admin + + + + + nt:folder + + + 2010-06-01T01:52:53.650+08:00 + + + admin + + + + nt:folder + + + 2010-06-01T01:52:53.650+08:00 + + + admin + + + + nt:file + + + 2010-06-01T01:52:53.650+08:00 + + + admin + + + + nt:unstructured + + + <inbox-entries> + <entry> + <from>self</from> + <assetUUID>c5aba078-814e-4ce9-8ee3-511633d7a209</assetUUID> + <note>MyDSL</note> + <timestamp>1260865626607</timestamp> + </entry> + <entry> + <from>self</from> + <assetUUID>b6f19a1c-fd9e-4158-a5f2-3291316fd352</assetUUID> + <note>A DSL rule</note> + <timestamp>1260865626654</timestamp> + </entry> + <entry> + <from>self</from> + <assetUUID>dfd09c64-d31a-4a6f-adbb-069f3cf1060e</assetUUID> + <note>another go</note> + <timestamp>1260865626685</timestamp> + </entry> + <entry> + <from>self</from> + <assetUUID>4b532c0d-3c5f-490f-9db9-01bbbe555148</assetUUID> + <note>drools</note> + <timestamp>1260865626717</timestamp> + </entry> +</inbox-entries> + + + + + + + nt:folder + + + 2010-06-01T01:52:53.650+08:00 + + + admin + + + + nt:file + + + 2010-06-01T01:52:53.650+08:00 + + + admin + + + + nt:unstructured + + + + + + + + + + nt:folder + + + 2010-06-01T01:52:53.650+08:00 + + + admin + + + + nt:file + + + 2010-06-01T01:52:53.650+08:00 + + + admin + + + + nt:unstructured + + + <inbox-entries/> + + + <inbox-entries> + <entry> + <from>self</from> + <assetUUID>2ebe06cf-684d-4586-ae1c-6502f2a1adb7</assetUUID> + <note>Are they old enough</note> + <timestamp>1274902064863</timestamp> + </entry> + <entry> + <from>self</from> + <assetUUID>5e810512-d255-4836-b33c-855e64b07660</assetUUID> + <note>Good credit history only</note> + <timestamp>1274902081248</timestamp> + </entry> + <entry> + <from>self</from> + <assetUUID>bbd05bf9-f7ee-432a-973d-d1d4092fa039</assetUUID> + <note>CheckBoxDslRule</note> + <timestamp>1275328434032</timestamp> + </entry> +</inbox-entries> + + + <inbox-entries> + <entry> + <from>self</from> + <assetUUID>968c9b3c-bc19-40ba-bb38-44435956ccee</assetUUID> + <note>Bankruptcy history</note> + <timestamp>1274902031770</timestamp> + </entry> + <entry> + <from>self</from> + <assetUUID>2ebe06cf-684d-4586-ae1c-6502f2a1adb7</assetUUID> + <note>Are they old enough</note> + <timestamp>1274902064888</timestamp> + </entry> + <entry> + <from>self</from> + <assetUUID>5e810512-d255-4836-b33c-855e64b07660</assetUUID> + <note>Good credit history only</note> + <timestamp>1274902081334</timestamp> + </entry> + <entry> + <from>self</from> + <assetUUID>bbd05bf9-f7ee-432a-973d-d1d4092fa039</assetUUID> + <note>CheckBoxDslRule</note> + <timestamp>1275328414626</timestamp> + </entry> +</inbox-entries> + + + + + + Index: modeshape-integration-tests/src/test/resources/io/drools/tag_node_type.cnd new file mode 100644 =================================================================== --- /dev/null (revision 2528) +++ modeshape-integration-tests/src/test/resources/io/drools/tag_node_type.cnd (working copy) @@ -0,0 +1,21 @@ +/* The node type definition for the tag node type. + See http://jackrabbit.apache.org/doc/nodetype/cnd.html for an explanation +*/ + +// The namespace declaration + + + + +// Node type name +[drools:categoryNodeType] + +// Supertypes +> 'nt:hierarchyNode','mix:referenceable' + +// Nodes of this node type have a child node called anything which must be of +// at least the node type drools:categoryNodeType ++ * (drools:categoryNodeType) + +// and the default primary node type of the child node is... += drools:categoryNodeType Index: modeshape-integration-tests/src/test/resources/io/drools/versionable_asset_folder_node_type.cnd new file mode 100644 =================================================================== --- /dev/null (revision 2528) +++ modeshape-integration-tests/src/test/resources/io/drools/versionable_asset_folder_node_type.cnd (working copy) @@ -0,0 +1,20 @@ +/* The node type definition for the rule node type. + See http://jackrabbit.apache.org/doc/nodetype/cnd.html for an explanation + + This is used for folders that hold versionable assets, such as rules. +*/ + +// The namespace declaration + + + + +// Node type name +[drools:versionableAssetFolder] + +// Supertypes +> 'nt:folder','mix:versionable' + +// what it contains ++ * (drools:versionableNodeType) + ignore \ No newline at end of file Index: modeshape-integration-tests/src/test/resources/io/drools/versionable_node_type.cnd new file mode 100644 =================================================================== --- /dev/null (revision 2528) +++ modeshape-integration-tests/src/test/resources/io/drools/versionable_node_type.cnd (working copy) @@ -0,0 +1,56 @@ +/* The node type definition for the rule node type. + See http://jackrabbit.apache.org/doc/nodetype/cnd.html for an explanation + + See the Dublin Core documentation for more explanation: http://dublincore.org/documents/dces/ +*/ + +// The namespace declaration + + + + +// Node type name +[drools:versionableNodeType] + +// Supertypes +> 'nt:hierarchyNode','mix:versionable' + +// Properties (some are from Dublin Core): +- drools:title (string) + mandatory + +- drools:lastModified (date) + mandatory + +- drools:lastContributor (string) + = '' +- drools:creator (string) +- drools:type (string) +- drools:source (string) +- drools:subject (string) +- drools:relation (string) +- drools:rights (string) +- drools:coverage (string) +- drools:publisher (string) + + +- drools:description (string) + mandatory + +- drools:format (string) + mandatory + +//for incrementing (or user defined) unique version numbers +- drools:versionNumber (long) + +//to remember when it was created +- drools:createdDate (date) + +- drools:checkinComment (string) + + +//for approval/workflow/lifecycle +- drools:stateReference (reference) + copy + < 'drools:stateNodeType' + \ No newline at end of file Index: modeshape-jcr/src/test/java/org/modeshape/jcr/AbstractSessionTest.java =================================================================== --- modeshape-jcr/src/test/java/org/modeshape/jcr/AbstractSessionTest.java (revision 2528) +++ modeshape-jcr/src/test/java/org/modeshape/jcr/AbstractSessionTest.java (working copy) @@ -54,6 +54,7 @@ import org.modeshape.graph.property.NamespaceRegistry; import org.modeshape.graph.property.Path; import org.modeshape.graph.property.PathFactory; import org.modeshape.graph.query.parse.QueryParsers; +import org.modeshape.jcr.api.Repository; import org.modeshape.jcr.query.JcrSql2QueryParser; import org.modeshape.jcr.xpath.XPathQueryParser; @@ -192,6 +193,10 @@ public abstract class AbstractSessionTest { // Create the session and log in ... session = (JcrSession)workspace.getSession(); registry = session.getExecutionContext().getNamespaceRegistry(); + + // Set descriptors ... + when(repository.getDescriptorValue(Repository.OPTION_LIFECYCLE_SUPPORTED)).thenReturn(value(true)); + when(repository.getDescriptorValue(Repository.OPTION_RETENTION_SUPPORTED)).thenReturn(value(true)); } @SuppressWarnings( "unused" ) @@ -207,7 +212,10 @@ public abstract class AbstractSessionTest { // Stub out the repository options ... options = new EnumMap(JcrRepository.Option.class); options.put(JcrRepository.Option.PROJECT_NODE_TYPES, Boolean.FALSE.toString()); + } + protected JcrValue value( boolean value ) { + return (JcrValue)session.getValueFactory().createValue(true); } @SuppressWarnings( "deprecation" ) Index: modeshape-jcr/src/test/java/org/modeshape/jcr/JcrImportExportTest.java =================================================================== --- modeshape-jcr/src/test/java/org/modeshape/jcr/JcrImportExportTest.java (revision 2528) +++ modeshape-jcr/src/test/java/org/modeshape/jcr/JcrImportExportTest.java (working copy) @@ -506,6 +506,25 @@ public class JcrImportExportTest { } // ---------------------------------------------------------------------------------------------------------------- + // Import System View WITH constraints + // ---------------------------------------------------------------------------------------------------------------- + + @Test + public void shouldImportSystemViewWithReferenceConstraints() throws Exception { + // Set up the repository ... + assertImport("io/full-workspace-document-view-with-uuids.xml", "/", ImportBehavior.THROW); // no matching UUIDs expected + assertNode("/a/b/Cars"); + assertNode("/a/b/Cars/Hybrid"); + assertNode("/a/b/Cars/Hybrid/Toyota Prius"); + assertNode("/a/b/Cars/Sports/Infiniti G37"); + assertNode("/a/b/Cars/Utility/Land Rover LR3"); + assertNoNode("/a/b/Cars[2]"); + assertNoNode("/a/b/Cars/Hybrid[2]"); + assertNoNode("/a/b/Cars/Hybrid/Toyota Prius[2]"); + assertNoNode("/a/b/Cars/Sports[2]"); + } + + // ---------------------------------------------------------------------------------------------------------------- // Utilities // ----------------------------------------------------------------------------------------------------------------