Index: modeshape-integration-tests/src/test/java/org/modeshape/test/integration/JcrImportExportIntegrationTest.java =================================================================== --- modeshape-integration-tests/src/test/java/org/modeshape/test/integration/JcrImportExportIntegrationTest.java (revision 2552) +++ modeshape-integration-tests/src/test/java/org/modeshape/test/integration/JcrImportExportIntegrationTest.java (working copy) @@ -23,6 +23,11 @@ */ package org.modeshape.test.integration; +import static org.hamcrest.core.Is.is; +import static org.junit.Assert.assertThat; +import javax.jcr.Node; +import javax.jcr.Property; +import javax.jcr.PropertyType; import org.junit.Test; import org.modeshape.common.FixFor; @@ -35,8 +40,28 @@ public class JcrImportExportIntegrationTest extends AbstractAdHocModeShapeTest { assertNode("/", "mode:root"); // import the file ... importContent(getClass(), "io/drools/systemViewImport.xml"); + session().refresh(false); // Verify the file was imported ... - // assertNode("/drools:repository", "nt:folder"); + assertNode("/drools:repository", "nt:folder"); + } + + @FixFor( "MODE-1026" ) + @Test + public void shouldBeAbleToImportFileWithValuesDefinedByXsiTypeAttributes() throws Exception { + startEngine("config/configRepositoryForDroolsImportExport.xml", "Repo"); + assertNode("/", "mode:root"); + // import the file ... + importContent(getClass(), "io/drools/mortgage-sample-repository.xml"); + session().refresh(false); + // Verify the file was imported ... + assertNode("/drools:repository", "nt:folder"); + assertNode("/drools:repository/drools:package_area", "nt:folder"); + assertNode("/drools:repository/drools:package_area/mortgages", "drools:packageNodeType"); + assertNode("/drools:repository/drools:package_area/mortgages/assets", "drools:versionableAssetFolder"); + Node dsl = assertNode("/drools:repository/drools:package_area/mortgages/assets/ApplicantDsl", "drools:assetNodeType"); + Property property = dsl.getProperty("drools:content"); + assertThat(property.getType(), is(PropertyType.STRING)); + assertThat(property.getValue().getString().startsWith("[when]"), is(true)); } } Index: modeshape-integration-tests/src/test/resources/io/drools/mortgage-sample-repository.xml new file mode 100644 =================================================================== --- /dev/null (revision 2552) +++ modeshape-integration-tests/src/test/resources/io/drools/mortgage-sample-repository.xml (working copy) @@ -0,0 +1,2405 @@ +nt:folder2010-06-01T01:52:52.090+08:00adminnt:folder2010-06-01T01:52:52.090+08:00admindrools:packageNodeTypefae2b929-c5ef-4ce5-9fa1-514779ca0ae3falsetrueInitialrO0ABXNyABdvcmcuZHJvb2xzLnJ1bGUuUGFja2FnZQAAAAAAAAGQDAAAeHBzcgAmb3JnLmRyb29scy5ydWxlLkRpYWxlY3RSdW50aW1lUmVnaXN0cnkf4nrpqWIPIAwAAHhwc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAJ0AARqYXZhc3IAJm9yZy5kcm9vbHMucnVsZS5KYXZhRGlhbGVjdFJ1bnRpbWVEYXRhAAAAAAAAAZAMAAB4cHcIAAAAAAAAAAB4dAAEbXZlbHNyACZvcmcuZHJvb2xzLnJ1bGUuTVZFTERpYWxlY3RSdW50aW1lRGF0YeWjZyTO2TkODAAAeHBzcgAZamF2YS51dGlsLklkZW50aXR5SGFzaE1hcHGiZQEz8umAAwABSQAEc2l6ZXhwAAAAAHcEAAAAAHh4eHB4c3EAfgAEP0AAAAAAAAx3CAAAABAAAAAAeHQADmRlZmF1bHRQYWNrYWdlc3EAfgAEP0AAAAAAAAx3CAAAABAAAAABdAAQZGVmYXVsdFBhY2thZ2UuKnNyACFvcmcuZHJvb2xzLnJ1bGUuSW1wb3J0RGVjbGFyYXRpb25Y9QI+83vcJgwAAHhwcQB+ABF4eHNyAB5qYXZhLnV0aWwuQ29sbGVjdGlvbnMkRW1wdHlTZXQV9XIdtAPLKAIAAHhwc3IAHmphdmEudXRpbC5Db2xsZWN0aW9ucyRFbXB0eU1hcFk2FIVa3OfQAgAAeHBxAH4AF3EAfgAXcQB+ABd3AQFzcgAXamF2YS51dGlsLkxpbmtlZEhhc2hNYXA0wE5cEGzA+wIAAVoAC2FjY2Vzc09yZGVyeHEAfgAEP0AAAAAAAAx3CAAAABAAAAAAeABzcgAnb3JnLmRyb29scy5iYXNlLkNsYXNzRmllbGRBY2Nlc3NvclN0b3JlAAAAAAAAAZAMAAB4cHNxAH4ABD9AAAAAAAAMdwgAAAAQAAAAAHh4eA==micThe default rule packagepackagemic2010-06-01T01:53:06.208+08:00defaultPackage1a26e20aa-7d7b-403f-8155-0c2a7c2e1d332010-06-01T01:52:52.090+08:00admintruea26e20aa-7d7b-403f-8155-0c2a7c2e1d33bd1c028d-486a-4611-82eb-990f46110234drools:versionableAssetFolder023ae3a1-55be-4a9b-a7a8-524743f9bdd5cc6ce987-ab8c-4ccc-88ac-880cf52ec99f2010-06-01T01:52:52.105+08:00admintruecc6ce987-ab8c-4ccc-88ac-880cf52ec99fd473d743-5462-471d-86e8-b83aeda2effadrools:assetNodeTypef7f8d2af-4733-4de7-a97b-9ea3dcac5602falsemicpackagemic2008-09-30T11:33:25.353+10:00defaultPackage7339b210-2abd-4f79-9081-0d00af756040drools161e13e67-3251-42ec-b83a-dc82db04c6b02010-06-01T01:52:52.105+08:00admintrue61e13e67-3251-42ec-b83a-dc82db04c6b0ef4e2d79-d31c-4105-801e-5177682f47d7drools:packageNodeTypeda98caef-e1c4-4f98-880c-46a740c9131ffalsefalseMortgages that aren't stupidrO0ABXNyABdvcmcuZHJvb2xzLnJ1bGUuUGFja2FnZQAAAAAAAAGQDAAAeHBzcgAmb3JnLmRyb29scy5ydWxlLkRpYWxlY3RSdW50aW1lUmVnaXN0cnkf4nrpqWIPIAwAAHhwc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAJ0AARqYXZhc3IAJm9yZy5kcm9vbHMucnVsZS5KYXZhRGlhbGVjdFJ1bnRpbWVEYXRhAAAAAAAAAZAMAAB4cHcEAAAABHQAH21vcnRnYWdlcy9Mb2FuQXBwbGljYXRpb24uY2xhc3N1cgACW0Ks8xf4BghU4AIAAHhwAAAH9cr+ur4AAAAwAGUBABltb3J0Z2FnZXMvTG9hbkFwcGxpY2F0aW9uBwABAQAQamF2YS9sYW5nL09iamVjdAcAAwEAFGphdmEvaW8vU2VyaWFsaXphYmxlBwAFAQAebW9ydGdhZ2VzLkxvYW5BcHBsaWNhdGlvbi5qYXZhAQAGYW1vdW50AQATTGphdmEvbGFuZy9JbnRlZ2VyOwEAB2RlcG9zaXQBAAhhcHByb3ZlZAEAE0xqYXZhL2xhbmcvQm9vbGVhbjsBAAxhcHByb3ZlZFJhdGUBAAtsZW5ndGhZZWFycwEAC2V4cGxhbmF0aW9uAQASTGphdmEvbGFuZy9TdHJpbmc7AQANaW5zdXJhbmNlQ29zdAEABjxpbml0PgEAAygpVgwAEgATCgAEABQBAAlnZXRBbW91bnQBABUoKUxqYXZhL2xhbmcvSW50ZWdlcjsMAAgACQkAAgAYAQAJc2V0QW1vdW50AQAWKExqYXZhL2xhbmcvSW50ZWdlcjspVgEACmdldERlcG9zaXQMAAoACQkAAgAdAQAKc2V0RGVwb3NpdAEAC2dldEFwcHJvdmVkAQAVKClMamF2YS9sYW5nL0Jvb2xlYW47DAALAAwJAAIAIgEAC3NldEFwcHJvdmVkAQAWKExqYXZhL2xhbmcvQm9vbGVhbjspVgEAD2dldEFwcHJvdmVkUmF0ZQwADQAJCQACACcBAA9zZXRBcHByb3ZlZFJhdGUBAA5nZXRMZW5ndGhZZWFycwwADgAJCQACACsBAA5zZXRMZW5ndGhZZW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r+ur4AAAAwAFwBABNtb3J0Z2FnZXMvQXBwbGljYW50BwABAQAQamF2YS9sYW5nL09iamVjdAcAAwEAFGphdmEvaW8vU2VyaWFsaXphYmxlBwAFAQAYbW9ydGdhZ2VzLkFwcGxpY2FudC5qYXZhAQADYWdlAQATTGphdmEvbGFuZy9JbnRlZ2VyOwEACGFwcHJvdmVkAQATTGphdmEvbGFuZy9Cb29sZWFuOwEAD2FwcGxpY2F0aW9uRGF0ZQEAEExqYXZhL3V0aWwvRGF0ZTsBAAxjcmVkaXRSYXRpbmcBABJMamF2YS9sYW5nL1N0cmluZzsBAARuYW1lAQAGPGluaXQ+AQADKClWDAARABIKAAQAEwEABmdldEFnZQEAFSgpTGphdmEvbGFuZy9JbnRlZ2VyOwwACAAJCQACABcBAAZzZXRBZ2UBABYoTGphdmEvbGFuZy9JbnRlZ2VyOylWAQALZ2V0QXBwcm92ZWQBABUoKUxqYXZhL2xhbmcvQm9vbGVhbjsMAAoACwkAAgAdAQALc2V0QXBwcm92ZWQBABYoTGphdmEvbGFuZy9Cb29sZWFuOylWAQASZ2V0QXBwbGljYXRpb25EYXRlAQASKClMamF2YS91dGlsL0RhdGU7DAAMAA0JAAIAIwEAEnNldEFwcGxpY2F0aW9uRGF0ZQEAEyhMamF2YS91dGlsL0RhdGU7KVYBAA9nZXRDcmVkaXRSYXRpbmcBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwwADgAPCQACACkBAA9zZXRDcmVkaXRSYXRpbmcBABUoTGphdmEvbGFuZy9TdHJpbmc7KVYBAAdnZXROYW1lDAAQAA8JAAIALgEAB3NldE5hbWUBAAZlcXVhbHMBABUoTGphdmEvbGFuZy9PYmplY3Q7KVoBAAhnZXRDbGFzcwEAEygpTGphdmEvbGFuZy9DbGFzczsMADMANAoABAA1AQAIaGFzaENvZGUBAAMoKUkBAAh0b1N0cmluZwEAF2phdmEvbGFuZy9TdHJpbmdCdWlsZGVyBwA6CgA7ABMKAAIANQEAD2phdmEvbGFuZy9DbGFzcwcAPgEADWdldFNpbXBsZU5hbWUMAEAAKAoAPwBBAQAGYXBwZW5kAQAtKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZ0J1aWxkZXI7DABDAEQKADsARQEAAiggCABHCAAIAQABPQgASgEALShMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwwAQwBMCgA7AE0BAAIsIAgATwgACggADAgADggAEAEAAiApCABVDAA5ACgKADsAVwEABENvZGUBAAhTdGFja01hcAEAClNvdXJjZUZpbGUAIQACAAQAAQAGAAUAAgAIAAkAAAACAAoACwAAAAIADAANAAAAAgAOAA8AAAACABAADwAAAA4AAQARABIAAQBZAAAAEQABAAEAAAAFKrcAFLEAAAAAAAEAFQAWAAEAWQAAABEAAQABAAAABSq0ABiwAAAAAAABABkAGgABAFkAAAASAAIAAgAAAAYqK7UAGLEAAAAAAAEAGwAcAAEAWQAAABEAAQABAAAABSq0AB6wAAAAAAABAB8AIAABAFkAAAASAAIAAgAAAAYqK7UAHrEAAAAAAAEAIQAiAAEAWQAAABEAAQABAAAABSq0ACSwAAAAAAABACUAJgABAFkAAAASAAIAAgAAAAYqK7UAJLEAAAAAAAEAJwAoAAEAWQAAABEAAQABAAAABSq0ACqwAAAAAAABACsALAABAFkAAAASAAIAAgAAAAYqK7UAKrEAAAAAAAEALQAoAAEAWQAAABEAAQABAAAABSq0AC+wAAAAAAABADAALAABAFkAAAASAAIAAgAAAAYqK7UAL7EAAAAAAAEAMQAyAAEAWQAAAFkAAgADAAAAISorpgAFBKwrxwAFA6wqtgA2K7YANqUABQOsK8AAAk0DrAAAAAEAWgAAACYAAwAHAAIHAAIHAAQAAAANAAIHAAIHAAQAAAAaAAIHAAIHAAQAAAABADcAOAABAFkAAAAQAAEAAgAAAAQEPBusAAAAAAABADkAKAABAFkAAACWAAIAAgAAAIq7ADtZtwA8TCsqtgA9tgBCtgBGEki2AEYSSbYARhJLtgBGKrQAGLYAThJQtgBGElG2AEYSS7YARiq0AB62AE4SULYARhJStgBGEku2AEYqtAAktgBOElC2AEYSU7YARhJLtgBGKrQAKrYAThJQtgBGElS2AEYSS7YARiq0AC+2AE4SVrYARrYAWLAAAAAAAAEAWwAAAAIAB3QAHG1vcnRnYWdlcy9JbmNvbWVTb3VyY2UuY2xhc3N1cQB+AAoAAASdyv66vgAAADAARAEAFm1vcnRnYWdlcy9JbmNvbWVTb3VyY2UHAAEBABBqYXZhL2xhbmcvT2JqZWN0BwADAQAUamF2YS9pby9TZXJpYWxpemFibGUHAAUBABttb3J0Z2FnZXMuSW5jb21lU291cmNlLmphdmEBAAZhbW91bnQBABNMamF2YS9sYW5nL0ludGVnZXI7AQAEdHlwZQEAEkxqYXZhL2xhbmcvU3RyaW5nOwEABjxpbml0PgEAAygpVgwADAANCgAEAA4BAAlnZXRBbW91bnQBABUoKUxqYXZhL2xhbmcvSW50ZWdlcjsMAAgACQkAAgASAQAJc2V0QW1vdW50AQAWKExqYXZhL2xhbmcvSW50ZWdlcjspVgEAB2dldFR5cGUBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwwACgALCQACABgBAAdzZXRUeXBlAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWAQAGZXF1YWxzAQAVKExqYXZhL2xhbmcvT2JqZWN0OylaAQAIZ2V0Q2xhc3MBABMoKUxqYXZhL2xhbmcvQ2xhc3M7DAAeAB8KAAQAIAEACGhhc2hDb2RlAQADKClJAQAIdG9TdHJpbmcBABdqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcgcAJQoAJgAOCgACACABAA9qYXZhL2xhbmcvQ2xhc3MHACkBAA1nZXRTaW1wbGVOYW1lDAArABcKACoALAEABmFwcGVuZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwwALgAvCgAmADABAAIoIAgAMggACAEAAT0IADUBAC0oTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsMAC4ANwoAJgA4AQACLCAIADoIAAoBAAIgKQgAPQwAJAAXCgAmAD8BAARDb2RlAQAIU3RhY2tNYXABAApTb3VyY2VGaWxlACEAAgAEAAEABgACAAIACAAJAAAAAgAKAAsAAAAIAAEADAANAAEAQQAAABEAAQABAAAABSq3AA+xAAAAAAABABAAEQABAEEAAAARAAEAAQAAAAUqtAATsAAAAAAAAQAUABUAAQBBAAAAEgACAAIAAAAGKiu1ABOxAAAAAAABABYAFwABAEEAAAARAA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5SdWxlX25vX05JTkpBc18wAFkJCWFwcC5zZXRBcHByb3ZlZCggZmFsc2UgKTsKCQlhcHAuc2V0RXhwbGFuYXRpb24oICJubyBOSU5KQXMiICk7CgkJZHJvb2xzLnJldHJhY3QoIGFwcCApO3VxAH4ALQAAAAFxAH4AL3VxAH4ALQAAAAB1cQB+AC0AAAAAdXEAfgAtAAAAAHVxAH4ALQAAAAB1cQB+ADQAAAABcQB+AEdwdXEAfgAtAAAAAHVxAH4ALQAAAAFxAH4ASHVxAH4ALQAAAAF0ABltb3J0Z2FnZXMuTG9hbkFwcGxpY2F0aW9ucHcFAAAABAF4dwYABG12ZWx4cHB3CgAAAAAAAAAFAABwcHcDAAABcHBxAH4AOnB4cQB+AFRzcQB+ABdxAH4AGXQAE1JvdyAzIFByaWNpbmcgbG9hbnNwcQB+ABx3AQFwcHNxAH4AHXEAfgAic3EAfgAkAAAAAncEAAAACnNxAH4AQHEAfgBDc3EAfgAkAAAABHcEAAAABHNyACFvcmcuZHJvb2xzLnJ1bGUuTGl0ZXJhbENvbnN0cmFpbnQAAAAAAAABkAwAAHhwc3IAIG9yZy5kcm9vbHMuYmFzZS5DbGFzc0ZpZWxkUmVhZGVyAAAAAAAAAZAMAAB4cHEAfgBfdAAGYW1vdW50eHNyACJvcmcuZHJvb2xzLnJ1bGUuTGl0ZXJhbFJlc3RyaWN0aW9uAAAAAAAAAZAMAAB4cHNyACVvcmcuZHJvb2xzLmJhc2UuZmllbGQuT2JqZWN0RmllbGRJbXBsAAAAAAAAAZAMAAB4cHcBAHBwdAAGMTMxMDAweHNyAFFvcmcuZHJvb2xzLmJhc2UuZXZhbHVhdG9ycy5Db21wYXJhYmxlRXZhbHVhdG9yc0RlZmluaXRpb24kSW50ZWdlckdyZWF0ZXJFdmFsdWF0b3IAAAAAAAABkAwAAHhyAB1vcmcuZHJvb2xzLmJhc2UuQmFzZUV2YWx1YXRvcvKXsVKoPFv8DAAAeHBzcgAjb3JnLmRyb29scy5iYXNlLmV2YWx1YXRvcnMuT3BlcmF0b3IAAAAAAAABkAwAAHhwdAABPncBAHhzcgAZb3JnLmRyb29scy5iYXNlLlZhbHVlVHlwZQAAAAAAAAGQDAAAeHB0AANpbnR2cgADaW50AAAAAAAAAAAAAAB4cHcEAA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5MaW5lTWFwcGluZ3O10GgP184yEAwAAHhwcQB+Aeh3CAAAAAUAAAAAeHQAIG1vcnRnYWdlcy5SdWxlX0NoZWNrQm94RHNsUnVsZV8wc3EAfgHpcQB+Aet3CAAAAAQAAAAAeHQAHW1vcnRnYWdlcy5SdWxlX1JlZ2V4RHNsUnVsZV8wc3EAfgHpcQB+Ae13CAAAAAUAAAAAeHQAI21vcnRnYWdlcy5SdWxlX0JhbmtydXB0Y3lfaGlzdG9yeV8wc3EAfgHpcQB+Ae93CAAAAAcAAAAAeHQAGm1vcnRnYWdlcy5SdWxlX25vX05JTkpBc18wc3EAfgHpcQB+AfF3CAAAAAcAAAAAeHQAGW1vcnRnYWdlcy5SdWxlX1VuZGVyYWdlXzBzcQB+AelxAH4B83cIAAAABwAAAAB4dAAlbW9ydGdhZ2VzLlJ1bGVfTm9fYmFkX2NyZWRpdF9jaGVja3NfMHNxAH4B6XEAfgH1dwgAAAAHAAAAAHh0ACRtb3J0Z2FnZXMuUnVsZV9Sb3dfMl9QcmljaW5nX2xvYW5zXzBzcQB+AelxAH4B93cIAAAAHwAAAAB4dAAfbW9ydGdhZ2VzLlJ1bGVfQ3JlZGl0QXBwcm92YWxfMHNxAH4B6XEAfgH5dwgAAAAFAAAAAHh0ACRtb3J0Z2FnZXMuUnVsZV9Sb3dfMV9QcmljaW5nX2xvYW5zXzBzcQB+AelxAH4B+3cIAAAAEwAAAAB4dAAkbW9ydGdhZ2VzLlJ1bGVfUm93XzNfUHJpY2luZ19sb2Fuc18wc3EAfgHpcQB+Af13CAAAAAcAAAAAeHh4c3EAfgAEP0AAAAAAAAx3CAAAABAAAAAEdAAKQmFua3J1cHRjeXNyAB9vcmcuZHJvb2xzLnJ1bGUuVHlwZURlY2xhcmF0aW9u5qIZN48ZfxQMAAB4cHEAfgIAfnIAJG9yZy5kcm9vbHMucnVsZS5UeXBlRGVjbGFyYXRpb24kUm9sZQAAAAAAAAAAEgAAeHEAfgAhdAAERkFDVH5yACZvcmcuZHJvb2xzLnJ1bGUuVHlwZURlY2xhcmF0aW9uJEZvcm1hdAAAAAAAAAAAEgAAeHEAfgAhdAAEUE9KT3BwcQB+AUZwc3IAJG9yZy5kcm9vbHMuZmFjdG1vZGVsLkNsYXNzRGVmaW5pdGlvbkDJP7TT/aNYDAAAeHB0AB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 that aren't stupidpackagemic2010-06-01T01:53:07.861+08:00mortgages265bc3c6d-b4a1-447d-bf6e-4012ea380f4b2010-06-01T01:52:52.168+08:00admintrue65bc3c6d-b4a1-447d-bf6e-4012ea380f4bd019df37-4d83-4c8b-8275-9de110e95200drools:versionableAssetFoldercb341374-2f44-44fe-88e9-05fa38b9060a66b3f0e2-d3e3-4090-88d3-e1e466f90a462010-06-01T01:52:52.168+08:00admintrue66b3f0e2-d3e3-4090-88d3-e1e466f90a46dfb640e5-e6f6-45fd-8bb2-f846d110e140drools:assetNodeType2a158076-afb0-4366-93b8-46e926df075efalsemicpackagemic2008-09-30T11:36:29.962+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040drools117fc7bdc-4c42-4d89-9251-cebcff41f22f2010-06-01T01:52:52.168+08:00admintrue17fc7bdc-4c42-4d89-9251-cebcff41f22fe4fb4b62-958e-4039-8a81-1a47223c0817drools:assetNodeType137190d6-07d5-442e-9188-ac226ea388b5falsedeclare 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 +endmicfalsemodel.drladmin2008-10-22T15:01:14.882-05:00mortgages7339b210-2abd-4f79-9081-0d00af756040MortgageModel6a41ec5e1-2c22-4243-be20-27b639ce784e2010-06-01T01:52:52.183+08:00admintruea41ec5e1-2c22-4243-be20-27b639ce784e5a4d4acb-4d24-4a93-bcda-b88db8ba6c69drools:assetNodeTypedffeb086-38e6-4ec0-aa2a-f7693fe2a6effalse62b38072-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>micfalsebrlmic2008-10-01T12:54:34.716+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Underage282bc895c-2909-477c-ba39-bc1c6198fd182010-06-01T01:52:52.199+08:00admintrue82bc895c-2909-477c-ba39-bc1c6198fd1891557689-4ee0-45ec-9808-2c5982e8323bdrools:assetNodeType2ebe06cf-684d-4586-ae1c-6502f2a1adb7false96f4f6c2-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>micTest really basic validation, common sense stufffalsescenarioadmin2010-05-26T22:27:44.738+03:00mortgages7339b210-2abd-4f79-9081-0d00af756040Are they old enough5e82730f8-e98d-4ad2-a962-d34e7f07e75c2010-06-01T01:52:52.214+08:00admintruee82730f8-e98d-4ad2-a962-d34e7f07e75cdcfed101-5747-4cbe-ab01-ba0be58312b6drools:assetNodeType681589e9-63df-49e9-8051-41fb890ca9e1false96f4f6c2-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>micWe don't want bankrupt people since 1990, or if their amount was over a certain amountfalsescenariomic2008-10-01T10:20:53.588+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040No bankruptcies5a240d031-276c-4d9f-b44a-59cc20e9b5da2010-06-01T01:52:52.246+08:00admintruea240d031-276c-4d9f-b44a-59cc20e9b5dab3882538-a857-464c-b686-285aa5461286drools:assetNodeType1cf5fa73-0412-48e2-b1b0-19ca946300fbtrue62b38072-6698-41d5-862c-911d1a7c4bddArchived 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>micfalsebrlmic2008-10-01T12:54:56.805+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Bankruptcies29c32405e-f693-4a8e-96d1-a82af188da472010-06-01T01:52:52.261+08:00admintrue9c32405e-f693-4a8e-96d1-a82af188da471ec7162e-4f13-4986-ad76-278c7677573fdrools:assetNodeType968c9b3c-bc19-40ba-bb38-44435956cceefalse62b38072-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>micfalsebrlmic2008-10-01T12:55:07.598+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Bankruptcy history31a1d96b8-c11f-4c7e-a54f-3341f300d2772010-06-01T01:52:52.292+08:00admintrue1a1d96b8-c11f-4c7e-a54f-3341f300d277c1565130-9961-47e9-9337-f7ea0e7f68aadrools:assetNodeTypebea0724b-47c5-417f-8728-328a5c55142bfalse'Applicant.creditRating': ['AA', 'OK', 'Sub prime']micAn 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. falseenumerationmic2008-10-01T10:26:35.668+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040credit ratings112077a46-0b4b-46fc-845c-f9a4d53713d02010-06-01T01:52:52.324+08:00admintrue12077a46-0b4b-46fc-845c-f9a4d53713d06210d887-0965-4357-a473-2e77f319f05adrools:assetNodeTypedd11bdec-1e84-47bc-bdd5-9dd9e781acaefalse62b38072-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>micfalsebrlmic2008-10-01T12:55:21.006+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040No bad credit checks7ac797b53-5e89-461a-928c-a27758656ccc2010-06-01T01:52:52.339+08:00admintrueac797b53-5e89-461a-928c-a27758656ccc90ef8ecd-7016-45c6-9fec-4d7ade8d7578drools:assetNodeType5e810512-d255-4836-b33c-855e64b07660false96f4f6c2-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>micObviously we only want people who can pay stuff backfalsescenarioadmin2010-05-26T22:28:01.191+03:00mortgages7339b210-2abd-4f79-9081-0d00af756040Good credit history only43bb0c7ba-66ee-4ec9-ac65-51ab38e233b22010-06-01T01:52:52.355+08:00admintrue3bb0c7ba-66ee-4ec9-ac65-51ab38e233b2eccd5105-f4de-452a-8cb4-00633e8e0333drools:assetNodeType61aec69e-e20a-43f5-b7c1-5c10cf19c589false62b38072-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>micNo ninjas !falsebrlmic2008-10-02T07:32:16.977+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040no NINJAs499ac035a-9bdc-4fe3-9dc6-c8958efa64f62010-06-01T01:52:52.370+08:00admintrue99ac035a-9bdc-4fe3-9dc6-c8958efa64f654b0409e-d3ca-43ff-9ab4-58201743958bdrools:assetNodeTyped501211f-0bbc-452c-aa03-444ea218e79bfalse96f4f6c2-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>micfalsescenariomic2008-10-01T12:47:32.301+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040NINJAs21c3715fd-adbc-4f8a-a4eb-825171fa33112010-06-01T01:52:52.402+08:00admintrue1c3715fd-adbc-4f8a-a4eb-825171fa3311f46bca4a-a129-462b-a2e5-0308f4d2dfc0drools:assetNodeTypef628bf77-f27c-4507-bdeb-fba3d202ac55false9be50562-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>micfalsegdstmic2008-10-01T13:46:07.232+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Pricing loans9fc0ade55-1a96-4eb6-9d00-104630d6f2c32010-06-01T01:52:52.417+08:00admintruefc0ade55-1a96-4eb6-9d00-104630d6f2c396c80b78-a035-40c8-a899-935d7849c3f2drools:assetNodeType1a5351d7-db08-4901-baaf-7e0379b49173false96f4f6c2-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>micfalsescenariomic2008-10-01T14:19:04.309+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Pricing low end30b9e9d97-7019-426e-9d2b-24e0f9f337482010-06-01T01:52:52.433+08:00admintrue0b9e9d97-7019-426e-9d2b-24e0f9f33748b29caa59-3d3d-4aca-91b7-d4de7eaff4bfdrools:assetNodeType36ab299f-0f7f-4821-a2c2-c3f39fc389a4true0554b023-d7a5-4b63-83f8-2bee32424351Archived Item on Wed Oct 01 13:54:23 GMT+1000 2008salience -1 +when + app: LoanApplication(approved == null) +then + app.setApproved(false);micfalsedrlmic2008-10-01T13:54:23.662+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Unapprove by default39fbddf68-59d4-43a2-97eb-e8bdc1d6dee72010-06-01T01:52:52.464+08:00admintrue9fbddf68-59d4-43a2-97eb-e8bdc1d6dee7e4817576-3bc9-4188-8435-15f037ce23b3drools:assetNodeTypeefa760a9-df5e-49fc-b684-e5bad673bd17false0554b023-d7a5-4b63-83f8-2bee32424351Initialwhen + #conditions +then + #actionsmicdrl2008-10-02T11:23:51.322+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Dummy rule6f320162-4749-4420-b161-49ca9638ed482010-06-01T01:52:52.464+08:00admintrue6f320162-4749-4420-b161-49ca9638ed4802e234b6-85e4-4052-b261-2c46a8e90a88drools:assetNodeType75e84fc9-9555-42bd-8360-96b6b2003ef3falseW3doZW5dV2hlbiB0aGUgY3JlZGl0IHJhdGluZyBpcyB7cmF0aW5nOkVOVU06QXBwbGljYW50LmNyZWRpdFJhdGluZ30gPSBhcHBsaWNhbnQ6QXBwbGljYW50KGNyZWRpdFJhdGluZz09IntyYXRpbmd9IikNClt0aGVuXUFwcHJvdmUgdGhlIGxvYW4gPSBhcHBsaWNhbnQuc2V0QXBwcm92ZWQodHJ1ZSkNCg0KW3doZW5dV2hlbiB0aGUgYXBwbGljYW50IGRhdGVzIGlzIGFmdGVyIHtkb3M6REFURTpkZWZhdWx0fSA9IGFwcGxpY2FudDpBcHBsaWNhbnQoYXBwbGljYXRpb25EYXRlPiJ7ZG9zfSIpDQoNClt3aGVuXVdoZW4gdGhlIGFwcGxpY2FudCBhcHByb3ZhbCBpcyB7Ym9vbDpCT09MRUFOOmNoZWNrZWR9ID0gYXBwbGljYW50OkFwcGxpY2FudChhcHByb3ZlZD09e2Jvb2x9KQ0KDQpbd2hlbl1XaGVuIHRoZSBhZ2VzIGlzIGxlc3MgdGhhbiB7bnVtOjE/WzAtOV0/WzAtOV19ID0gYXBwbGljYW50OkFwcGxpY2FudChhZ2U8e251bX0palan_parsonsfalsedsladmin2008-10-22T15:01:37.661-05:00mortgages7339b210-2abd-4f79-9081-0d00af756040ApplicantDsl220308b960-d748-4fde-9fd4-ae77bfc173e12010-06-01T01:52:52.480+08:00admintrue0308b960-d748-4fde-9fd4-ae77bfc173e153b3a775-38c3-49c5-a36d-7e36d214a71cdrools:assetNodeType46a5c1a6-1c1f-4f56-a14b-6f4269fd93detrue62b38072-6698-41d5-862c-911d1a7c4bddArchived 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_parsonsfalsebrlalan_parsons2008-10-21T11:34:26.546-05:00mortgages7339b210-2abd-4f79-9081-0d00af756040CreditScoreApproval2378a8f89-c53d-4b73-897d-4ffee7e341c22010-06-01T01:52:52.511+08:00admintrue378a8f89-c53d-4b73-897d-4ffee7e341c2445474fa-cbfe-4d7c-80fa-5d08810c1c21drools:assetNodeTypec8980346-0a46-4b46-9bb6-a73af9c5c9d4false62b38072-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_parsonsfalsebrlalan_parsons2008-10-21T11:35:55.769-05:00mortgages7339b210-2abd-4f79-9081-0d00af756040CreditApproval11f65c334-a7dd-4a15-a4da-47e2c05c50c32010-06-01T01:52:52.526+08:00admintrue1f65c334-a7dd-4a15-a4da-47e2c05c50c368af0934-5397-47b6-a8c4-e138fb879f89drools:assetNodeTypefa3918c7-dcf8-45fd-8df5-b7578871ee98true0554b023-d7a5-4b63-83f8-2bee32424351Archived 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>adminfalsebrlalan_parsons2009-02-25T11:52:09.504+11:00mortgages7339b210-2abd-4f79-9081-0d00af756040DateDslRule4453af344-b05b-413b-a5e2-84ca56503a692010-06-01T01:52:52.589+08:00admintrue453af344-b05b-413b-a5e2-84ca56503a692f569c3e-8d35-49d3-a5c9-913b9399f507drools:assetNodeTypee688d746-0d63-4707-9715-e8bede3e0fc0false0554b023-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>adminfalsebrladmin2008-10-22T14:41:28.281-05:00mortgages7339b210-2abd-4f79-9081-0d00af756040RegexDslRule210a554ce-24d1-452d-b462-f1a35b8173b02010-06-01T01:52:52.636+08:00admintrue10a554ce-24d1-452d-b462-f1a35b8173b080659e57-0382-4ab5-9b0e-7441e0b40579drools:assetNodeType7f0bf1f0-1ea2-4456-b20c-94c1048f3143true359a278b-78e8-49c6-a562-a24d4b25419fArchived 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_parsonsfalsebrlalan_parsons2009-02-25T11:51:59.128+11:00mortgages7339b210-2abd-4f79-9081-0d00af756040DSLWithDate302a0ef63-b8f0-4ede-8fbf-b2c31d87d3892010-06-01T01:52:52.667+08:00admintrue02a0ef63-b8f0-4ede-8fbf-b2c31d87d389f364fe49-8e70-4650-85e2-b41768b9f600drools:packageNodeTypee5645c2f-f79b-409a-a765-913fd054c9e2falseInitialalan_parsonsthe global area that holds sharable assetspackagealan_parsons2009-11-13T14:00:30.925+08:00globalArea176594a9e-d604-4d78-b8cb-d753e71f98aa2010-06-01T01:52:52.745+08:00admintrue76594a9e-d604-4d78-b8cb-d753e71f98aab19a2509-1d91-4173-b29b-c4fb15dda603drools:versionableAssetFolderd77d764b-4203-455c-a179-9192de317755b0dee2e4-2a44-43c3-883c-bab1e0338f972010-06-01T01:52:52.745+08:00admintrueb0dee2e4-2a44-43c3-883c-bab1e0338f97b3ca2bca-8e6a-4940-82d5-e7750dd3c724drools:packageNodeType8149adfa-b24a-4b6d-8a2f-2b84cb944bb9truefalsemicpackagealan_parsons2009-12-15T16:27:06.545+08:00archivedExample568bdc8bb-c0e4-4888-919a-12f998cf8e0d2010-06-01T01:52:52.760+08:00admintrue68bdc8bb-c0e4-4888-919a-12f998cf8e0dee9466ad-4833-4c60-8235-a98bb6850dfcdrools:versionableAssetFolder7c5b43cf-f580-4fdd-b3b8-84adc46941f4252f1408-deda-49b5-a20c-13d70f2618692010-06-01T01:52:52.760+08:00admintrue252f1408-deda-49b5-a20c-13d70f261869f2fa5f64-144a-4978-9058-a877b7829c07drools:assetNodeTypec5aba078-814e-4ce9-8ee3-511633d7a209true[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}micfalsedslalan_parsons2009-12-15T16:27:06.576+08:00archivedExample7339b210-2abd-4f79-9081-0d00af756040MyDSL477893730-2f37-406c-b5b9-bb674d5221002010-06-01T01:52:52.776+08:00admintrue77893730-2f37-406c-b5b9-bb674d52210006ec3419-4543-4a16-8f7f-c44d7630a553drools:assetNodeTypeb6f19a1c-fd9e-4158-a5f2-3291316fd352true359a278b-78e8-49c6-a562-a24d4b25419fwhen + The season is Summer + The supermodel ... + - name is "noel" + - is at least 21 years old +then + Print out the message "hey"micfalsedslralan_parsons2009-12-15T16:27:06.607+08:00archivedExample7339b210-2abd-4f79-9081-0d00af756040A DSL rule3a7484f75-41fd-406a-9dea-36ced39790232010-06-01T01:52:52.807+08:00admintruea7484f75-41fd-406a-9dea-36ced3979023b1039765-f740-43f9-ad98-6d7e2cbe6d5edrools:assetNodeTypedfd09c64-d31a-4a6f-adbb-069f3cf1060etrue359a278b-78e8-49c6-a562-a24d4b25419fmicbrlalan_parsons2009-12-15T16:27:06.654+08:00archivedExample7339b210-2abd-4f79-9081-0d00af756040another go1b9232528-40ea-41b0-b42e-88fbf295ba872010-06-01T01:52:52.823+08:00admintrueb9232528-40ea-41b0-b42e-88fbf295ba87acd05f48-1842-41ca-abb3-dafcb6d06febdrools:assetNodeType4b532c0d-3c5f-490f-9db9-01bbbe555148truemicpackagealan_parsons2009-12-15T16:27:06.701+08:00archivedExample7339b210-2abd-4f79-9081-0d00af756040drools59bf62276-27f0-4d01-8957-188266f989992010-06-01T01:52:52.838+08:00admintrue9bf62276-27f0-4d01-8957-188266f9899932ff8d59-4c65-4ada-9adf-f7fcec18c6e0nt:folder2010-06-01T01:52:52.870+08:00adminnt:folder2010-06-01T01:52:52.870+08:00admindrools:packageNodeType6b104874-fadb-49a7-8619-05b188f3c154falsetruerO0ABXNyABdvcmcuZHJvb2xzLnJ1bGUuUGFja2FnZQAAAAAAAAGQDAAAeHBzcgAmb3JnLmRyb29scy5ydWxlLkRpYWxlY3RSdW50aW1lUmVnaXN0cnkf4nrpqWIPIAwAAHhwc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAJ0AARqYXZhc3IAJm9yZy5kcm9vbHMucnVsZS5KYXZhRGlhbGVjdFJ1bnRpbWVEYXRhAAAAAAAAAZAMAAB4cHcEAAAABHQAH21vcnRnYWdlcy9Mb2FuQXBwbGljYXRpb24uY2xhc3N1cgACW0Ks8xf4BghU4AIAAHhwAAAH9cr+ur4AAAAwAGUBABltb3J0Z2FnZXMvTG9hbkFwcGxpY2F0aW9uBwABAQAQamF2YS9sYW5nL09iamVjdAcAAwEAFGphdmEvaW8vU2VyaWFsaXphYmxlBwAFAQAebW9ydGdhZ2VzLkxvYW5BcHBsaWNhdGlvbi5qYXZhAQAGYW1vdW50AQATTGphdmEvbGFuZy9JbnRlZ2VyOwEAB2RlcG9zaXQBAAhhcHByb3ZlZAEAE0xqYXZhL2xhbmcvQm9vbGVhbjsBAAxhcHByb3ZlZFJhdGUBAAtsZW5ndGhZZWFycwEAC2V4cGxhbmF0aW9uAQASTGphdmEvbGFuZy9TdHJpbmc7AQANaW5zdXJhbmNlQ29zdAEABjxpbml0PgEAAygpVgwAEgATCgAEABQBAAlnZXRBbW91bnQBABUoKUxqYXZhL2xhbmcvSW50ZWdlcjsMAAgACQkAAgAYAQAJc2V0QW1vdW50AQAWKExqYXZhL2xhbmcvSW50ZWdlcjspVgEACmdldERlcG9zaXQMAAoACQkAAgAdAQAKc2V0RGVwb3NpdAEAC2dldEFwcHJvdmVkAQAVKClMamF2YS9sYW5nL0Jvb2xlYW47DAALAAwJAAIAIgEAC3NldEFwcHJvdmVkAQAWKExqYXZhL2xhbmcvQm9vbGVhbjspVgEAD2dldEFwcHJvdmVkUmF0ZQwADQAJCQACACcBAA9zZXRBcHByb3ZlZFJhdGUBAA5nZXRMZW5ndGhZZWFycwwADgAJCQACACsBAA5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zdXEAfgAKAAAFK8r+ur4AAAAwAEoBABNtb3J0Z2FnZXMvQXBwbGljYW50BwABAQAQamF2YS9sYW5nL09iamVjdAcAAwEAFGphdmEvaW8vU2VyaWFsaXphYmxlBwAFAQAYbW9ydGdhZ2VzLkFwcGxpY2FudC5qYXZhAQADYWdlAQATTGphdmEvbGFuZy9JbnRlZ2VyOwEADGNyZWRpdFJhdGluZwEAEkxqYXZhL2xhbmcvU3RyaW5nOwEABG5hbWUBAAY8aW5pdD4BAAMoKVYMAA0ADgoABAAPAQAGZ2V0QWdlAQAVKClMamF2YS9sYW5nL0ludGVnZXI7DAAIAAkJAAIAEwEABnNldEFnZQEAFihMamF2YS9sYW5nL0ludGVnZXI7KVYBAA9nZXRDcmVkaXRSYXRpbmcBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwwACgALCQACABkBAA9zZXRDcmVkaXRSYXRpbmcBABUoTGphdmEvbGFuZy9TdHJpbmc7KVYBAAdnZXROYW1lDAAMAAsJAAIAHgEAB3NldE5hbWUBAAZlcXVhbHMBABUoTGphdmEvbGFuZy9PYmplY3Q7KVoBAAhnZXRDbGFzcwEAEygpTGphdmEvbGFuZy9DbGFzczsMACMAJAoABAAlAQAIaGFzaENvZGUBAAMoKUkBAAh0b1N0cmluZwEAF2phdmEvbGFuZy9TdHJpbmdCdWlsZGVyBwAqCgArAA8KAAIAJQEAD2phdmEvbGFuZy9DbGFzcwcALgEADWdldFNpbXBsZU5hbWUMADAAGAoALwAxAQAGYXBwZW5kAQAtKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZ0J1aWxkZXI7DAAzADQKACsANQEAAiggCAA3CAAIAQABPQgAOgEALShMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwwAMwA8CgArAD0BAAIsIAgAPwgACggADAEAAiApCABDDAApABgKACsARQEABENvZGUBAAhTdGFja01hcAEAClNvdXJjZUZpbGUAIQACAAQAAQAGAAMAAgAIAAkAAAACAAoACwAAAAIADAALAAAACgABAA0ADgABAEcAAAARAAEAAQAAAAUqtwAQsQAAAAAAAQARABIAAQBHAAAAEQABAAE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1bGUuUnVsZQAAAAAAAAGQDAAAeHB0AAltb3J0Z2FnZXN0ABNSb3cgMiBQcmljaW5nIGxvYW5zcHNyAB9vcmcuZHJvb2xzLmJhc2UuU2FsaWVuY2VJbnRlZ2VyAAAAAAAAAZAMAAB4cHcEAAAAAHh3AQFwcHNyABxvcmcuZHJvb2xzLnJ1bGUuR3JvdXBFbGVtZW50AAAAAAAAAf4MAAB4cgAib3JnLmRyb29scy5ydWxlLkNvbmRpdGlvbmFsRWxlbWVudKYTM9lW0l/mDAAAeHB+cgAhb3JnLmRyb29scy5ydWxlLkdyb3VwRWxlbWVudCRUeXBlAAAAAAAAAAASAAB4cgAOamF2YS5sYW5nLkVudW0AAAAAAAAAABIAAHhwdAADQU5Ec3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAJ3BAAAAApzcgAXb3JnLmRyb29scy5ydWxlLlBhdHRlcm4AAAAAAAABkAwAAHhwc3IAH29yZy5kcm9vbHMuYmFzZS5DbGFzc09iamVjdFR5cGUAAAAAAAABkAwAAHhwdxwAGW1vcnRnYWdlcy5Mb2FuQXBwbGljYXRpb24AeHNxAH4AJAAAAAR3BAAAAARzcgAhb3JnLmRyb29scy5ydWxlLkxpdGVyYWxDb25zdHJhaW50AAAAAAAAAZAMAAB4cHNyACBvcmcuZHJvb2xzLmJhc2UuQ2xhc3NGaWVsZFJlYWRlcgAAAAAAAAGQDAAAeHB0ABltb3J0Z2FnZXMuTG9hbkFwcGxpY2F0aW9udAAGYW1vdW50eHNyACJvcmcuZHJvb2xzLnJ1bGUuTGl0ZXJhbFJlc3RyaWN0aW9uAAAAAAAAAZAMAAB4cHNyACVvcmcuZHJvb2xzLmJhc2UuZmllbGQuT2JqZWN0RmllbGRJbXBsAAAAAAAAAZAMAAB4cHcBAHBwdAAGMTAwMDAxeHNyAFFvcmcuZHJvb2xzLmJhc2UuZXZhbHVhdG9ycy5Db21wYXJhYmxlRXZhbHVhdG9yc0RlZmluaXRpb24kSW50ZWdlckdyZWF0ZXJFdmFsdWF0b3IAAAAAAAABkAwAAHhyAB1vcmcuZHJvb2xzLmJhc2UuQmFzZUV2YWx1YXRvcvKXsVKoPFv8DAAAeHBzcgAjb3JnLmRyb29scy5iYXNlLmV2YWx1YXRvcnMuT3BlcmF0b3IAAAAAAAABkAwAAHhwdAABPncBAHhzcgAZb3JnLmRyb29scy5iYXNlLlZhbHVlVHlwZQAAAAAAAAGQDAAAeHB0AANpbnR2cgADaW50AAAAAAAAAAAAAAB4cHcEAAAABHh4cQB+AC54eHNxAH4AK3EAfgAuc3EAfgAxc3EAfgAzdwEAcHB0AAYxMzAwMDB4c3IAVW9yZy5kcm9vbHMuYmFzZS5ldmFsdWF0b3JzLkNvbXBhcmFibGVFdmFsdWF0b3JzRGVmaW5pdGlvbiRJbnRlZ2VyTGVzc09yRXF1YWxFdmFsdWF0b3IAAAAAAAABkAwAAHhxAH4AN3NxAH4AOXQAAjw9dwEAeHEAfgA9eHEAfgAueHhzcQB+ACtzcQB+AC1xAH4AL3QAC2xlbmd0aFllYXJzeHNxAH4AMXNxAH4AM3cBAHBwdAACMjB4c3IATW9yZy5kcm9vbHMuYmFzZS5ldmFsdWF0b3JzLkVxdWFsaXR5RXZhbHVhdG9yc0RlZmluaXRpb24kSW50ZWdlckVxdWFsRXZhbHVhdG9yAAAAAAAAAZAMAAB4cQB+ADdzcQB+ADl0AAI9PXcBAHhxAH4APXhxAH4ASnh4c3EAfgArc3EAfgAtcQB+AC90AAdkZXBvc2l0eHNxAH4AMXNxAH4AM3cBAHBwdAAEMzAwMHhzcgBOb3JnLmRyb29scy5iYXNlLmV2YWx1YXRvcnMuQ29tcGFyYWJsZUV2YWx1YXRvcnNEZWZpbml0aW9uJEludGVnZXJMZXNzRXZhbHVhdG9yAAAAAAAAAZAMAAB4cQB+ADdzcQB+ADl0AAE8dwEAeHEAfgA9eHEAfgBUeHh4c3IAG29yZy5kcm9vbHMucnVsZS5EZWNsYXJhdGlvbgAAAAAAAAGQDAAAeHB0AAthcHBsaWNhdGlvbnNyAB9vcmcuZHJvb2xzLnNwaS5QYXR0ZXJuRXh0cmFjdG9yAAAAAAAAAZAMAAB4cHEAfgApeHEAfgAndwEAeHNxAH4ABD9AAAAAAAABdwgAAAACAAAAAXEAfgBfcQB+AF54cHcEAAAAAHB3BAAAAAB4c3EAfgAmc3EAfgAodxkAFm1vcnRnYWdlcy5JbmNvbWVTb3VyY2UAeHNxAH4AJAAAAAF3BAAAAAFzcQB+ACtzcQB+AC10ABZtb3J0Z2FnZXMuSW5jb21lU291cmNldAAEdHlwZXhzcQB+ADFzcQB+ADN3AQBwcHQAA0pvYnhzcgBMb3JnLmRyb29scy5iYXNlLmV2YWx1YXRvcnMuRXF1YWxpdHlFdmFsdWF0b3JzRGVmaW5pdGlvbiRTdHJpbmdFcXVhbEV2YWx1YXRvcgAAAAAAAAGQDAAAeHEAfgA3cQB+AFFzcQB+ADx0AAZTdHJpbmd2cgAQamF2YS5sYW5nLlN0cmluZ6DwpDh6O7NCAgAAeHB3BAAAAAd4eHEAfgBneHh4c3EAfgBddAAGaW5jb21lc3EAfgBgcQB+AGR4cQB+AGN3AQB4c3EAfgAEP0AAAAAAAAF3CAAAAAIAAAABcQB+AHRxAH4Ac3hwdwQAAAABcHcEAAAAAHh4eHQABG12ZWx0AARNQUlOc3EAfgAEP0AAAAAAAAx3CAAAABAAAAAAeHNyACRvcmcuZHJvb2xzLmJhc2UubXZlbC5NVkVMQ29uc2VxdWVuY2UAAAAAAAABkAwAAHhwc3IAKG9yZy5kcm9vbHMuYmFzZS5tdmVsLk1WRUxDb21waWxhdGlvblVuaXQvHWbbDALiswwAAHhwd5QAJG1vcnRnYWdlcy5SdWxlX1Jvd18yX1ByaWNpbmdfbG9hbnNfMABsCQlhcHBsaWNhdGlvbi5zZXRBcHByb3ZlZCggdHJ1ZSApOwoJCWFwcGxpY2F0aW9uLnNldEluc3VyYW5jZUNvc3QoIDEwICk7CgkJYXBwbGljYXRpb24uc2V0QXBwcm92ZWRSYXRlKCA2ICk7dXIAE1tMamF2YS5sYW5nLlN0cmluZzut0lbn6R17RwIAAHhwAAAAAXQACW1vcnRnYWdlc3VxAH4AfgAAAAB1cQB+AH4AAAAAdXEAfgB+AAAAAHVxAH4AfgAAAAB1cgAeW0xvcmcuZHJvb2xzLnJ1bGUuRGVjbGFyYXRpb2479afPCzRoKeMCAAB4cAAAAAFxAH4AXnB1cQB+AH4AAAAAdXEAfgB+AAAAAXEAfgBfdXEAfgB+AAAAAXEAfgAvcHcFAAAABAF4dwYABG12ZWx4cHB3CgAAAAAAAAAHAABwcHcDAAABcHBzcgAeb3JnLmRyb29scy5iYXNlLkVuYWJsZWRCb29sZWFuAAAAAAAAAZAMAAB4cHcBAXhweHEAfgB7c3EAfgA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sZV9Sb3dfMV9QcmljaW5nX2xvYW5zXzBzcQB+AY9xAH4BmXcIAAAAEwAAAAB4dAAkbW9ydGdhZ2VzLlJ1bGVfUm93XzNfUHJpY2luZ19sb2Fuc18wc3EAfgGPcQB+AZt3CAAAAAcAAAAAeHh4c3EAfgAEP0AAAAAAAAx3CAAAABAAAAAEdAAKQmFua3J1cHRjeXNyAB9vcmcuZHJvb2xzLnJ1bGUuVHlwZURlY2xhcmF0aW9u5qIZN48ZfxQMAAB4cHEAfgGefnIAJG9yZy5kcm9vbHMucnVsZS5UeXBlRGVjbGFyYXRpb24kUm9sZQAAAAAAAAAAEgAAeHEAfgAhdAAERkFDVH5yACZvcmcuZHJvb2xzLnJ1bGUuVHlwZURlY2xhcmF0aW9uJEZvcm1hdAAAAAAAAAAAEgAAeHEAfgAhdAAEUE9KT3BwcQB+AS1wc3IAJG9yZy5kcm9vbHMuZmFjdG1vZGVsLkNsYXNzRGVmaW5pdGlvbkDJP7TT/aNYDAAAeHB0ABRtb3J0Z2FnZXMuQmFua3J1cHRjeXQAEGphdmEubGFuZy5PYmplY3R1cQB+AH4AAAABdAAUamF2YS5pby5TZXJpYWxpemFibGVzcgAXamF2YS51dGlsLkxpbmtlZEhhc2hNYXA0wE5cEGzA+wIAAVoAC2FjY2Vzc09yZGVyeHEAfgAEP0AAAAAAAAx3CAAAABAAAAACcQB+ATRzcgAkb3JnLmRyb29scy5mYWN0bW9kZWwuRmllbGREZWZpbml0aW9uiTflX6vzvF0MAAB4cHEAfgE0dAARamF2YS5sYW5nLkludGVnZXJ3AQBzcgAib3JnLmRyb29scy5iYXNlLkNsYXNzRmllbGRBY2Nlc3NvcgAAAAAAAAGQDAAAeHBxAH4BM3NyACBvcmcuZHJvb2xzLmJhc2UuQ2xhc3NGaWVsZFdyaXRlcgAAAAAAAAGQDAAAeHBxAH4BLXEAfgE0eHh4cQB+AS5zcQB+Aa9xAH4BLnEAfgGxdwEAc3EAfgGycQB+ASxzcQB+AbRxAH4BLXEAfgEueHh4eAB4cHBwdwkAAAAAAAAAAAB4dAAMSW5jb21lU291cmNlc3EAfgGfcQB+AblxAH4BonEAfgGlcHBxAH4AaHBzcQB+Aad0ABZtb3J0Z2FnZXMuSW5jb21lU291cmNlcQB+Aap1cQB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micMortgages that aren't stupidpackagemic2010-06-01T01:53:08.548+08:00mortgages2e8d0bc8e-c02d-4dfa-bc89-10934a78f3c22010-06-01T01:52:52.870+08:00admintruee8d0bc8e-c02d-4dfa-bc89-10934a78f3c2291d9d0d-86f7-48b4-9cf6-01d92eb085fadrools:versionableAssetFolder786e448b-2979-4310-ba34-bf229ae77ba15b2d5128-e1b8-4fe7-96b0-639a36857e342010-06-01T01:52:52.870+08:00admintrue5b2d5128-e1b8-4fe7-96b0-639a36857e346039ac3c-3a11-457f-9c30-022019fd4c12drools:assetNodeType727159c3-057d-4793-b5e8-c95c49268a09falsemicpackagemic2008-09-30T11:36:29.962+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040drools1f54ac9d2-78af-4e2b-b566-8ad722dfd6c22010-06-01T01:52:52.885+08:00admintruef54ac9d2-78af-4e2b-b566-8ad722dfd6c20a04ae95-9d60-4a5f-aff4-0b06981e4d75drools:assetNodeType8da7189a-f4a7-46d6-a940-661bcbfd6461falsedeclare 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 +endmicfalsemodel.drlmic2008-10-01T09:57:56.246+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040MortgageModel4364f3003-03d5-4e97-ab54-2a921e84e35d2010-06-01T01:52:52.885+08:00admintrue364f3003-03d5-4e97-ab54-2a921e84e35d20960dcb-493b-4ad8-8d04-5924661d854ddrools:assetNodeTypefe5d575b-1b07-4dd3-a818-21768cfee918false62b38072-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>micfalsebrlmic2008-10-01T12:54:34.716+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Underage2519d8e28-def4-4fbc-88bc-c6ccd6eea1f02010-06-01T01:52:52.901+08:00admintrue519d8e28-def4-4fbc-88bc-c6ccd6eea1f0eb473455-0a3e-4be7-87bd-349790d44f28drools:assetNodeTyped05de643-884d-4244-8c05-6b20375a0fbffalse96f4f6c2-01f9-445f-b773-6a7c5f77fa0bRenamed 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>micTest really basic validation, common sense stufffalsescenariomic2008-09-30T11:51:04.746+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Are they old enough4dfea9171-3b7a-425f-8ded-30da1a5ac17f2010-06-01T01:52:52.932+08:00admintruedfea9171-3b7a-425f-8ded-30da1a5ac17fbdc2a92c-a914-4c63-aac0-f7f9f1f29fcfdrools:assetNodeTypea839a639-9fae-45ae-9cc1-2a111c32d591false96f4f6c2-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>micWe don't want bankrupt people since 1990, or if their amount was over a certain amountfalsescenariomic2008-10-01T10:20:53.588+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040No bankruptcies5f61089a4-40d4-4f11-9b20-8d00e5033ded2010-06-01T01:52:52.963+08:00admintruef61089a4-40d4-4f11-9b20-8d00e5033ded0dfe2c92-776c-4326-a31f-05ef71146d6edrools:assetNodeTypecd8e3ed3-9be5-429f-abb3-3c1e9d0faf0dtrue62b38072-6698-41d5-862c-911d1a7c4bddArchived 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>micfalsebrlmic2008-10-01T12:54:56.805+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Bankruptcies2cb157668-aca5-447c-88e5-e089032a9dec2010-06-01T01:52:52.994+08:00admintruecb157668-aca5-447c-88e5-e089032a9dece2bef79a-e26b-4b4b-b5b7-3221e7906da7drools:assetNodeTypeba1e444e-8528-486b-a2fa-a8a7b6119d3ffalse62b38072-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>micfalsebrlmic2008-10-01T12:55:07.598+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Bankruptcy history37cd77e09-f31c-4993-84f3-442ad1710bf92010-06-01T01:52:53.010+08:00admintrue7cd77e09-f31c-4993-84f3-442ad1710bf945e6e55d-9448-493c-8754-5e0940ea7687drools:assetNodeTypebb1d3503-83f9-41f5-9b74-d5dac05ebbc6false'Applicant.creditRating': ['AA', 'OK', 'Sub prime']micAn 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. falseenumerationmic2008-10-01T10:26:35.668+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040credit ratings1af1e26b1-defa-4b58-af4d-c633dae43be62010-06-01T01:52:53.026+08:00admintrueaf1e26b1-defa-4b58-af4d-c633dae43be6fa4df4dd-c4ce-4fb5-9e47-ce450c28139ddrools:assetNodeType4792fe13-3acc-4f44-8ec1-7972ebe9dec1false62b38072-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>micfalsebrlmic2008-10-01T12:55:21.006+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040No bad credit checks743d99ffc-998d-4263-a66f-022e5e5178be2010-06-01T01:52:53.057+08:00admintrue43d99ffc-998d-4263-a66f-022e5e5178be807f9946-de8a-4acb-87dd-3fb19faa4d0bdrools:assetNodeType92e21ae6-b23a-4c44-9d0e-68f726211d17false96f4f6c2-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>micObviously we only want people who can pay stuff backfalsescenariomic2008-10-01T12:43:41.518+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Good credit history only3b174d3f0-9a77-46d2-ba9b-c6c06f47dd2d2010-06-01T01:52:53.072+08:00admintrueb174d3f0-9a77-46d2-ba9b-c6c06f47dd2df1a83f3c-b4b6-4f8b-8203-d84986e012dfdrools:assetNodeTypea9d6b2d3-8f94-42d6-9d51-0928fe1554b1false62b38072-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>micNo ninjas !falsebrlmic2008-10-01T12:55:44.955+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040no NINJAs3034b9931-dad4-46bb-b087-eeaf501ef2d52010-06-01T01:52:53.104+08:00admintrue034b9931-dad4-46bb-b087-eeaf501ef2d54246392b-1022-41ea-91f6-d38fa1a0cc27drools:assetNodeTypeb573df1f-4d6a-43a8-b2be-079cb60ab64efalse96f4f6c2-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>micfalsescenariomic2008-10-01T12:47:32.301+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040NINJAs2dbcc2d4a-0021-4191-afd9-f35363e82e8c2010-06-01T01:52:53.119+08:00admintruedbcc2d4a-0021-4191-afd9-f35363e82e8c21ddd297-6ae9-4f8b-9bef-1d0b4c2c525fdrools:assetNodeTypee25d9eb0-48cf-4373-806d-df9b8cf78717false9be50562-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>micfalsegdstmic2008-10-01T13:46:07.232+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Pricing loans9b47a345c-6e50-4ee9-870c-63e8896b9bc92010-06-01T01:52:53.182+08:00admintrueb47a345c-6e50-4ee9-870c-63e8896b9bc9b8e84a73-25b1-4614-925a-f8abe37a6762drools:assetNodeTypea14e46f2-403e-4f95-b90d-0864749309b7false96f4f6c2-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>micfalsescenariomic2008-10-01T14:19:04.309+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Pricing low end3da86c207-ca38-408c-ab65-dea6bbeb665d2010-06-01T01:52:53.197+08:00admintrueda86c207-ca38-408c-ab65-dea6bbeb665da0f33007-1166-45e6-948c-85946f5829ccdrools:assetNodeType6dc73458-46c0-440d-b533-7512453f7c77true0554b023-d7a5-4b63-83f8-2bee32424351Archived Item on Wed Oct 01 13:54:23 GMT+1000 2008salience -1 +when + app: LoanApplication(approved == null) +then + app.setApproved(false);micfalsedrlmic2008-10-01T13:54:23.662+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Unapprove by default36601a2ac-f295-4bc0-a146-42765a9830782010-06-01T01:52:53.228+08:00admintrue6601a2ac-f295-4bc0-a146-42765a98307813dbd6c0-cc0f-464c-b5ef-c91804849892drools:packageNodeType1864b431-37da-46e7-8f8d-12645d0773adfalsetruerO0ABXNyABdvcmcuZHJvb2xzLnJ1bGUuUGFja2FnZQAAAAAAAAGQDAAAeHBzcgAmb3JnLmRyb29scy5ydWxlLkRpYWxlY3RSdW50aW1lUmVnaXN0cnkf4nrpqWIPIAwAAHhwc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAJ0AARqYXZhc3IAJm9yZy5kcm9vbHMucnVsZS5KYXZhRGlhbGVjdFJ1bnRpbWVEYXRhAAAAAAAAAZAMAAB4cHcEAAAABHQAH21vcnRnYWdlcy9Mb2FuQXBwbGljYXRpb24uY2xhc3N1cgACW0Ks8xf4BghU4AIAAHhwAAAH9cr+ur4AAAAwAGUBABltb3J0Z2FnZXMvTG9hbkFwcGxpY2F0aW9uBwABAQAQamF2YS9sYW5nL09iamVjdAcAAwEAFGphdmEvaW8vU2VyaWFsaXphYmxlBwAFAQAebW9ydGdhZ2VzLkxvYW5BcHBsaWNhdGlvbi5qYXZhAQAGYW1vdW50AQATTGphdmEvbGFuZy9JbnRlZ2VyOwEAB2RlcG9zaXQBAAhhcHByb3ZlZAEAE0xqYXZhL2xhbmcvQm9vbGVhbjsBAAxhcHByb3ZlZFJhdGUBAAtsZW5ndGhZZWFycwEAC2V4cGxhbmF0aW9uAQASTGphdmEvbGFuZy9TdHJpbmc7AQANaW5zdXJhbmNlQ29zdAEABjxpbml0PgEAAygpVgwAEgATCgAEABQBAAlnZXRBbW91bnQBABUoKUxqYXZhL2xhbmcvSW50ZWdlcjsMAAgACQkAAgAYAQAJc2V0QW1vdW50AQAWKExqYXZhL2xhbmcvSW50ZWdlcjspVgEACmdldERlcG9zaXQMAAoACQkAAgAdAQAKc2V0RGVwb3NpdAEAC2dldEFwcHJvdmVkAQAVKClMamF2YS9sYW5nL0Jvb2xlYW47DAALAAwJAAIAIgEAC3NldEFwcHJvdmVkAQAWKExqYXZhL2xhbmcvQm9vbGVhbjspVgEAD2dldEFwcHJvdmVkUmF0ZQwADQAJCQACACcBAA9zZXRBcHByb3ZlZFJhdGUBAA5nZXRMZW5ndGhZZWFycwwADgAJCQACACsBAA5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zdXEAfgAKAAAFK8r+ur4AAAAwAEoBABNtb3J0Z2FnZXMvQXBwbGljYW50BwABAQAQamF2YS9sYW5nL09iamVjdAcAAwEAFGphdmEvaW8vU2VyaWFsaXphYmxlBwAFAQAYbW9ydGdhZ2VzLkFwcGxpY2FudC5qYXZhAQADYWdlAQATTGphdmEvbGFuZy9JbnRlZ2VyOwEADGNyZWRpdFJhdGluZwEAEkxqYXZhL2xhbmcvU3RyaW5nOwEABG5hbWUBAAY8aW5pdD4BAAMoKVYMAA0ADgoABAAPAQAGZ2V0QWdlAQAVKClMamF2YS9sYW5nL0ludGVnZXI7DAAIAAkJAAIAEwEABnNldEFnZQEAFihMamF2YS9sYW5nL0ludGVnZXI7KVYBAA9nZXRDcmVkaXRSYXRpbmcBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwwACgALCQACABkBAA9zZXRDcmVkaXRSYXRpbmcBABUoTGphdmEvbGFuZy9TdHJpbmc7KVYBAAdnZXROYW1lDAAMAAsJAAIAHgEAB3NldE5hbWUBAAZlcXVhbHMBABUoTGphdmEvbGFuZy9PYmplY3Q7KVoBAAhnZXRDbGFzcwEAEygpTGphdmEvbGFuZy9DbGFzczsMACMAJAoABAAlAQAIaGFzaENvZGUBAAMoKUkBAAh0b1N0cmluZwEAF2phdmEvbGFuZy9TdHJpbmdCdWlsZGVyBwAqCgArAA8KAAIAJQEAD2phdmEvbGFuZy9DbGFzcwcALgEADWdldFNpbXBsZU5hbWUMADAAGAoALwAxAQAGYXBwZW5kAQAtKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZ0J1aWxkZXI7DAAzADQKACsANQEAAiggCAA3CAAIAQABPQgAOgEALShMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwwAMwA8CgArAD0BAAIsIAgAPwgACggADAEAAiApCABDDAApABgKACsARQEABENvZGUBAAhTdGFja01hcAEAClNvdXJjZUZpbGUAIQACAAQAAQAGAAMAAgAIAAkAAAACAAoACwAAAAIADAALAAAACgABAA0ADgABAEcAAAARAAEAAQAAAAUqtwAQsQAAAAAAAQARABIAAQBHAAAAEQABAAEAAAAFKrQAFLAAAAAAAAEAFQAWAAEARwAAABIAAgACAAAABiortQAUsQAAAAAAAQAXABgAAQBHAAAAEQABAAEAAAAFKrQAGrAAAAAAAAEAGwAcAAEARwAAABIAAgACAAAABiortQAasQAAAAAAAQAdABgAAQBHAAAAEQABAAEAAAAFKrQAH7AAAAAAAAEAIAAcAAEARwAAABIAAgACAAAABiortQAfsQAAAAAAAQAhACIAAQBHAAAAWQACAAMAAAAhKiumAAUErCvHAAUDrCq2ACYrtgAmpQAFA6wrwAACTQOsAAAAAQBIAAAAJgADAAcAAgcAAgcABAAAAA0AAgcAAgcABAAAABoAAgcAAgcABAAAAAEAJwAoAAEARwAAABAAAQACAAAABAQ8G6wAAAAAAAEAKQAYAAEARwAAAGoAAgACAAAAXrsAK1m3ACxMKyq2AC22ADK2ADYSOLYANhI5tgA2Eju2ADYqtAAUtgA+EkC2ADYSQbYANhI7tgA2KrQAGrYAPhJAtgA2EkK2ADYSO7YANiq0AB+2AD4SRLYANrYARrAAAAAAAAEASQAAAAIAB3QAHG1vcnRnYWdlcy9JbmNvbWVTb3VyY2UuY2xhc3N1cQB+AAoAAASdyv66vgAAADAARAEAFm1vcnRnYWdlcy9JbmNvbWVTb3VyY2UHAAEBABBqYXZhL2xhbmcvT2JqZWN0BwADAQAUamF2YS9pby9TZXJpYWxpemFibGUHAAUBABttb3J0Z2FnZXMuSW5jb21lU291cmNlLmphdmEBAAZhbW91bnQBABNMamF2YS9sYW5nL0ludGVnZXI7AQAEdHlwZQEAEkxqYXZhL2xhbmcvU3RyaW5nOwEABjxpbml0PgEAAygpVgwADAANCgAEAA4BAAlnZXRBbW91bnQBABUoKUxqYXZhL2xhbmcvSW50ZWdlcjsMAAgACQkAAgASAQAJc2V0QW1vdW50AQAWKExqYXZhL2xhbmcvSW50ZWdlcjspVgEAB2dldFR5cGUBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwwACgALCQACABgBAAdzZXRUeXBlAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWAQAGZXF1YWxzAQAVKExqYXZhL2xhbmcvT2JqZWN0OylaAQAIZ2V0Q2xhc3MBABMoKUxqYXZhL2xhbmcvQ2xhc3M7DAAeAB8KAAQAIAEACGhhc2hDb2RlAQADKClJAQAIdG9TdHJpbmcBABdqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcgcAJQoAJgAOCgACACABAA9qYXZhL2xhbmcvQ2xhc3MHACkBAA1nZXRTaW1wbGVOYW1lDAArABcKACoALAEABmFwcGVuZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmdCdWlsZGVyOwwALgAvCgAmADABAAIoIAgAMggACAEAAT0IADUBAC0oTGphdmEvbGFuZy9PYmplY3Q7KUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsMAC4ANwoAJgA4AQACLCAIADoIAAoBAAIgKQgAPQwAJAAXCgAmAD8BAARDb2RlAQAIU3RhY2tNYXABAApTb3VyY2VGaWxlACEAAgAEAAEABgACAAIACAAJAAAAAgAKAAsAAAAIAAEADAANAAEAQQAAABEAAQABAAAABSq3AA+xAAAAAAABABAAEQABAEEAAAARAAEAAQAAAAUqtAATsAAAAAAAAQAUABUAAQBBAAAAEgACAAIAAAAGKiu1ABOxAAAAAAABABYAFwABAEEAAAARAAEAAQAAAAUqtAAZsAAAAAAAAQAaABsAAQBBAAAAEgACAAIAAAAGKiu1ABmxAAAAAAABABwAHQABAEEAAABZAAIAAwAAACEqK6YABQSsK8cABQOsKrYAISu2ACGlAAUDrCvAAAJNA6wAAAABAEIAAAAmAAMABwACBwACBwAEAAAADQACBwACBwAEAAAAGgACBwACBwAEAAAAAQAiACMAAQBBAAAAEAABAAIAAAAEBDwbrAAAAAAAAQAkABcAAQBBAAAAVAACAAIAAABIuwAmWbcAJ0wrKrYAKLYALbYAMRIztgAxEjS2ADESNrYAMSq0ABO2ADkSO7YAMRI8tgAxEja2ADEqtAAZtgA5Ej62ADG2AECwAAAAAAABAEMAAAACAAd3BAAAAAB4dAAEbXZlbHNyACZvcmcuZHJvb2xzLnJ1bGUuTVZFTERpYWxlY3RSdW50aW1lRGF0YeWjZyTO2TkODAAAeHBzcgAZamF2YS51dGlsLklkZW50aXR5SGFzaE1hcHGiZQEz8umAAwABSQAEc2l6ZXhwAAAACHcEAAAACHNyABRvcmcuZHJvb2xzLnJ1bGUuUnVsZQAAAAAAAAGQDAAAeHB0AAltb3J0Z2FnZXN0ABNSb3cgMSBQcmljaW5nIGxvYW5zcHNyAB9vcmcuZHJvb2xzLmJhc2UuU2FsaWVuY2VJbnRlZ2VyAAAAAAAAAZAMAAB4cHcEAAAAAHh3AQFwcHNyABxvcmcuZHJvb2xzLnJ1bGUuR3JvdXBFbGVtZW50AAAAAAAAAf4MAAB4cgAib3JnLmRyb29scy5ydWxlLkNvbmRpdGlvbmFsRWxlbWVudKYTM9lW0l/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+AAAAAHVxAH4AfgAAAAFxAH4AX3VxAH4AfgAAAAFxAH4AL3B3BQAAAAQBeHcGAARtdmVseHBwdwoAAAAAAAAABwAAcHB3AwAAAXBwc3IAHm9yZy5kcm9vbHMuYmFzZS5FbmFibGVkQm9vbGVhbgAAAAAAAAGQDAAAeHB3AQF4cHhxAH4Ae3NxAH4AF3E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cb3JnLmRyb29scy5ydWxlLkxpbmVNYXBwaW5nc7XQaA/XzjIQDAAAeHBxAH4Bn3cIAAAABQAAAAB4dAAjbW9ydGdhZ2VzLlJ1bGVfQmFua3J1cHRjeV9oaXN0b3J5XzBzcQB+AaBxAH4BoncIAAAABwAAAAB4dAAabW9ydGdhZ2VzLlJ1bGVfbm9fTklOSkFzXzBzcQB+AaBxAH4BpHcIAAAABwAAAAB4dAAZbW9ydGdhZ2VzLlJ1bGVfVW5kZXJhZ2VfMHNxAH4BoHEAfgGmdwgAAAAHAAAAAHh0ACVtb3J0Z2FnZXMuUnVsZV9Ob19iYWRfY3JlZGl0X2NoZWNrc18wc3EAfgGgcQB+Aah3CAAAAAcAAAAAeHQAJG1vcnRnYWdlcy5SdWxlX1Jvd18yX1ByaWNpbmdfbG9hbnNfMHNxAH4BoHEAfgGqdwgAAAAfAAAAAHh0ACRtb3J0Z2FnZXMuUnVsZV9Sb3dfMV9QcmljaW5nX2xvYW5zXzBzcQB+AaBxAH4BrHcIAAAAEwAAAAB4dAAkbW9ydGdhZ2VzLlJ1bGVfUm93XzNfUHJpY2luZ19sb2Fuc18wc3EAfgGgcQB+Aa53CAAAAAcAAAAAeHh4c3EAfgAEP0AAAAAAAAx3CAAAABAAAAAEdAAKQmFua3J1cHRjeXNyAB9vcmcuZHJvb2xzLnJ1bGUuVHlwZURlY2xhcmF0aW9u5qIZN48ZfxQMAAB4cHEAfgGxfnIAJG9yZy5kcm9vbHMucnVsZS5UeXBlRGVjbGFyYXRpb24kUm9sZQAAAAAAAAAAEgAAeHEAfgAhdAAERkFDVH5yACZvcmcuZHJvb2xzLnJ1bGUuVHlwZURlY2xhcmF0aW9uJEZvcm1hdAAAAAAAAAAAEgAAeHEAfgAhdAAEUE9KT3BwcQB+AShwc3IAJG9yZy5kcm9vbHMuZmFjdG1vZGVsLkNsYXNzRGVmaW5pdGlvbkDJP7TT/aNYDAAAeHB0ABRtb3J0Z2FnZXMuQmFua3J1cHRjeXQAEGphdmEubGFuZy5PYmplY3R1cQB+AH4AAAABdAAUamF2YS5pby5TZXJpYWxpemFibGVzcgAXamF2YS51dGlsLkxpbmtlZEhhc2hNYXA0wE5cEGzA+wIAAVoAC2FjY2Vzc09yZGVyeHEAfgAEP0AAAAAAAAx3CAAAABAAAAACcQB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 that aren't stupidpackagemic2010-06-01T01:53:09.936+08:00mortgages25cddc8e6-0ded-4124-9779-49ede438dfb92010-06-01T01:52:53.260+08:00admintrue5cddc8e6-0ded-4124-9779-49ede438dfb910311f80-d979-4536-9af2-9c046bde5536drools:versionableAssetFolder081033ec-4a59-4a7a-a58d-a31ad673d16f342cc7a2-c3ad-44ae-882b-22fb652ee0c82010-06-01T01:52:53.260+08:00admintrue342cc7a2-c3ad-44ae-882b-22fb652ee0c8176a919c-3b11-4013-8a3a-4c121f8bb963drools:assetNodeTypeb3770f7a-c122-4b28-b2c9-a53fe5a329a8falsemicpackagemic2008-09-30T11:36:29.962+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040drools18e62a7af-0e97-451f-915d-148e475f5c842010-06-01T01:52:53.275+08:00admintrue8e62a7af-0e97-451f-915d-148e475f5c8416f90269-508f-40dd-9a8e-62edfd6c990fdrools:assetNodeType82188ee0-8746-474f-a207-b5d2684d6885falsedeclare 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 +endmicfalsemodel.drlmic2008-10-01T09:57:56.246+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040MortgageModel4891c40ed-8b6d-4d46-941e-66b89d54f8332010-06-01T01:52:53.291+08:00admintrue891c40ed-8b6d-4d46-941e-66b89d54f833b624ffff-1b49-4666-a1c7-6bafaa4e2c8edrools:assetNodeType8da7c94b-c006-450d-82aa-3a349f0dc5cbfalse62b38072-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>micfalsebrlmic2008-10-01T12:54:34.716+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Underage2725305db-3075-4c9c-b6fb-569a767b2a412010-06-01T01:52:53.306+08:00admintrue725305db-3075-4c9c-b6fb-569a767b2a4147d5f5d0-da5e-48d9-8cb0-3001d97a32b4drools:assetNodeType05a0c7fb-1923-4b0a-887b-9b888eb4dce2false96f4f6c2-01f9-445f-b773-6a7c5f77fa0bRenamed 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>micTest really basic validation, common sense stufffalsescenariomic2008-09-30T11:51:04.746+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Are they old enough4d7531227-88e8-4016-b2f6-cf2540bbf2902010-06-01T01:52:53.306+08:00admintrued7531227-88e8-4016-b2f6-cf2540bbf2902f9a8d30-0671-4a3e-9f62-cedbfce18d21drools:assetNodeTypedb3e1db3-8046-475c-ae43-7bb9997d016afalse96f4f6c2-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>micWe don't want bankrupt people since 1990, or if their amount was over a certain amountfalsescenariomic2008-10-01T10:20:53.588+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040No bankruptcies5155baa66-4c92-4ecb-814d-b42f3d7491f22010-06-01T01:52:53.322+08:00admintrue155baa66-4c92-4ecb-814d-b42f3d7491f22e1d9abf-7589-480d-988d-9d758e379f76drools:assetNodeTypef69de598-a54b-4721-b60d-d40b60eb4275true62b38072-6698-41d5-862c-911d1a7c4bddArchived 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>micfalsebrlmic2008-10-01T12:54:56.805+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Bankruptcies2e6d2fa15-cb0b-42d0-9b55-7f13f4721f762010-06-01T01:52:53.338+08:00admintruee6d2fa15-cb0b-42d0-9b55-7f13f4721f76da0787b2-7f34-4043-8464-7714ed3b5115drools:assetNodeType65fac523-17ac-4d82-a8df-199a21a832e6false62b38072-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>micfalsebrlmic2008-10-01T12:55:07.598+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Bankruptcy history3425c5131-a8fa-4d42-8e42-5766800d313f2010-06-01T01:52:53.369+08:00admintrue425c5131-a8fa-4d42-8e42-5766800d313f5d7ef7b4-6c97-4e8a-b5dd-1db9e663a175drools:assetNodeType7daa9681-bb0c-4947-87da-c0b6344e5d3cfalse'Applicant.creditRating': ['AA', 'OK', 'Sub prime']micAn 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. falseenumerationmic2008-10-01T10:26:35.668+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040credit ratings121580346-1fc2-4908-9015-a5b4bd265ef72010-06-01T01:52:53.384+08:00admintrue21580346-1fc2-4908-9015-a5b4bd265ef7b2ec7722-5608-4188-a222-4bd400cffed4drools:assetNodeType4c0cf2ae-e3ff-406d-bf52-aa5f482177e9false62b38072-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>micfalsebrlmic2008-10-01T12:55:21.006+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040No bad credit checks77d328de0-da5c-47c5-a605-c3b645059c622010-06-01T01:52:53.400+08:00admintrue7d328de0-da5c-47c5-a605-c3b645059c62286c6b06-d230-41a0-bc06-7a8b6102f1a6drools:assetNodeType6d31f623-2e63-4187-9333-235b3ae0e894false96f4f6c2-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>micObviously we only want people who can pay stuff backfalsescenariomic2008-10-01T12:43:41.518+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Good credit history only3fd3dfeea-bcd2-4c08-8b8d-b8769b7ed2b32010-06-01T01:52:53.416+08:00admintruefd3dfeea-bcd2-4c08-8b8d-b8769b7ed2b320c2c6bb-2827-4dae-9a43-0bd96ebb4743drools:assetNodeType061cedf0-a57f-497d-95e5-b134232f1ffdfalse62b38072-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>micNo ninjas !falsebrlmic2008-10-02T07:32:16.977+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040no NINJAs4c1acf6bc-129e-4912-af99-29573f1403942010-06-01T01:52:53.462+08:00admintruec1acf6bc-129e-4912-af99-29573f140394fe0cc89b-5e4c-4390-be82-451ecc53ac31drools:assetNodeType788b6d67-37a5-4b57-a2ad-c7784040fc0afalse96f4f6c2-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>micfalsescenariomic2008-10-01T12:47:32.301+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040NINJAs2d06c362f-8a93-4f72-8fa4-69804ca508a42010-06-01T01:52:53.494+08:00admintrued06c362f-8a93-4f72-8fa4-69804ca508a468687879-9c5e-4a57-bf57-17f65e3b5aa5drools:assetNodeType680d227d-4653-4bd8-9a4a-bc75b80b3b82false9be50562-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>micfalsegdstmic2008-10-01T13:46:07.232+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Pricing loans9a131b908-2613-4679-8865-49b8f14b16df2010-06-01T01:52:53.525+08:00admintruea131b908-2613-4679-8865-49b8f14b16dff0062800-6375-4222-a298-1ff681a40c2edrools:assetNodeType8c26a963-e477-4b30-b931-c3d2322829a5false96f4f6c2-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>micfalsescenariomic2008-10-01T14:19:04.309+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Pricing low end37a5b47f5-e942-4556-a692-05173058e2b72010-06-01T01:52:53.540+08:00admintrue7a5b47f5-e942-4556-a692-05173058e2b7bdede786-c7c7-4c15-b58f-0f6c2b7a9688drools:assetNodeType11c1645e-cb92-4e52-8569-35fccf40dbd5true0554b023-d7a5-4b63-83f8-2bee32424351Archived Item on Wed Oct 01 13:54:23 GMT+1000 2008salience -1 +when + app: LoanApplication(approved == null) +then + app.setApproved(false);micfalsedrlmic2008-10-01T13:54:23.662+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Unapprove by default30172e07c-9476-4b3b-8f00-2782348648972010-06-01T01:52:53.603+08:00admintrue0172e07c-9476-4b3b-8f00-278234864897987fd08a-b66d-4e6f-ade8-617a91c75d2bdrools:assetNodeType143c1d79-4844-42fc-a332-e9e250a179b8false0554b023-d7a5-4b63-83f8-2bee32424351Initialwhen + #conditions +then + #actionsmicdrl2008-10-02T11:23:51.322+10:00mortgages7339b210-2abd-4f79-9081-0d00af756040Dummy rulee420a592-de9b-4dd2-8e2f-2e8d4c14b4782010-06-01T01:52:53.618+08:00admintruee420a592-de9b-4dd2-8e2f-2e8d4c14b47808c85eb9-d768-42b8-91aa-1f505e367ab7nt:folder2010-06-01T01:52:53.650+08:00admindrools:categoryNodeType89aeb935-56e3-4a83-9e74-a368f02a512c2010-06-01T01:52:53.650+08:00admindrools:categoryNodeType62b38072-6698-41d5-862c-911d1a7c4bdd2010-06-01T01:52:53.650+08:00admindrools:categoryNodeType9be50562-7549-4e68-a6c0-42222781bde92010-06-01T01:52:53.650+08:00admindrools:categoryNodeType96f4f6c2-01f9-445f-b773-6a7c5f77fa0b2010-06-01T01:52:53.650+08:00admindrools:categoryNodeType0554b023-d7a5-4b63-83f8-2bee324243512010-06-01T01:52:53.650+08:00admindrools:categoryNodeType359a278b-78e8-49c6-a562-a24d4b25419f2010-06-01T01:52:53.650+08:00adminnt:folder2010-06-01T01:52:53.650+08:00admindrools:stateNodeType7339b210-2abd-4f79-9081-0d00af7560402010-06-01T01:52:53.650+08:00adminnt:folder2010-06-01T01:52:53.650+08:00adminnt:folder2010-06-01T01:52:53.650+08:00adminnt:folder2010-06-01T01:52:53.650+08:00adminnt:file2010-06-01T01:52:53.650+08:00adminnt: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:folder2010-06-01T01:52:53.650+08:00adminnt:file2010-06-01T01:52:53.650+08:00adminnt:unstructurednt:folder2010-06-01T01:52:53.650+08:00adminnt:file2010-06-01T01:52:53.650+08:00adminnt: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> \ No newline at end of file Index: modeshape-jcr/src/test/java/org/modeshape/jcr/JcrImportExportTest.java =================================================================== --- modeshape-jcr/src/test/java/org/modeshape/jcr/JcrImportExportTest.java (revision 2552) +++ modeshape-jcr/src/test/java/org/modeshape/jcr/JcrImportExportTest.java (working copy) @@ -49,6 +49,7 @@ import org.jboss.security.config.IDTrustConfiguration; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.modeshape.common.FixFor; import org.modeshape.common.util.StringUtil; import org.modeshape.graph.connector.inmemory.InMemoryRepositorySource; import org.modeshape.graph.property.Path; @@ -438,6 +439,23 @@ public class JcrImportExportTest { assertImport(filename, "/a", ImportBehavior.THROW); // no matching UUIDs expected } + @FixFor( "MODE-1026" ) + @Test + public void shouldImportFileExportedFromJackrabbitContainingBinaryStringData() throws Exception { + CndNodeTypeReader cndReader = new CndNodeTypeReader(session); + cndReader.read("magnolia.cnd"); + session.getWorkspace().getNodeTypeManager().registerNodeTypes(cndReader.getNodeTypeDefinitions(), false); + assertThat(session.getWorkspace().getNodeTypeManager().getNodeType("mgnl:content"), is(notNullValue())); + + // Now import the file ... + String filename = "io/system-export-with-xsitype-data-and-uuids.xml"; + assertImport(filename, "/a", ImportBehavior.THROW); // no matching UUIDs expected + // print = true; + print("/a"); + Node imageNode = assertNode("/a/company/image"); + assertThat(imageNode.getProperty("extension").getValue().getString(), is("gif")); + } + @Test public void shouldDecodeBase64() throws Exception { String base64Str = "R0lGODlhEAAQAMZpAGxZMW1bNW9bMm9cNnJdNXJdNnNfN3tnPX5oQIBqQYJrO4FrQoVtQIZuQohxQopyRopzQYtzRo10Qo51SI12SJB3SZN5Q5N5RpV7TJZ8TJd9SJh+TpyAT52CUJ+FUaOGU6OHUaSIUqGKUqaJVaiKVaGMV6mLVqWOXqyOVayOWLCSWa2VWrSVW7aXXbSbXbqaXrqaX7uaX7ubXsCfYrigcMKgY8OhY8SiZMWjZMWjZcelZsimZsqnZ8unZ8uoaMypaM2pac6qacOtbc+ratCsatKta8uwbdGvctOvbtSvbNWwbciyhdaxbdm2dda7ddq5gd26fN28gNe/ed6+htvCeuHAhd3EfOLCidrDmd7GfuLEj9/HfubKlufLmOjLmOnMmOnNmujNne3UpuzUqe3Vp+7VqO/VqO/Wqe7YsP///////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAeJgH+Cg4SFhoeIiYqLhSciiR40S1hoY0JZVE5GK4MOZWdmZGJhJVumW1aDFGBfXl1cWiRSp1sufxYXV1VQUVNPMSAYDwgHEINNTEpJSEcwKR0VCwWERURDQUA9LSYcEwkDhD8+PDs6OCwjGxEIAYQyOTc2NTMqHxkNBgCFChIaKC8hGBBgJIARo0AAOw=="; @@ -476,7 +494,6 @@ public class JcrImportExportTest { // assertThat(apacheBytes, is(jbossBytes)); // apache pads 3 0s at the end assertThat(jrBytes, is(jbossBytes)); assertThat(msBytes, is(jbossBytes)); - } String toString( byte[] bytes ) { @@ -557,14 +574,14 @@ public class JcrImportExportTest { return engine.getExecutionContext().getValueFactories().getStringFactory().create(value); } - protected void assertNode( String path ) throws RepositoryException { + protected Node assertNode( String path ) throws RepositoryException { // Verify that the parent node does exist now ... String relativePath = relativePath(path); Node root = session.getRootNode(); if (relativePath.trim().length() == 0) { // This is the root path, so of course it exists ... assertThat(root, is(notNullValue())); - return; + return session.getNode(path); } if (print && !root.hasNode(relativePath)) { Node parent = root; @@ -579,6 +596,7 @@ public class JcrImportExportTest { } } assertThat(root.hasNode(relativePath), is(true)); + return session.getNode(path); } protected void assertNoNode( String path ) throws RepositoryException { Index: modeshape-jcr/src/test/resources/io/system-export-with-xsitype-data-and-uuids.xml new file mode 100644 =================================================================== --- /dev/null (revision 2552) +++ modeshape-jcr/src/test/resources/io/system-export-with-xsitype-data-and-uuids.xml (working copy) @@ -0,0 +1,415 @@ + + + + mgnl:contentNode + + + mix:lockable + + + bf90c9eb-ff67-4dbe-951c-2174ce7f913b + + + company + + + false + + + Company + + + /company + + + false + + + Company + + + company + + + + mgnl:metaData + + + superuser + + + 2009-10-30T13:20:40.492+01:00 + + + 2009-10-30T13:34:52.208+01:00 + + + + + + + + mgnl:contentNode + + + mix:lockable + + + aa5ed17b-f39b-4234-9196-e908ca849a5b + + + department + + + Department + + + department + + + + mgnl:metaData + + + superuser + + + 2009-10-30T13:21:07.968+01:00 + + + 2009-10-30T15:35:07.098+01:00 + + + + + + + + mgnl:resource + + + 05a19e14-e470-41f9-b198-2e20dfd5fa14 + + + gif + + + package + + + 16 + + + R0lGODlhEAAQAMZpAGxZMW1bNW9bMm9cNnJdNXJdNnNfN3tnPX5oQIBqQYJrO4FrQoVtQIZuQohxQopyRopzQYtzRo10Qo51SI12SJB3SZN5Q5N5RpV7TJZ8TJd9SJh+TpyAT52CUJ+FUaOGU6OHUaSIUqGKUqaJVaiKVaGMV6mLVqWOXqyOVayOWLCSWa2VWrSVW7aXXbSbXbqaXrqaX7uaX7ubXsCfYrigcMKgY8OhY8SiZMWjZMWjZcelZsimZsqnZ8unZ8uoaMypaM2pac6qacOtbc+ratCsatKta8uwbdGvctOvbtSvbNWwbciyhdaxbdm2dda7ddq5gd26fN28gNe/ed6+htvCeuHAhd3EfOLCidrDmd7GfuLEj9/HfubKlufLmOjLmOnMmOnNmujNne3UpuzUqe3Vp+7VqO/VqO/Wqe7YsP///////////////////////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAeJgH+Cg4SFhoeIiYqLhSciiR40S1hoY0JZVE5GK4MOZWdmZGJhJVumW1aDFGBfXl1cWiRSp1sufxYXV1VQUVNPMSAYDwgHEINNTEpJSEcwKR0VCwWERURDQUA9LSYcEwkDhD8+PDs6OCwjGxEIAYQyOTc2NTMqHxkNBgCFChIaKC8hGBBgJIARo0AAOw== + + + 2009-10-30T15:35:07.094+01:00 + + + image/gif + + + + + + 577 + + + 16 + + + + + + mgnl:contentNode + + + mix:lockable + + + 64ed7900-93b9-45a8-90db-8782217e4a4f + + + employees + + + Employees + + + employees + + + + mgnl:metaData + + + superuser + + + 2009-10-30T13:21:39.063+01:00 + + + 2009-10-30T13:21:39.065+01:00 + + + + + + + + mgnl:contentNode + + + mix:lockable + + + f84e068f-8433-4a55-b830-1e216e35dd2f + + + director + + + Director + + + director + + + + mgnl:metaData + + + superuser + + + 2009-10-30T13:21:54.237+01:00 + + + 2009-10-30T15:38:32.074+01:00 + + + + + + + + mgnl:resource + + + 7b2eed3c-56e4-4d1c-ba09-684585b04211 + + + gif + + + personal + + + 16 + + + R0lGODlhEAAQAMZtAAAAAAYEAg0KBhEPChgRDBUTDCAZESQZEk43JgBJngJQqAJQqgBTsVxGMABVtVZJNAFYswJavAVeqQReswNexARgyQhlsglntghmzgpotgxrugttzw1vvg1vvxJs0A9ywg9ywxB2xxB2yBB3zhV22XlnShJ5yxJ5zBF61xJ7zhN80Bh53xWA1BaD2BeD2BiH3BiH3ReI5hqK4BqK4RiK7CKK6huN5ViBsBuO5h2R6R2R6nWBjx6U7qZ+WDaR6CCX8iuV5j2Q5SCY8iGb9qyEXCOe+pKKg5yKdTSe7iWi/zyg9Cuk/6mObKuRaD+l8jqm97OYbEGu/7iabbmbblCy+8Ojc1q4/1+7/2C7/8iremK8/8mresqsem+//M+wfW3B/4C+7X/E+3nG/3vG/9y7hd69hojM/4nN/4rN/5PQ/ubEi+bEjOjGjf///////////////////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAeQgH+Cg38EhIeDAAEAjAKIhAAGDwMlBQePgghSbE1qUA2YglVla2RZPaF/RFxeW1OpfzdGTEc7HqFBaWhgXVhKoWFnY19XVE4kjytmYlZRT0hAKI8+WktFPzkyLSkViDVJQzw2LywmHxSINEI6My4qIRwZEYgxODAsJyAaFhIOiBgbRojocGECBAapFihI8CgQADs= + + + 2009-10-30T15:38:32.073+01:00 + + + image/gif + + + + + + 584 + + + 16 + + + + + + mgnl:contentNode + + + mix:lockable + + + 1e39678d-1a0a-408e-ae6c-0e80d5fa04e2 + + + manager + + + Manager + + + manager + + + + mgnl:metaData + + + superuser + + + 2009-10-30T13:22:14.459+01:00 + + + 2009-10-30T15:41:50.354+01:00 + + + + + + + + mgnl:resource + + + b7c734d3-2c70-4fed-aaa2-974f3f3cefcc + + + gif + + + spreadsheet + + + 16 + + + R0lGODlhEAAQAMZyAMcAAMcDAMcIANASFMAbBMAdBdgnJFtQTNkvMXlLOWlPRjhbb946PVxmTuFKQo9+PpV/NkuRZedkXkmbW+pqbbSFF3OWkOx2eZKSknmcl86SDO1+gFutZpqfOdGUDHuoT76eFlK8U9WdCrCoIqOjo4C1bmbBaaioqGHGYZystpq3U92wC66uroe/fGzKbKmxsqi2vK23sK63vY7Jh7m5ubu7u+TCE76+vr+/v5TRkMDAwNjKM77FycTExLvGy8XFxcbGxr3JzcfHx8jIyMnJycrKyuzSIsvLy8jMzszMzM3Nzc/Pz9DQ0NHR0e7aJtLS0tPT09TU1PHdMNXV1fHeN9bW1vHeONfX1/HfPPLfPtjY2NnZ2dra2tnb3Nvb29vc3N3d3d7e3t/f3+Dg4OLi4uTk5OXl5efn5+jo6Onp6erq6uvr6+3t7e7u7u/v7/Dw8PHx8fv7+////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAfDgH+Cg0dHg4eCSWFma25vcFw0LIh/Wm+Xb2txcnBMOohaSyQnOiRlNxg1aYhXYD1CUT1TOD1Pa4hTYUJFVUJbREJQbYhRY0VKWkVeR7xuQodQYT9DUz9aQj1NbEOHUWRNUGBNYk1LV2pEh1NnYF0+FhkwPF9o6YNVQREcJi4oIR8dYgA5hGRCjhktSqjYYQXLCEQpDGy4QEFCFilUnIBAJIPAAAQMHBixsUIEBEoKCgQAIMCDhgoPXlAStOBAggYz/wQCADs= + + + 2009-10-30T15:41:50.352+01:00 + + + image/gif + + + + + + 635 + + + 16 + + + + + + mgnl:contentNode + + + mix:lockable + + + 4dca2d73-e4da-4c84-8e71-50b00aeb157c + + + developer + + + Developer + + + developer + + + + mgnl:metaData + + + superuser + + + 2009-10-30T13:22:34.232+01:00 + + + 2009-10-30T15:39:51.742+01:00 + + + + + + + + mgnl:resource + + + ad0b1022-43b0-4c03-828c-2226c94e2aa3 + + + gif + + + package_system + + + 16 + + + R0lGODlhEAAQAMZ6AFZWVl1dXV5eXl9fX2BgYFthZVpjZ2VlZjhviGRmaGZmZmhoaAd+vwOAyAt/vWlsbmdtcER1i21tbQCFzVlzfgCHznBwcF90f2B0gB2Erlx3gnBzdnR0dACO0l16ihOKyQCQ03d3d3h4eDuGpEGGqiiMxm5+iQWW0Xt8fG1/iHJ+hHx8fH6AgoKCghGd2TGW0AGk3oaGhgWk3oeHhzuZzYmJiYqKio2NjY6Ojo6PkY+Pj5CQkJGRkUuh0ZOTk5OTlJSUlJWVlUqm05aWlpeXl5iZmZycnDi140ex4Dy041Sv2Z+fn2er0qCgoDK86Fy13Kampqenp6WprFe75ampqV264ZCuwme43m242lHA53+2062trYO201TC6a6urrCwsF/D6ZG3z7GxsZi3x6i3wqO4x568z6+5wqy9yaW/z729vb6+vsLCwsbGxsfHx8rKysHM08TN08nP1dDQ0M7S1tLS0tDT1tTU1NPW2Nna2v///////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAevgH+Cg4Q6LYSIfzdLYmh5RIk2RlJjXEw9L3hDiEBaWFVTSCQfDXabhEFXYF1HIxsYDHSngz5PWU4wGQlfF3JBiDxKSTIaFBEoKXGzgjtCLicGORBFHnDLfzg0HSAIFmxvKme/hDclExUOBQ8HUCzjgzNkZWlmVmEmCj8riYMxO1RRFizgwG8QDjZtagSQoADRljVt3LBR4yXEnwEKCCBaM6fOnSYiBAEYIKCgyT+BAAA7 + + + 2009-10-30T15:39:51.740+01:00 + + + image/gif + + + + + + 615 + + + 16 + + + + + + + mgnl:resource + + + 7d3bdd40-b253-47e8-a6c3-a48ea88bcbf3 + + + + Z2lm + + + Factory-Yellow-2-16x16 + + + 16 + + + R0lGODlhEAAQAMZwAEYvCEgwBkkwB0kxB0kxCEsxB0wxBkwxB0kyCEwzC08zCUw0D0w1EFA1C1E4CX5XHZNfFZ1oHJ5qH59sEZ5sIp5tJJ9uJKluDZ9vKJ9xK657MsB7DbWAMMmCDs6HIdWID9KLJciNOduND9SNKdaOJtSPKduPIdiQIOGQEdaRLNiSJt2RJeOTEdaUMOGUEuSUEdeVM9eWM9eXM92ZOeWdLP2cCOKgNf2dCeChO/yeCf+eCP6eC+qgNvyfC/2fC+qiM/+gC/6gDvyhDf+hC/yiDf6iDf+iC/GjLP6iEP6iFvyjEv6jD+qkQP+iFv+jDv6jEf+jD/2jGP2kEf6kEf+kD/ylEvylE/2kGvykHeymO/6mEf+mEfemL/6nE/+nEv+oE/+pFPuoNP+qFf2pJ/+qJf+sFvusOvqvRf2vQf6yQP6zR/+2Tf+4S/+6U/+9V/+9XP///////////////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACH5BAEKAH8ALAAAAAAQABAAAAefgH+Cg38eJISIgyZcIzxnM0wciYkPIRqTKxCTiSBhEZuIJWYSoIQpaBSlgy1qFYNHCj8NWQuEMGsYgjRpNmw4bgyEMW0ZfydjWFFJV2QJhDJvFn8oNTc5Oz1DBoQqTdIsPj1CQURQB4QfOtIvRUtIU09bBYQiQB0XLlJKVVpWXRODNhhxQmXLFi9fvoARI6aMg0EBBAyYSKAigosABAUCADs= + + + 2009-10-30T13:34:52.193+01:00 + + + image/gif + + + + + + 599 + + + 16 + + +