├── .gitignore
├── .idea
├── azure
│ └── azureSettings.xml
├── compiler.xml
├── encodings.xml
├── jarRepositories.xml
├── libraries
│ ├── Maven__aopalliance_aopalliance_1_0.xml
│ ├── Maven__ch_qos_logback_logback_classic_1_1_7.xml
│ ├── Maven__ch_qos_logback_logback_core_1_1_7.xml
│ ├── Maven__com_google_guava_guava_18_0.xml
│ ├── Maven__com_google_inject_guice_no_aop_4_0.xml
│ ├── Maven__com_google_protobuf_protobuf_java_2_6_0.xml
│ ├── Maven__com_thoughtworks_xstream_xstream_1_4_10.xml
│ ├── Maven__commons_codec_commons_codec_1_10.xml
│ ├── Maven__commons_io_commons_io_2_5.xml
│ ├── Maven__commons_lang_commons_lang_2_6.xml
│ ├── Maven__javax_annotation_jsr250_api_1_0.xml
│ ├── Maven__javax_enterprise_cdi_api_1_0.xml
│ ├── Maven__javax_inject_javax_inject_1.xml
│ ├── Maven__javax_xml_stream_stax_api_1_0_2.xml
│ ├── Maven__junit_junit_4_12.xml
│ ├── Maven__org_antlr_antlr_runtime_3_5_2.xml
│ ├── Maven__org_apache_ant_ant_1_8_4.xml
│ ├── Maven__org_apache_ant_ant_launcher_1_8_4.xml
│ ├── Maven__org_apache_commons_commons_lang3_3_4.xml
│ ├── Maven__org_apache_httpcomponents_httpclient_4_2_6.xml
│ ├── Maven__org_apache_httpcomponents_httpcore_4_4_6.xml
│ ├── Maven__org_apache_maven_maven_aether_provider_3_3_9.xml
│ ├── Maven__org_apache_maven_maven_artifact_3_3_9.xml
│ ├── Maven__org_apache_maven_maven_builder_support_3_3_9.xml
│ ├── Maven__org_apache_maven_maven_compat_3_3_9.xml
│ ├── Maven__org_apache_maven_maven_core_3_3_9.xml
│ ├── Maven__org_apache_maven_maven_model_3_3_9.xml
│ ├── Maven__org_apache_maven_maven_model_builder_3_3_9.xml
│ ├── Maven__org_apache_maven_maven_plugin_api_3_3_9.xml
│ ├── Maven__org_apache_maven_maven_repository_metadata_3_3_9.xml
│ ├── Maven__org_apache_maven_maven_settings_3_3_9.xml
│ ├── Maven__org_apache_maven_maven_settings_builder_3_3_9.xml
│ ├── Maven__org_apache_maven_wagon_wagon_http_2_10.xml
│ ├── Maven__org_apache_maven_wagon_wagon_http_shared_2_10.xml
│ ├── Maven__org_apache_maven_wagon_wagon_provider_api_2_10.xml
│ ├── Maven__org_apache_poi_poi_3_13.xml
│ ├── Maven__org_apache_poi_poi_ooxml_3_13.xml
│ ├── Maven__org_apache_poi_poi_ooxml_schemas_3_13.xml
│ ├── Maven__org_apache_xmlbeans_xmlbeans_2_6_0.xml
│ ├── Maven__org_codehaus_plexus_plexus_classworlds_2_5_2.xml
│ ├── Maven__org_codehaus_plexus_plexus_component_annotations_1_6.xml
│ ├── Maven__org_codehaus_plexus_plexus_interpolation_1_21.xml
│ ├── Maven__org_codehaus_plexus_plexus_utils_3_0_22.xml
│ ├── Maven__org_drools_drools_compiler_7_4_1_Final.xml
│ ├── Maven__org_drools_drools_core_7_4_1_Final.xml
│ ├── Maven__org_drools_drools_decisiontables_7_4_1_Final.xml
│ ├── Maven__org_drools_drools_templates_7_4_1_Final.xml
│ ├── Maven__org_eclipse_aether_aether_api_1_0_2_v20150114.xml
│ ├── Maven__org_eclipse_aether_aether_connector_basic_1_0_2_v20150114.xml
│ ├── Maven__org_eclipse_aether_aether_impl_1_0_2_v20150114.xml
│ ├── Maven__org_eclipse_aether_aether_spi_1_0_2_v20150114.xml
│ ├── Maven__org_eclipse_aether_aether_transport_file_1_0_2_v20150114.xml
│ ├── Maven__org_eclipse_aether_aether_transport_http_1_0_2_v20150114.xml
│ ├── Maven__org_eclipse_aether_aether_transport_wagon_1_0_2_v20150114.xml
│ ├── Maven__org_eclipse_aether_aether_util_1_0_2_v20150114.xml
│ ├── Maven__org_eclipse_jdt_core_compiler_ecj_4_4_2.xml
│ ├── Maven__org_eclipse_sisu_org_eclipse_sisu_inject_0_3_2.xml
│ ├── Maven__org_eclipse_sisu_org_eclipse_sisu_plexus_0_3_2.xml
│ ├── Maven__org_hamcrest_hamcrest_core_1_3.xml
│ ├── Maven__org_jsoup_jsoup_1_7_2.xml
│ ├── Maven__org_kie_kie_api_7_4_1_Final.xml
│ ├── Maven__org_kie_kie_ci_7_4_1_Final.xml
│ ├── Maven__org_kie_kie_internal_7_4_1_Final.xml
│ ├── Maven__org_mvel_mvel2_2_3_2_Final.xml
│ ├── Maven__org_slf4j_jcl_over_slf4j_1_7_21.xml
│ ├── Maven__org_slf4j_slf4j_api_1_7_21.xml
│ ├── Maven__org_sonatype_plexus_plexus_cipher_1_7.xml
│ ├── Maven__org_sonatype_plexus_plexus_sec_dispatcher_1_3.xml
│ ├── Maven__org_springframework_spring_core_4_3_18.xml
│ ├── Maven__org_uberfire_uberfire_maven_integration_1_4_0_Final.xml
│ ├── Maven__org_uberfire_uberfire_maven_support_1_4_0_Final.xml
│ ├── Maven__stax_stax_api_1_0_1.xml
│ ├── Maven__xmlpull_xmlpull_1_1_3_1.xml
│ └── Maven__xpp3_xpp3_min_1_1_4c.xml
├── misc.xml
├── modules.xml
├── runConfigurations.xml
└── vcs.xml
├── LICENCSE
├── README.MD
├── drools.iml
├── pom.xml
└── src
├── main
├── java
│ └── net
│ │ └── cloudburo
│ │ └── drools
│ │ ├── config
│ │ └── DroolsBeanFactory.java
│ │ └── model
│ │ ├── Customer.java
│ │ └── Offer.java
└── resources
│ └── net
│ └── cloudburo
│ └── drools
│ └── rules
│ └── DroolsDiscount.xlsx
└── test
└── java
└── net
└── cloudburo
└── drools
└── service
└── DiscountExcelIntegrationTest.java
/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | ### Java template
3 | # Compiled class file
4 | *.class
5 |
6 | # Log file
7 | *.log
8 |
9 | # BlueJ files
10 | *.ctxt
11 |
12 | # Mobile Tools for Java (J2ME)
13 | .mtj.tmp/
14 |
15 | # Package Files #
16 | *.jar
17 | *.war
18 | *.nar
19 | *.ear
20 | *.zip
21 | *.tar.gz
22 | *.rar
23 |
24 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
25 | hs_err_pid*
26 |
27 | .gitignore
28 | .idea/workspace.xml
29 | target/
30 |
--------------------------------------------------------------------------------
/.idea/azure/azureSettings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__aopalliance_aopalliance_1_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_7.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_7.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_google_guava_guava_18_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_google_inject_guice_no_aop_4_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_google_protobuf_protobuf_java_2_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__com_thoughtworks_xstream_xstream_1_4_10.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__commons_codec_commons_codec_1_10.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__commons_io_commons_io_2_5.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__commons_lang_commons_lang_2_6.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__javax_annotation_jsr250_api_1_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__javax_enterprise_cdi_api_1_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__javax_inject_javax_inject_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__javax_xml_stream_stax_api_1_0_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__junit_junit_4_12.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_antlr_antlr_runtime_3_5_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_ant_ant_1_8_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_ant_ant_launcher_1_8_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_2_6.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_6.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_maven_maven_aether_provider_3_3_9.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_maven_maven_artifact_3_3_9.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_maven_maven_builder_support_3_3_9.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_maven_maven_compat_3_3_9.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_maven_maven_core_3_3_9.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_maven_maven_model_3_3_9.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_maven_maven_model_builder_3_3_9.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_maven_maven_plugin_api_3_3_9.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_maven_maven_repository_metadata_3_3_9.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_maven_maven_settings_3_3_9.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_maven_maven_settings_builder_3_3_9.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_maven_wagon_wagon_http_2_10.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_maven_wagon_wagon_http_shared_2_10.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_maven_wagon_wagon_provider_api_2_10.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_poi_poi_3_13.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_poi_poi_ooxml_3_13.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_poi_poi_ooxml_schemas_3_13.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_apache_xmlbeans_xmlbeans_2_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_codehaus_plexus_plexus_classworlds_2_5_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_codehaus_plexus_plexus_component_annotations_1_6.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_codehaus_plexus_plexus_interpolation_1_21.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_codehaus_plexus_plexus_utils_3_0_22.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_drools_drools_compiler_7_4_1_Final.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_drools_drools_core_7_4_1_Final.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_drools_drools_decisiontables_7_4_1_Final.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_drools_drools_templates_7_4_1_Final.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_eclipse_aether_aether_api_1_0_2_v20150114.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_eclipse_aether_aether_connector_basic_1_0_2_v20150114.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_eclipse_aether_aether_impl_1_0_2_v20150114.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_eclipse_aether_aether_spi_1_0_2_v20150114.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_eclipse_aether_aether_transport_file_1_0_2_v20150114.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_eclipse_aether_aether_transport_http_1_0_2_v20150114.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_eclipse_aether_aether_transport_wagon_1_0_2_v20150114.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_eclipse_aether_aether_util_1_0_2_v20150114.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_eclipse_jdt_core_compiler_ecj_4_4_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_eclipse_sisu_org_eclipse_sisu_inject_0_3_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_eclipse_sisu_org_eclipse_sisu_plexus_0_3_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_jsoup_jsoup_1_7_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_kie_kie_api_7_4_1_Final.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_kie_kie_ci_7_4_1_Final.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_kie_kie_internal_7_4_1_Final.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_mvel_mvel2_2_3_2_Final.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_21.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_21.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_sonatype_plexus_plexus_cipher_1_7.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_sonatype_plexus_plexus_sec_dispatcher_1_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_springframework_spring_core_4_3_18.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_uberfire_uberfire_maven_integration_1_4_0_Final.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__org_uberfire_uberfire_maven_support_1_4_0_Final.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__stax_stax_api_1_0_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__xmlpull_xmlpull_1_1_3_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__xpp3_xpp3_min_1_1_4c.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | /usr/local/bin/bower
9 |
10 |
11 |
12 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 | Android
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/LICENCSE:
--------------------------------------------------------------------------------
1 | Copyright (C) 2018 Felix Kuestahler
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
--------------------------------------------------------------------------------
/README.MD:
--------------------------------------------------------------------------------
1 | # Tutorial: Decision Tables in Excel
2 |
3 | This is a modified sample of the work done by [www.baeldung.com](https://www.baeldung.com), credit goes to them.
4 |
5 | Decision tables are a "precise yet compact" (ref. Wikipedia) way of representing conditional logic, and are well suited
6 | to business level rules.
7 |
8 | Drools supports managing rules in a spreadsheet format. Supported formats are Excel (XLS), and CSV, which means that a
9 | variety of spreadsheet programs can be used for defining the business rules.
10 |
11 | The Tutorial Guide can be found under
12 | [dev.cloudburo.net](https://dev.cloudburo.net/2018/05/10/tutorial-drools-decision-tables-in-excel-for-a-product-proposal.html)
13 |
14 |
15 |
16 | ## Drools Documentation
17 | - [Decision Tables in Excel](https://docs.jboss.org/drools/release/5.2.0.Final/drools-expert-docs/html/ch06.html)
18 |
19 | ## Relevant Articles:
20 | - [Introduction to Drools](http://www.baeldung.com/drools)
21 | - [Drools Using Rules from Excel Files](http://www.baeldung.com/drools-excel)
22 | - [An Example of Backward Chaining in Drools](http://www.baeldung.com/drools-backward-chaining)
23 |
--------------------------------------------------------------------------------
/drools.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 | net.cloudburo
6 | drools
7 | 1.0.0-SNAPSHOT
8 |
9 |
10 |
11 | org.apache.maven.plugins
12 | maven-compiler-plugin
13 | ${maven-compiler-plugin.version}
14 |
15 | 1.8
16 | 1.8
17 |
18 |
19 |
20 |
21 |
22 |
23 | org.apache.httpcomponents
24 | httpcore
25 | ${http-component-version}
26 |
27 |
28 |
29 | org.kie
30 | kie-ci
31 | ${drools-version}
32 |
33 |
34 | org.drools
35 | drools-decisiontables
36 | ${drools-version}
37 |
38 |
39 | org.drools
40 | drools-core
41 | ${drools-version}
42 |
43 |
44 | org.drools
45 | drools-compiler
46 | ${drools-version}
47 |
48 |
49 | org.apache.poi
50 | poi
51 | ${apache-poi-version}
52 |
53 |
54 | org.apache.poi
55 | poi-ooxml
56 | ${apache-poi-version}
57 |
58 |
59 | org.springframework
60 | spring-core
61 | ${spring-core.version}
62 |
63 |
64 | junit
65 | junit
66 | ${junit.version}
67 | test
68 |
69 |
70 |
71 | org.slf4j
72 | slf4j-api
73 | ${org.slf4j.version}
74 |
75 |
76 | ch.qos.logback
77 | logback-classic
78 | ${logback.version}
79 |
80 |
81 | ch.qos.logback
82 | logback-core
83 | ${logback.version}
84 |
85 |
86 | org.slf4j
87 | jcl-over-slf4j
88 | ${org.slf4j.version}
89 |
90 |
91 |
92 |
93 | 3.7.0
94 | 4.4.6
95 | 7.4.1.Final
96 | 3.13
97 | 4.3.18.RELEASE
98 | 4.12
99 | 1.7.21
100 | 1.1.7
101 |
102 |
103 |
104 |
--------------------------------------------------------------------------------
/src/main/java/net/cloudburo/drools/config/DroolsBeanFactory.java:
--------------------------------------------------------------------------------
1 | package net.cloudburo.drools.config;
2 |
3 | import org.drools.decisiontable.DecisionTableProviderImpl;
4 | import org.kie.api.KieServices;
5 | import org.kie.api.builder.*;
6 | import org.kie.api.io.Resource;
7 | import org.kie.api.runtime.KieContainer;
8 | import org.kie.api.runtime.KieSession;
9 | import org.kie.internal.builder.DecisionTableConfiguration;
10 | import org.kie.internal.builder.DecisionTableInputType;
11 | import org.kie.internal.builder.KnowledgeBuilderFactory;
12 | import org.kie.internal.io.ResourceFactory;
13 |
14 | public class DroolsBeanFactory {
15 |
16 | private KieServices kieServices=KieServices.Factory.get();
17 |
18 |
19 | public KieSession getKieSession(Resource dt) {
20 | KieFileSystem kieFileSystem = kieServices.newKieFileSystem()
21 | .write(dt);
22 |
23 | KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem)
24 | .buildAll();
25 |
26 | KieRepository kieRepository = kieServices.getRepository();
27 |
28 | ReleaseId krDefaultReleaseId = kieRepository.getDefaultReleaseId();
29 |
30 | KieContainer kieContainer = kieServices.newKieContainer(krDefaultReleaseId);
31 |
32 | KieSession ksession = kieContainer.newKieSession();
33 |
34 | return ksession;
35 | }
36 |
37 | /*
38 | * Can be used for debugging
39 | * Input excelFile example: com/baeldung/drools/rules/Discount.xls
40 | */
41 | public String getDrlFromExcel(String excelFile) {
42 | DecisionTableConfiguration configuration = KnowledgeBuilderFactory.newDecisionTableConfiguration();
43 | configuration.setInputType(DecisionTableInputType.XLS);
44 |
45 | Resource dt = ResourceFactory.newClassPathResource(excelFile, getClass());
46 |
47 | DecisionTableProviderImpl decisionTableProvider = new DecisionTableProviderImpl();
48 |
49 | String drl = decisionTableProvider.loadFromResource(dt, null);
50 |
51 | return drl;
52 | }
53 |
54 | }
55 |
--------------------------------------------------------------------------------
/src/main/java/net/cloudburo/drools/model/Customer.java:
--------------------------------------------------------------------------------
1 | package net.cloudburo.drools.model;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | public class Customer {
7 | private CustomerLifeStage lifestage;
8 | private CustomerAssets assets;
9 | private List customerNeeds = new ArrayList<>();
10 |
11 | public Customer() {
12 | super();
13 | }
14 |
15 | public void setLifeStage(CustomerLifeStage lifestage) {
16 |
17 | this.lifestage = lifestage;
18 | }
19 |
20 | public CustomerLifeStage getLifeStage() {
21 |
22 | return lifestage;
23 | }
24 |
25 | public void addNeed(CustomerNeed need) {
26 |
27 | customerNeeds.add(need);
28 | }
29 |
30 | public List getNeeds() {
31 | return customerNeeds;
32 | }
33 |
34 | public void setAssets(CustomerAssets assets) {
35 | this.assets = assets;
36 | }
37 |
38 | public CustomerAssets getAssets() {
39 | return assets;
40 | }
41 |
42 | public enum CustomerNeed {
43 | SAVINGACCOUNT,
44 | LIFEINSURANCE,
45 | DIGITALBANKING,
46 | STUDENTLOAN,
47 | MORTAGE
48 | }
49 |
50 | // https://www.peoples-ebank.com/lifestages.html
51 | public enum CustomerLifeStage {
52 | GETTINGSTARTED,
53 | CAREERFOCUSED,
54 | ADVICEFAMILY,
55 | EMPTYNESTER,
56 | GOLDENYEARS,
57 | BUSINESS
58 | }
59 |
60 | public enum CustomerAssets {
61 | TO50K,
62 | FROM50KTO150K,
63 | FROM150KTO300K,
64 | OVER300K
65 | }
66 |
67 | }
68 |
--------------------------------------------------------------------------------
/src/main/java/net/cloudburo/drools/model/Offer.java:
--------------------------------------------------------------------------------
1 | package net.cloudburo.drools.model;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | public class Offer {
7 |
8 | private ProductPackage financialPackage;
9 | private List products = new ArrayList();
10 | private int discount;
11 |
12 | public int getDiscount() {
13 | return discount;
14 | }
15 |
16 | public void setDiscount(int discount) {
17 | this.discount = discount;
18 | }
19 |
20 | public void setFinancialPackage(ProductPackage financialPackage) {
21 | this.financialPackage = financialPackage;
22 | }
23 |
24 | public ProductPackage getFinancialPackage() {
25 | return financialPackage;
26 | }
27 |
28 | public void addSingleProduct(Product prod){
29 | products.add(prod);
30 | }
31 |
32 | public List getProducts() {
33 | return products;
34 | }
35 |
36 | public enum Product {
37 | LOAN,
38 | SUPERLOAN,
39 | INSURANCE
40 | }
41 |
42 | public enum ProductPackage {
43 | GETTINGSTARTED_PACKAGE,
44 | CAREERFOCUSED_PACKAGE,
45 | ADVICEFAMILY_PACKAGE,
46 | EMPTYNESTER_PACKAGE,
47 | GOLDENYEARS_PACKAGE,
48 | BUSINESS_PACKAGE
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/resources/net/cloudburo/drools/rules/DroolsDiscount.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/talfco/tutorial-drools-decisiontable/6222de942da9d40247cd11c21b3035ca98628ede/src/main/resources/net/cloudburo/drools/rules/DroolsDiscount.xlsx
--------------------------------------------------------------------------------
/src/test/java/net/cloudburo/drools/service/DiscountExcelIntegrationTest.java:
--------------------------------------------------------------------------------
1 | package net.cloudburo.drools.service;
2 |
3 | import static org.junit.Assert.assertEquals;
4 |
5 | import net.cloudburo.drools.model.Offer;
6 | import org.junit.Before;
7 | import org.junit.Test;
8 | import org.kie.api.io.Resource;
9 | import org.kie.api.runtime.KieSession;
10 | import org.kie.internal.io.ResourceFactory;
11 |
12 | import net.cloudburo.drools.config.DroolsBeanFactory;
13 | import net.cloudburo.drools.model.Customer;
14 |
15 | public class DiscountExcelIntegrationTest {
16 |
17 | private KieSession kSession;
18 |
19 | @Before
20 | public void setup() {
21 | Resource resource = ResourceFactory.newClassPathResource("net/cloudburo/drools/rules/DroolsDiscount.xlsx", getClass());
22 | kSession = new DroolsBeanFactory().getKieSession(resource);
23 | System.out.println(new DroolsBeanFactory().getDrlFromExcel("net/cloudburo/drools/rules/DroolsDiscount.xlsx"));
24 | }
25 |
26 | @Test
27 | public void giveIndvidualLongStanding_whenFireRule_thenCorrectDiscount() throws Exception {
28 | // Add a Customer with its personal data and needs, used for the LHS Decision
29 | Customer customer = new Customer();
30 | customer.setLifeStage(Customer.CustomerLifeStage.CAREERFOCUSED);
31 | customer.setAssets(Customer.CustomerAssets.FROM150KTO300K);
32 | customer.addNeed(Customer.CustomerNeed.LIFEINSURANCE);
33 | customer.addNeed(Customer.CustomerNeed.SAVINGACCOUNT);
34 | customer.addNeed(Customer.CustomerNeed.MORTAGE);
35 | kSession.insert(customer);
36 | // Now we add the global variable which we use to communicate back our
37 | Offer offer = new Offer();
38 | kSession.setGlobal("offer", offer);
39 | kSession.fireAllRules();
40 | assertEquals(offer.getDiscount(), 10);
41 | assertEquals(offer.getFinancialPackage(), Offer.ProductPackage.CAREERFOCUSED_PACKAGE);
42 | assertEquals(offer.getProducts().size(),2);
43 | }
44 |
45 |
46 | }
47 |
--------------------------------------------------------------------------------