diff options
author | aditya.puthuparambil <aditya.puthuparambil@est.tech> | 2020-04-01 13:20:53 +0100 |
---|---|---|
committer | aditya.puthuparambil <aditya.puthuparambil@est.tech> | 2020-04-01 13:20:53 +0100 |
commit | 42cd61abcc9cd27e72eaa34a746ee176dbf30750 (patch) | |
tree | 26f024512a3ff5dfa0c7064f361546124311dfaa | |
parent | fa1feb20739e4d6debb0599800ec9440dc1fa922 (diff) |
My First Policy State Finalizer Example
Issue-ID: POLICY-1122
Signed-off-by: aditya.puthuparambil <aditya.puthuparambil@est.tech>
Change-Id: I552b58f39325982f1e26e59b352dfbe70cf35e7c
17 files changed, 875 insertions, 163 deletions
diff --git a/examples/examples-myfirstpolicy/pom.xml b/examples/examples-myfirstpolicy/pom.xml index 16b49552c..6eebf6320 100644 --- a/examples/examples-myfirstpolicy/pom.xml +++ b/examples/examples-myfirstpolicy/pom.xml @@ -19,173 +19,217 @@ ============LICENSE_END========================================================= --> <project - xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.onap.policy.apex-pdp.examples</groupId> - <artifactId>examples</artifactId> - <version>2.3.1-SNAPSHOT</version> - </parent> + xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.onap.policy.apex-pdp.examples</groupId> + <artifactId>examples</artifactId> + <version>2.3.1-SNAPSHOT</version> + </parent> - <artifactId>examples-myfirstpolicy</artifactId> - <name>${project.artifactId}</name> - <description>Specific code for the Apex MyFirstPolicy Example</description> + <artifactId>examples-myfirstpolicy</artifactId> + <name>${project.artifactId}</name> + <description>Specific code for the Apex MyFirstPolicy Example</description> - <properties> - <policymodel1m.name>MyFirstPolicyModelMvel_0.0.1</policymodel1m.name> - <policymodel1j.name>MyFirstPolicyModelJavascript_0.0.1</policymodel1j.name> - <policymodel2.name>MyFirstPolicyModel_0.0.1</policymodel2.name> - </properties> + <properties> + <policymodel1m.name>MyFirstPolicyModelMvel_0.0.1</policymodel1m.name> + <policymodel1j.name>MyFirstPolicyModelJavascript_0.0.1</policymodel1j.name> + <policymodel2.name>MyFirstPolicyModel_0.0.1</policymodel2.name> + <policymodel3.name>MyFirstPolicyModelSFL_0.0.1</policymodel3.name> + </properties> - <dependencies> - <dependency> - <groupId>org.onap.policy.apex-pdp.model</groupId> - <artifactId>policy-model</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onap.policy.apex-pdp.core</groupId> - <artifactId>core-engine</artifactId> - <version>${project.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.onap.policy.apex-pdp.core</groupId> - <artifactId>core-infrastructure</artifactId> - <version>${project.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.onap.policy.apex-pdp.auth</groupId> - <artifactId>cli-editor</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.onap.policy.apex-pdp.plugins.plugins-executor</groupId> - <artifactId>plugins-executor-mvel</artifactId> - <version>${project.version}</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.onap.policy.apex-pdp.plugins.plugins-executor</groupId> - <artifactId>plugins-executor-javascript</artifactId> - <version>${project.version}</version> - <scope>test</scope> - </dependency> - </dependencies> + <dependencies> + <dependency> + <groupId>org.onap.policy.apex-pdp.model</groupId> + <artifactId>policy-model</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.onap.policy.apex-pdp.core</groupId> + <artifactId>core-engine</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.onap.policy.apex-pdp.core</groupId> + <artifactId>core-infrastructure</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.onap.policy.apex-pdp.auth</groupId> + <artifactId>cli-editor</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.onap.policy.apex-pdp.plugins.plugins-executor</groupId> + <artifactId>plugins-executor-mvel</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.onap.policy.apex-pdp.plugins.plugins-executor</groupId> + <artifactId>plugins-executor-javascript</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> + </dependencies> - <build> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <executions> + <!-- Generate the APEX Policy JSON files from the APEX CLI command --> + <execution> + <id>generate-policy1m</id> + <phase>compile</phase> + <goals> + <goal>java</goal> + </goals> + <configuration> + <mainClass>org.onap.policy.apex.auth.clieditor.ApexCommandLineEditorMain</mainClass> + <classpathScope>compile</classpathScope> + <arguments> + <argument> + --command-file=${project.basedir}/src/main/resources/examples/models/MyFirstPolicy/1/${policymodel1m.name}.apex + </argument> + <argument> + --output-model-file=${project.build.directory}/classes/examples/models/MyFirstPolicy/1/${policymodel1m.name}.json + </argument> + <argument> + --log-file=${project.build.directory}/${policymodel1m.name}_policygeneration.log + </argument> + <argument>--working-dir=${project.basedir}</argument> + </arguments> + </configuration> + </execution> + <execution> + <id>generate-policy1j</id> + <phase>compile</phase> + <goals> + <goal>java</goal> + </goals> + <configuration> + <mainClass>org.onap.policy.apex.auth.clieditor.ApexCommandLineEditorMain</mainClass> + <classpathScope>compile</classpathScope> + <arguments> + <argument> + --command-file=${project.basedir}/src/main/resources/examples/models/MyFirstPolicy/1/${policymodel1j.name}.apex + </argument> + <argument> + --output-model-file=${project.build.directory}/classes/examples/models/MyFirstPolicy/1/${policymodel1j.name}.json + </argument> + <argument> + --log-file=${project.build.directory}/${policymodel1j.name}_policygeneration.log + </argument> + <argument>--working-dir=${project.basedir}</argument> + </arguments> + </configuration> + </execution> + <execution> + <id>generate-policy2</id> + <phase>compile</phase> + <goals> + <goal>java</goal> + </goals> + <configuration> + <mainClass>org.onap.policy.apex.auth.clieditor.ApexCommandLineEditorMain</mainClass> + <classpathScope>compile</classpathScope> + <arguments> + <argument> + --command-file=${project.basedir}/src/main/resources/examples/models/MyFirstPolicy/2/${policymodel2.name}.apex + </argument> + <argument> + --output-model-file=${project.build.directory}/classes/examples/models/MyFirstPolicy/2/${policymodel2.name}.json + </argument> + <argument> + --log-file=${project.build.directory}/${policymodel2.name}_policygeneration.log + </argument> + <argument>--working-dir=${project.basedir}</argument> + </arguments> + </configuration> + </execution> + <execution> + <id>generate-policy3</id> + <phase>compile</phase> + <goals> + <goal>java</goal> + </goals> + <configuration> + <mainClass>org.onap.policy.apex.auth.clieditor.ApexCommandLineEditorMain</mainClass> + <classpathScope>compile</classpathScope> + <arguments> + <argument> + --command-file=${project.basedir}/src/main/resources/examples/models/MyFirstPolicy/3/${policymodel3.name}.apex + </argument> + <argument> + --output-model-file=${project.build.directory}/classes/examples/models/MyFirstPolicy/3/${policymodel3.name}.json + </argument> + <argument> + --log-file=${project.build.directory}/${policymodel3.name}_policygeneration.log + </argument> + <argument>--working-dir=${project.basedir}</argument> + </arguments> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + + <profiles> + <profile> + <id>apexSite</id> + <activation> + <property> + <name>apexSite</name> + </property> + </activation> + <properties> + <adsite-examples-myfirstpolicy-dir>${project.basedir}/src + </adsite-examples-myfirstpolicy-dir> + </properties> + <distributionManagement> + <site> + <id>${project.artifactId}-site</id> + <url>${apex.adsite.prefix}/modules/${project.parent.artifactId}/${project.artifactId}/ + </url> + </site> + </distributionManagement> + <build> <plugins> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <executions> - <!-- Generate the APEX Policy JSON files from the APEX CLI command --> - <execution> - <id>generate-policy1m</id> - <phase>compile</phase> - <goals> - <goal>java</goal> - </goals> - <configuration> - <mainClass>org.onap.policy.apex.auth.clieditor.ApexCommandLineEditorMain</mainClass> - <classpathScope>compile</classpathScope> - <arguments> - <argument>--command-file=${project.basedir}/src/main/resources/examples/models/MyFirstPolicy/1/${policymodel1m.name}.apex</argument> - <argument>--output-model-file=${project.build.directory}/classes/examples/models/MyFirstPolicy/1/${policymodel1m.name}.json</argument> - <argument>--log-file=${project.build.directory}/${policymodel1.name}_policygeneration.log</argument> - <argument>--working-dir=${project.basedir}</argument> - </arguments> - </configuration> - </execution> - <execution> - <id>generate-policy1j</id> - <phase>compile</phase> - <goals> - <goal>java</goal> - </goals> - <configuration> - <mainClass>org.onap.policy.apex.auth.clieditor.ApexCommandLineEditorMain</mainClass> - <classpathScope>compile</classpathScope> - <arguments> - <argument>--command-file=${project.basedir}/src/main/resources/examples/models/MyFirstPolicy/1/${policymodel1j.name}.apex</argument> - <argument>--output-model-file=${project.build.directory}/classes/examples/models/MyFirstPolicy/1/${policymodel1j.name}.json</argument> - <argument>--log-file=${project.build.directory}/${policymodel1.name}_policygeneration.log</argument> - <argument>--working-dir=${project.basedir}</argument> - </arguments> - </configuration> - </execution> - <execution> - <id>generate-policy2</id> - <phase>compile</phase> - <goals> - <goal>java</goal> - </goals> - <configuration> - <mainClass>org.onap.policy.apex.auth.clieditor.ApexCommandLineEditorMain</mainClass> - <classpathScope>compile</classpathScope> - <arguments> - <argument>--command-file=${project.basedir}/src/main/resources/examples/models/MyFirstPolicy/2/${policymodel2.name}.apex</argument> - <argument>--output-model-file=${project.build.directory}/classes/examples/models/MyFirstPolicy/2/${policymodel2.name}.json</argument> - <argument>--log-file=${project.build.directory}/${policymodel2.name}_policygeneration.log</argument> - <argument>--working-dir=${project.basedir}</argument> - </arguments> - </configuration> - </execution> - </executions> - </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-resources-plugin</artifactId> + <version>3.0.2</version> + <executions> + <execution> + <id>copy-domain-mfp-images</id> + <phase>initialize</phase> + <goals> + <goal>copy-resources</goal> + </goals> + <configuration> + <resources> + <resource> + <directory>${project.basedir}/src/site-docs/adoc/resources/images</directory> + <includes> + <include>**/*.jpg</include> + <include>**/*.png</include> + </includes> + </resource> + </resources> + <outputDirectory>${project.build.directory}/site/images</outputDirectory> + </configuration> + </execution> + </executions> + </plugin> </plugins> - </build> - - <profiles> - <profile> - <id>apexSite</id> - <activation> - <property> - <name>apexSite</name> - </property> - </activation> - <properties> - <adsite-examples-myfirstpolicy-dir>${project.basedir}/src</adsite-examples-myfirstpolicy-dir> - </properties> - <distributionManagement> - <site> - <id>${project.artifactId}-site</id> - <url>${apex.adsite.prefix}/modules/${project.parent.artifactId}/${project.artifactId}/</url> - </site> - </distributionManagement> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-resources-plugin</artifactId> - <version>3.0.2</version> - <executions> - <execution> - <id>copy-domain-mfp-images</id> - <phase>initialize</phase> - <goals> - <goal>copy-resources</goal> - </goals> - <configuration> - <resources> - <resource> - <directory>${project.basedir}/src/site-docs/adoc/resources/images</directory> - <includes> - <include>**/*.jpg</include> - <include>**/*.png</include> - </includes> - </resource> - </resources> - <outputDirectory>${project.build.directory}/site/images</outputDirectory> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> - </profile> - </profiles> + </build> + </profile> + </profiles> </project> diff --git a/examples/examples-myfirstpolicy/src/main/resources/examples/config/MyFirstPolicy/3/MyFirstPolicyConfigFile2StdoutJsonEvent.json b/examples/examples-myfirstpolicy/src/main/resources/examples/config/MyFirstPolicy/3/MyFirstPolicyConfigFile2StdoutJsonEvent.json new file mode 100644 index 000000000..655945963 --- /dev/null +++ b/examples/examples-myfirstpolicy/src/main/resources/examples/config/MyFirstPolicy/3/MyFirstPolicyConfigFile2StdoutJsonEvent.json @@ -0,0 +1,46 @@ +{ + "engineServiceParameters": { + "name": "MyFirstPolicyApexEngine", + "version": "0.0.1", + "id": 103, + "instanceCount": 4, + "deploymentPort": 12345, + "policyModelFileName": "examples/models/MyFirstPolicy/3/MyFirstPolicyModelSFL_0.0.1.json", + "engineParameters": { + "executorParameters": { + "MVEL": { + "parameterClassName": "org.onap.policy.apex.plugins.executor.mvel.MvelExecutorParameters" + }, + "JAVASCRIPT": { + "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters" + } + } + } + }, + "eventOutputParameters": { + "FirstProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "FILE", + "parameters": { + "standardIo": true + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON" + } + } + }, + "eventInputParameters": { + "FirstConsumer": { + "carrierTechnologyParameters": { + "carrierTechnology": "FILE", + "parameters": { + "fileName": "examples/events/MyFirstPolicy/3/EventsIn.json.txt" + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON" + } + } + } +} diff --git a/examples/examples-myfirstpolicy/src/main/resources/examples/config/MyFirstPolicy/3/MyFirstPolicyConfigStdin2StdoutJsonEvent.json b/examples/examples-myfirstpolicy/src/main/resources/examples/config/MyFirstPolicy/3/MyFirstPolicyConfigStdin2StdoutJsonEvent.json new file mode 100644 index 000000000..6084d8d34 --- /dev/null +++ b/examples/examples-myfirstpolicy/src/main/resources/examples/config/MyFirstPolicy/3/MyFirstPolicyConfigStdin2StdoutJsonEvent.json @@ -0,0 +1,46 @@ +{ + "engineServiceParameters": { + "name": "MyFirstPolicyApexEngine", + "version": "0.0.1", + "id": 101, + "instanceCount": 4, + "deploymentPort": 12345, + "policyModelFileName": "C:\\Users\\adityaputhuparambil\\onap\\apex\\examples\\examples-myfirstpolicy\\target\\examples\\models\\MyFirstPolicy\\3\\MyFirstPolicyModelSFL_0.0.1.json", + "engineParameters": { + "executorParameters": { + "MVEL": { + "parameterClassName": "org.onap.policy.apex.plugins.executor.mvel.MvelExecutorParameters" + }, + "JAVASCRIPT": { + "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters" + } + } + } + }, + "eventOutputParameters": { + "FirstProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "FILE", + "parameters": { + "standardIo": true + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON" + } + } + }, + "eventInputParameters": { + "FirstConsumer": { + "carrierTechnologyParameters": { + "carrierTechnology": "FILE", + "parameters": { + "standardIo": true + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON" + } + } + } +} diff --git a/examples/examples-myfirstpolicy/src/main/resources/examples/config/MyFirstPolicy/3/MyFirstPolicyConfigWs2WsServerJsonEvent.json b/examples/examples-myfirstpolicy/src/main/resources/examples/config/MyFirstPolicy/3/MyFirstPolicyConfigWs2WsServerJsonEvent.json new file mode 100644 index 000000000..14d6a43b0 --- /dev/null +++ b/examples/examples-myfirstpolicy/src/main/resources/examples/config/MyFirstPolicy/3/MyFirstPolicyConfigWs2WsServerJsonEvent.json @@ -0,0 +1,50 @@ +{ + "engineServiceParameters": { + "name": "MyFirstPolicyApexEngine", + "version": "0.0.1", + "id": 101, + "instanceCount": 4, + "deploymentPort": 12345, + "policyModelFileName": "examples/models/MyFirstPolicy/3/MyFirstPolicyModelSFL_0.0.1.json", + "engineParameters": { + "executorParameters": { + "MVEL": { + "parameterClassName": "org.onap.policy.apex.plugins.executor.mvel.MvelExecutorParameters" + }, + "JAVASCRIPT": { + "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters" + } + } + } + }, + "eventOutputParameters": { + "aProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "WEBSOCKET", + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.websocket.WebSocketCarrierTechnologyParameters", + "parameters": { + "wsClient": false, + "port": 4000 + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON" + } + } + }, + "eventInputParameters": { + "aConsumer": { + "carrierTechnologyParameters": { + "carrierTechnology": "WEBSOCKET", + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.websocket.WebSocketCarrierTechnologyParameters", + "parameters": { + "wsClient": false, + "port": 3000 + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON" + } + } + } +} diff --git a/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventIn_BoozeItem_084106GMT.json b/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventIn_BoozeItem_084106GMT.json new file mode 100644 index 000000000..4c5af6c2d --- /dev/null +++ b/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventIn_BoozeItem_084106GMT.json @@ -0,0 +1,12 @@ +{ + "nameSpace": "com.hyperm", + "name": "SALE_INPUT", + "version": "0.0.1", + "time": 1483346466000, + "sale_ID": 99999992, + "amount": 1249, + "item_ID": 1012, + "quantity": 1, + "assistant_ID": 12, + "branch_ID": 2 +}
\ No newline at end of file diff --git a/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventIn_BoozeItem_201713GMT.json b/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventIn_BoozeItem_201713GMT.json new file mode 100644 index 000000000..cc18e7ddd --- /dev/null +++ b/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventIn_BoozeItem_201713GMT.json @@ -0,0 +1,12 @@ +{ + "nameSpace": "com.hyperm", + "name": "SALE_INPUT", + "version": "0.0.1", + "time": 1482265033000, + "sale_ID": 99999993, + "amount": 4799, + "item_ID": 1943, + "quantity": 2, + "assistant_ID": 9, + "branch_ID": 3 +}
\ No newline at end of file diff --git a/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventIn_NonBoozeItem_101309GMT.json b/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventIn_NonBoozeItem_101309GMT.json new file mode 100644 index 000000000..1cdc4992c --- /dev/null +++ b/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventIn_NonBoozeItem_101309GMT.json @@ -0,0 +1,13 @@ +{ + "nameSpace": "com.hyperm", + "name": "SALE_INPUT", + "version": "0.0.1", + "time": 1483351989000, + "sale_ID": 99999991, + "amount": 299, + "item_ID": 5123, + "quantity": 1, + "assistant_ID": 23, + "branch_ID": 1, + "notes": "Special Offer!!" +}
\ No newline at end of file diff --git a/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventOut_BoozeItem_084106GMT.json b/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventOut_BoozeItem_084106GMT.json new file mode 100644 index 000000000..3625f908f --- /dev/null +++ b/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventOut_BoozeItem_084106GMT.json @@ -0,0 +1,17 @@ +{ + "nameSpace": "com.hyperm", + "name": "SALE_AUTH", + "version": "0.0.1", + "source": "", + "target": "", + "amount": 1249, + "assistant_ID": 12, + "authorised": false, + "branch_ID": 2, + "item_ID": 1012, + "message": "Sale not authorised by policy task MorningBoozeCheck for time 08:41:06 GMT. Alcohol can not be sold between 00:00:00 GMT and 11:30:00 GMT", + "notes": null, + "quantity": 1, + "sale_ID": 99999992, + "time": 1483346466000 +}
\ No newline at end of file diff --git a/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventOut_BoozeItem_201713GMT.json b/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventOut_BoozeItem_201713GMT.json new file mode 100644 index 000000000..2b760d5f1 --- /dev/null +++ b/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventOut_BoozeItem_201713GMT.json @@ -0,0 +1,17 @@ +{ + "name": "SALE_AUTH", + "version": "0.0.1", + "nameSpace": "com.hyperm", + "source": "", + "target": "", + "amount": 4799, + "assistant_ID": 9, + "authorised": true, + "branch_ID": 3, + "item_ID": 1943, + "message": "Sale authorised by policy task MorningBoozeCheck for time 20:17:13 GMT", + "notes": null, + "quantity": 2, + "sale_ID": 99999993, + "time": 1482265033000 +}
\ No newline at end of file diff --git a/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventOut_NonBoozeItem_101309GMT.json b/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventOut_NonBoozeItem_101309GMT.json new file mode 100644 index 000000000..b90c6fa0c --- /dev/null +++ b/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventOut_NonBoozeItem_101309GMT.json @@ -0,0 +1,17 @@ +{ + "name": "SALE_AUTH", + "version": "0.0.1", + "nameSpace": "com.hyperm", + "source": "", + "target": "", + "amount": 299, + "assistant_ID": 23, + "authorised": true, + "branch_ID": 1, + "item_ID": 5123, + "message": "Sale authorised by policy task MorningBoozeCheck for time 10:13:09 GMT", + "notes": "Special Offer!!", + "quantity": 1, + "sale_ID": 99999991, + "time": 1483351989000 +}
\ No newline at end of file diff --git a/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventsIn.json.txt b/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventsIn.json.txt new file mode 100644 index 000000000..a9570f989 --- /dev/null +++ b/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventsIn.json.txt @@ -0,0 +1,37 @@ +{ + "nameSpace": "com.hyperm", + "name": "SALE_INPUT", + "version": "0.0.1", + "time": 1483346466000, + "sale_ID": 99999992, + "amount": 1249, + "item_ID": 1012, + "quantity": 1, + "assistant_ID": 12, + "branch_ID": 2 +} +{ + "nameSpace": "com.hyperm", + "name": "SALE_INPUT", + "version": "0.0.1", + "time": 1482265033000, + "sale_ID": 99999993, + "amount": 4799, + "item_ID": 1943, + "quantity": 2, + "assistant_ID": 9, + "branch_ID": 3 +} +{ + "nameSpace": "com.hyperm", + "name": "SALE_INPUT", + "version": "0.0.1", + "time": 1483351989000, + "sale_ID": 99999991, + "amount": 299, + "item_ID": 5123, + "quantity": 1, + "assistant_ID": 23, + "branch_ID": 1, + "notes": "Special Offer!!" +}
\ No newline at end of file diff --git a/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventsOut.json.txt b/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventsOut.json.txt new file mode 100644 index 000000000..46fd887f4 --- /dev/null +++ b/examples/examples-myfirstpolicy/src/main/resources/examples/events/MyFirstPolicy/3/EventsOut.json.txt @@ -0,0 +1,51 @@ +{ + "nameSpace": "com.hyperm", + "name": "SALE_AUTH", + "version": "0.0.1", + "source": "", + "target": "", + "amount": 1249, + "assistant_ID": 12, + "authorised": false, + "branch_ID": 2, + "item_ID": 1012, + "message": "Sale not authorised by policy task MorningBoozeCheck for time 08:41:06 GMT. Alcohol can not be sold between 00:00:00 GMT and 11:30:00 GMT", + "notes": null, + "quantity": 1, + "sale_ID": 99999992, + "time": 1483346466000 +} +{ + "name": "SALE_AUTH", + "version": "0.0.1", + "nameSpace": "com.hyperm", + "source": "", + "target": "", + "amount": 4799, + "assistant_ID": 9, + "authorised": true, + "branch_ID": 3, + "item_ID": 1943, + "message": "Sale authorised by policy task MorningBoozeCheck for time 20:17:13 GMT", + "notes": null, + "quantity": 2, + "sale_ID": 99999993, + "time": 1482265033000 +} +{ + "name": "SALE_AUTH", + "version": "0.0.1", + "nameSpace": "com.hyperm", + "source": "", + "target": "", + "amount": 299, + "assistant_ID": 23, + "authorised": true, + "branch_ID": 1, + "item_ID": 5123, + "message": "Sale authorised by policy task MorningBoozeCheck for time 10:13:09 GMT", + "notes": "Special Offer!!", + "quantity": 1, + "sale_ID": 99999991, + "time": 1483351989000 +}
\ No newline at end of file diff --git a/examples/examples-myfirstpolicy/src/main/resources/examples/models/MyFirstPolicy/3/AlternateRecommendationCreate.mvel b/examples/examples-myfirstpolicy/src/main/resources/examples/models/MyFirstPolicy/3/AlternateRecommendationCreate.mvel new file mode 100644 index 000000000..3c98c9f3b --- /dev/null +++ b/examples/examples-myfirstpolicy/src/main/resources/examples/models/MyFirstPolicy/3/AlternateRecommendationCreate.mvel @@ -0,0 +1,29 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) (C) 2020 Nordix Foundation. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +logger.info("Task Execution: '"+subject.id+"'. Input Fields: '"+inFields+"'"); + +outFields.put("sale_ID" , inFields.get("sale_ID")); +outFields.put("message", "Please choose a non -alcoholic drink :)"); +return true; + +/* +This task provides recommendation to buy a non alcoholic drink. :-) +*/ diff --git a/examples/examples-myfirstpolicy/src/main/resources/examples/models/MyFirstPolicy/3/BoozeConcessionCheck.mvel b/examples/examples-myfirstpolicy/src/main/resources/examples/models/MyFirstPolicy/3/BoozeConcessionCheck.mvel new file mode 100644 index 000000000..b12933348 --- /dev/null +++ b/examples/examples-myfirstpolicy/src/main/resources/examples/models/MyFirstPolicy/3/BoozeConcessionCheck.mvel @@ -0,0 +1,39 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +logger.info("Task Execution: '"+subject.id+"'. Input Fields: '"+inFields+"'"); + +outFields.put("sale_ID" , inFields.get("sale_ID")); + +if(inFields.get("quantity") != null && inFields.get("quantity") >2){ + outFields.put("message", false); + outFields.put("message", "Sale authorised by policy task "+subject.taskName+ + " concession 10%"); + return true; +} +else{ + outFields.put("message", "Sale authorised by policy task "+subject.taskName+ + " is not eligible for concession"); + return true; +} + +/* +This task checks if a sale quantity for an item that is approved for sale. +If the quantity is greater than 2 , the user is eligible for 10 % concession. +*/ diff --git a/examples/examples-myfirstpolicy/src/main/resources/examples/models/MyFirstPolicy/3/MorningBoozeCheck.mvel b/examples/examples-myfirstpolicy/src/main/resources/examples/models/MyFirstPolicy/3/MorningBoozeCheck.mvel new file mode 100644 index 000000000..fc669dc3a --- /dev/null +++ b/examples/examples-myfirstpolicy/src/main/resources/examples/models/MyFirstPolicy/3/MorningBoozeCheck.mvel @@ -0,0 +1,80 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +import java.util.Date; +import java.util.Calendar; +import java.util.TimeZone; +import java.text.SimpleDateFormat; + +logger.info("Task Execution: '"+subject.id+"'. Input Fields: '"+inFields+"'"); + +outFields.put("amount" , inFields.get("amount")); +outFields.put("assistant_ID", inFields.get("assistant_ID")); +outFields.put("notes" , inFields.get("notes")); +outFields.put("quantity" , inFields.get("quantity")); +outFields.put("branch_ID" , inFields.get("branch_ID")); +outFields.put("item_ID" , inFields.get("item_ID")); +outFields.put("time" , inFields.get("time")); +outFields.put("sale_ID" , inFields.get("sale_ID")); + +item_id = inFields.get("item_ID"); + +//The events used later to test this task use GMT timezone! +gmt = TimeZone.getTimeZone("GMT"); +timenow = Calendar.getInstance(gmt); +df = new SimpleDateFormat("HH:mm:ss z"); +df.setTimeZone(gmt); +timenow.setTimeInMillis(inFields.get("time")); + +midnight = timenow.clone(); +midnight.set( + timenow.get(Calendar.YEAR),timenow.get(Calendar.MONTH), + timenow.get(Calendar.DATE),0,0,0); +eleven30 = timenow.clone(); +eleven30.set( + timenow.get(Calendar.YEAR),timenow.get(Calendar.MONTH), + timenow.get(Calendar.DATE),11,30,0); + +itemisalcohol = false; +if(item_id != null && item_id >=1000 && item_id < 2000) + itemisalcohol = true; + +if( itemisalcohol + && timenow.after(midnight) && timenow.before(eleven30)){ + outFields.put("authorised", false); + outFields.put("message", "Sale not authorised by policy task "+subject.taskName+ + " for time "+df.format(timenow.getTime())+ + ". Alcohol can not be sold between "+df.format(midnight.getTime())+ + " and "+df.format(eleven30.getTime())); + return true; +} +else{ + outFields.put("authorised", true); + outFields.put("message", "Sale authorised by policy task "+subject.taskName+ + " for time "+df.format(timenow.getTime())); + return true; +} + +/* +This task checks if a sale request is for an item that is an alcoholic drink. +If the local time is between 00:00:00 GMT and 11:30:00 GMT then the sale is not +authorised. Otherwise the sale is authorised. +In this implementation we assume that items with item_ID value between 1000 and +2000 are all alcoholic drinks :-) +*/ diff --git a/examples/examples-myfirstpolicy/src/main/resources/examples/models/MyFirstPolicy/3/MyFirstPolicyModelSFL_0.0.1.apex b/examples/examples-myfirstpolicy/src/main/resources/examples/models/MyFirstPolicy/3/MyFirstPolicyModelSFL_0.0.1.apex new file mode 100644 index 000000000..48491d030 --- /dev/null +++ b/examples/examples-myfirstpolicy/src/main/resources/examples/models/MyFirstPolicy/3/MyFirstPolicyModelSFL_0.0.1.apex @@ -0,0 +1,162 @@ +#------------------------------------------------------------------------------- +# ============LICENSE_START======================================================= +# Copyright (C) 2020 Nordix Foundation. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= +#------------------------------------------------------------------------------- + +model create name=MyFirstPolicyModel version=0.0.1 uuid=540226fb-55ee-4f0e-a444-983a0494818e description="This is my first Apex Policy Model." + +schema create name=assistant_ID_type version=0.0.1 uuid=36df4c71-9616-4206-8b53-976a5cd4bd87 description="A type for 'assistant_ID' values" flavour=Java schema=java.lang.Long + +schema create name=authorised_type version=0.0.1 uuid=d48b619e-d00d-4008-b884-02d76ea4350b description="A type for 'authorised' values" flavour=Java schema=java.lang.Boolean + +schema create name=branch_ID_type version=0.0.1 uuid=6468845f-4122-4128-8e49-0f52c26078b5 description="A type for 'branch_ID' values" flavour=Java schema=java.lang.Long + +schema create name=item_ID_type version=0.0.1 uuid=4f227ff1-aee0-453a-b6b6-9a4b2e0da932 description="A type for 'item_ID' values" flavour=Java schema=java.lang.Long + +schema create name=message_type version=0.0.1 uuid=ad1431bb-3155-4e73-b5a3-b89bee498749 description="A type for 'message' values" flavour=Java schema=java.lang.String + +schema create name=notes_type version=0.0.1 uuid=eecfde90-896c-4343-8f9c-2603ced94e2d description="A type for 'notes' values" flavour=Java schema=java.lang.String + +schema create name=price_type version=0.0.1 uuid=52c2fc45-fd8c-463c-bd6f-d91b0554aea7 description="A type for 'amount'/'price' values" flavour=Java schema=java.lang.Long + +schema create name=quantity_type version=0.0.1 uuid=ac3d9842-80af-4a98-951c-bd79a431c613 description="A type for 'quantity' values" flavour=Java schema=java.lang.Integer + +schema create name=sale_ID_type version=0.0.1 uuid=cca47d74-7754-4a61-b163-ca31f66b157b description="A type for 'sale_ID' values" flavour=Java schema=java.lang.Long + +schema create name=timestamp_type version=0.0.1 uuid=fd594e88-411d-4a94-b2be-697b3a0d7adf description="A type for 'time' values" flavour=Java schema=java.lang.Long + +task create name=MorningBoozeCheck version=0.0.1 uuid=3351b0f4-cf06-4fa2-8823-edf67bd30223 description=LS +This task checks if the sales request is for an item that contains alcohol. +If the local time is between 00:00:00 and 11:30:00 then the sale is not authorised. Otherwise the sale is authorised. +In this implementation we assume that all items with item_ID values between 1000 and 2000 contain alcohol :-) +LE +task inputfield create name=MorningBoozeCheck version=0.0.1 fieldName=sale_ID schemaName=sale_ID_type schemaVersion=0.0.1 +task inputfield create name=MorningBoozeCheck version=0.0.1 fieldName=amount schemaName=price_type schemaVersion=0.0.1 +task inputfield create name=MorningBoozeCheck version=0.0.1 fieldName=assistant_ID schemaName=assistant_ID_type schemaVersion=0.0.1 +task inputfield create name=MorningBoozeCheck version=0.0.1 fieldName=notes schemaName=notes_type schemaVersion=0.0.1 optional=true +task inputfield create name=MorningBoozeCheck version=0.0.1 fieldName=quantity schemaName=quantity_type schemaVersion=0.0.1 +task inputfield create name=MorningBoozeCheck version=0.0.1 fieldName=branch_ID schemaName=branch_ID_type schemaVersion=0.0.1 +task inputfield create name=MorningBoozeCheck version=0.0.1 fieldName=item_ID schemaName=item_ID_type schemaVersion=0.0.1 +task inputfield create name=MorningBoozeCheck version=0.0.1 fieldName=time schemaName=timestamp_type schemaVersion=0.0.1 +task outputfield create name=MorningBoozeCheck version=0.0.1 fieldName=sale_ID schemaName=sale_ID_type schemaVersion=0.0.1 +task outputfield create name=MorningBoozeCheck version=0.0.1 fieldName=amount schemaName=price_type schemaVersion=0.0.1 +task outputfield create name=MorningBoozeCheck version=0.0.1 fieldName=assistant_ID schemaName=assistant_ID_type schemaVersion=0.0.1 +task outputfield create name=MorningBoozeCheck version=0.0.1 fieldName=notes schemaName=notes_type schemaVersion=0.0.1 optional=true +task outputfield create name=MorningBoozeCheck version=0.0.1 fieldName=quantity schemaName=quantity_type schemaVersion=0.0.1 +task outputfield create name=MorningBoozeCheck version=0.0.1 fieldName=branch_ID schemaName=branch_ID_type schemaVersion=0.0.1 +task outputfield create name=MorningBoozeCheck version=0.0.1 fieldName=item_ID schemaName=item_ID_type schemaVersion=0.0.1 +task outputfield create name=MorningBoozeCheck version=0.0.1 fieldName=authorised schemaName=authorised_type schemaVersion=0.0.1 +task outputfield create name=MorningBoozeCheck version=0.0.1 fieldName=time schemaName=timestamp_type schemaVersion=0.0.1 +task outputfield create name=MorningBoozeCheck version=0.0.1 fieldName=message schemaName=message_type schemaVersion=0.0.1 optional=true + +task logic create name=MorningBoozeCheck version=0.0.1 logicFlavour=MVEL logic=LS +#MACROFILE:"src/main/resources/examples/models/MyFirstPolicy/3/MorningBoozeCheck.mvel" +LE + +task create name=BoozeConcessionCheck version=0.0.1 description=LS +This task checks if the approved sales item is eligible for concession +In this implementation we assume that all items with quantity greater than 2 is eligible for concession :-) +LE +task inputfield create name=BoozeConcessionCheck version=0.0.1 fieldName=sale_ID schemaName=sale_ID_type schemaVersion=0.0.1 +task inputfield create name=BoozeConcessionCheck version=0.0.1 fieldName=amount schemaName=price_type schemaVersion=0.0.1 +task inputfield create name=BoozeConcessionCheck version=0.0.1 fieldName=assistant_ID schemaName=assistant_ID_type schemaVersion=0.0.1 +task inputfield create name=BoozeConcessionCheck version=0.0.1 fieldName=notes schemaName=notes_type schemaVersion=0.0.1 optional=true +task inputfield create name=BoozeConcessionCheck version=0.0.1 fieldName=quantity schemaName=quantity_type schemaVersion=0.0.1 +task inputfield create name=BoozeConcessionCheck version=0.0.1 fieldName=branch_ID schemaName=branch_ID_type schemaVersion=0.0.1 +task inputfield create name=BoozeConcessionCheck version=0.0.1 fieldName=item_ID schemaName=item_ID_type schemaVersion=0.0.1 +task inputfield create name=BoozeConcessionCheck version=0.0.1 fieldName=authorised schemaName=authorised_type schemaVersion=0.0.1 +task inputfield create name=BoozeConcessionCheck version=0.0.1 fieldName=time schemaName=timestamp_type schemaVersion=0.0.1 +task inputfield create name=BoozeConcessionCheck version=0.0.1 fieldName=message schemaName=message_type schemaVersion=0.0.1 optional=true +task outputfield create name=BoozeConcessionCheck version=0.0.1 fieldName=sale_ID schemaName=sale_ID_type schemaVersion=0.0.1 +task outputfield create name=BoozeConcessionCheck version=0.0.1 fieldName=message schemaName=message_type schemaVersion=0.0.1 optional=true + +task logic create name=BoozeConcessionCheck version=0.0.1 logicFlavour=MVEL logic=LS +#MACROFILE:"src/main/resources/examples/models/MyFirstPolicy/3/BoozeConcessionCheck.mvel" +LE + +task create name=AlternateRecommendationCreate version=0.0.1 description=LS +This task checks if the approved sales item is rejected for sale +In this implementation we assume that all denied customers will be recommended to buy non alcoholic drinks :-) +LE +task inputfield create name=AlternateRecommendationCreate version=0.0.1 fieldName=sale_ID schemaName=sale_ID_type schemaVersion=0.0.1 +task inputfield create name=AlternateRecommendationCreate version=0.0.1 fieldName=amount schemaName=price_type schemaVersion=0.0.1 +task inputfield create name=AlternateRecommendationCreate version=0.0.1 fieldName=assistant_ID schemaName=assistant_ID_type schemaVersion=0.0.1 +task inputfield create name=AlternateRecommendationCreate version=0.0.1 fieldName=notes schemaName=notes_type schemaVersion=0.0.1 optional=true +task inputfield create name=AlternateRecommendationCreate version=0.0.1 fieldName=quantity schemaName=quantity_type schemaVersion=0.0.1 +task inputfield create name=AlternateRecommendationCreate version=0.0.1 fieldName=branch_ID schemaName=branch_ID_type schemaVersion=0.0.1 +task inputfield create name=AlternateRecommendationCreate version=0.0.1 fieldName=item_ID schemaName=item_ID_type schemaVersion=0.0.1 +task inputfield create name=AlternateRecommendationCreate version=0.0.1 fieldName=authorised schemaName=authorised_type schemaVersion=0.0.1 +task inputfield create name=AlternateRecommendationCreate version=0.0.1 fieldName=time schemaName=timestamp_type schemaVersion=0.0.1 +task inputfield create name=AlternateRecommendationCreate version=0.0.1 fieldName=message schemaName=message_type schemaVersion=0.0.1 optional=true +task outputfield create name=AlternateRecommendationCreate version=0.0.1 fieldName=sale_ID schemaName=sale_ID_type schemaVersion=0.0.1 +task outputfield create name=AlternateRecommendationCreate version=0.0.1 fieldName=message schemaName=message_type schemaVersion=0.0.1 optional=true + +task logic create name=AlternateRecommendationCreate version=0.0.1 logicFlavour=MVEL logic=LS +#MACROFILE:"src/main/resources/examples/models/MyFirstPolicy/3/AlternateRecommendationCreate.mvel" +LE + +event create name=SALE_AUTH version=0.0.1 uuid=c4500941-3f98-4080-a9cc-5b9753ed050b description="An event emitted by the Policy to indicate whether the sale of an item has been authorised" nameSpace=com.hyperm source="APEX" target="POS" +event parameter create name=SALE_AUTH version=0.0.1 parName=amount schemaName=price_type schemaVersion=0.0.1 +event parameter create name=SALE_AUTH version=0.0.1 parName=assistant_ID schemaName=assistant_ID_type schemaVersion=0.0.1 +event parameter create name=SALE_AUTH version=0.0.1 parName=authorised schemaName=authorised_type schemaVersion=0.0.1 +event parameter create name=SALE_AUTH version=0.0.1 parName=branch_ID schemaName=branch_ID_type schemaVersion=0.0.1 +event parameter create name=SALE_AUTH version=0.0.1 parName=item_ID schemaName=item_ID_type schemaVersion=0.0.1 +event parameter create name=SALE_AUTH version=0.0.1 parName=message schemaName=message_type schemaVersion=0.0.1 optional=true +event parameter create name=SALE_AUTH version=0.0.1 parName=notes schemaName=notes_type schemaVersion=0.0.1 optional=true +event parameter create name=SALE_AUTH version=0.0.1 parName=quantity schemaName=quantity_type schemaVersion=0.0.1 +event parameter create name=SALE_AUTH version=0.0.1 parName=sale_ID schemaName=sale_ID_type schemaVersion=0.0.1 +event parameter create name=SALE_AUTH version=0.0.1 parName=time schemaName=timestamp_type schemaVersion=0.0.1 + +event create name=SALE_INPUT version=0.0.1 uuid=4f04aa98-e917-4f4a-882a-c75ba5a99374 description="An event raised by the PoS system each time an item is scanned for purchase" nameSpace=com.hyperm source="POS" target="APEX" +event parameter create name=SALE_INPUT version=0.0.1 parName=amount schemaName=price_type schemaVersion=0.0.1 +event parameter create name=SALE_INPUT version=0.0.1 parName=assistant_ID schemaName=assistant_ID_type schemaVersion=0.0.1 +event parameter create name=SALE_INPUT version=0.0.1 parName=branch_ID schemaName=branch_ID_type schemaVersion=0.0.1 +event parameter create name=SALE_INPUT version=0.0.1 parName=item_ID schemaName=item_ID_type schemaVersion=0.0.1 +event parameter create name=SALE_INPUT version=0.0.1 parName=notes schemaName=notes_type schemaVersion=0.0.1 optional=true +event parameter create name=SALE_INPUT version=0.0.1 parName=quantity schemaName=quantity_type schemaVersion=0.0.1 +event parameter create name=SALE_INPUT version=0.0.1 parName=sale_ID schemaName=sale_ID_type schemaVersion=0.0.1 +event parameter create name=SALE_INPUT version=0.0.1 parName=time schemaName=timestamp_type schemaVersion=0.0.1 + +event create name=SALE_CONCESSION version=0.0.1 description="An event raised by the PoS system each time an item is approved for sale" nameSpace=com.hyperm source="POS" target="APEX" +event parameter create name=SALE_CONCESSION version=0.0.1 parName=sale_ID schemaName=sale_ID_type schemaVersion=0.0.1 +event parameter create name=SALE_CONCESSION version=0.0.1 parName=message schemaName=message_type schemaVersion=0.0.1 optional=true + +event create name=SALE_RECOMMEND version=0.0.1 description="An event raised by the PoS system each time an item is not approved for sale" nameSpace=com.hyperm source="POS" target="APEX" +event parameter create name=SALE_RECOMMEND version=0.0.1 parName=sale_ID schemaName=sale_ID_type schemaVersion=0.0.1 +event parameter create name=SALE_RECOMMEND version=0.0.1 parName=message schemaName=message_type schemaVersion=0.0.1 optional=true + +policy create name=MyFirstPolicy version=0.0.1 description="This is my first Apex policy. It checks if a sale should be authorised or not." template=FREEFORM firstState=BoozeAuthDecide +policy state create name=MyFirstPolicy version=0.0.1 stateName=BoozeAuthDecide triggerName=SALE_INPUT triggerVersion=0.0.1 defaultTaskName=MorningBoozeCheck defaultTaskVersion=0.0.1 +policy state create name=MyFirstPolicy version=0.0.1 stateName=BoozeConcessionDecide triggerName=SALE_AUTH triggerVersion=0.0.1 defaultTaskName=BoozeConcessionCheck defaultTaskVersion=0.0.1 +policy state create name=MyFirstPolicy version=0.0.1 stateName=AlternateRecommendation triggerName=SALE_AUTH triggerVersion=0.0.1 defaultTaskName=AlternateRecommendationCreate defaultTaskVersion=0.0.1 +policy state output create name=MyFirstPolicy version=0.0.1 stateName=BoozeAuthDecide outputName=MorningBoozeCheck_Output_Approved eventName=SALE_AUTH eventVersion=0.0.1 nextState=BoozeConcessionDecide +policy state output create name=MyFirstPolicy version=0.0.1 stateName=BoozeAuthDecide outputName=MorningBoozeCheck_Output_Denied eventName=SALE_AUTH eventVersion=0.0.1 nextState=AlternateRecommendation + +policy state finalizerlogic create name=MyFirstPolicy version=0.0.1 stateName=BoozeAuthDecide finalizerLogicName=MorningBoozeCheck_Output_logic logicFlavour=JAVASCRIPT logic=LS +#MACROFILE:"src/main/resources/examples/models/MyFirstPolicy/3/MyFirstPolicy_SFL.js" +LE +policy state taskref create name=MyFirstPolicy version=0.0.1 stateName=BoozeAuthDecide taskLocalName=MorningBoozeCheck taskName=MorningBoozeCheck taskVersion=0.0.1 outputType=LOGIC outputName=MorningBoozeCheck_Output_logic + +policy state output create name=MyFirstPolicy version=0.0.1 stateName=BoozeConcessionDecide outputName=BoozeConcessionCheck_Output eventName=SALE_CONCESSION eventVersion=0.0.1 nextState=NULL +policy state taskref create name=MyFirstPolicy version=0.0.1 stateName=BoozeConcessionDecide taskLocalName=BoozeConcessionCheck taskName=BoozeConcessionCheck taskVersion=0.0.1 outputType=DIRECT outputName=BoozeConcessionCheck_Output + +policy state output create name=MyFirstPolicy version=0.0.1 stateName=AlternateRecommendation outputName=AlternateRecommendationCreate_Output eventName=SALE_RECOMMEND eventVersion=0.0.1 nextState=NULL +policy state taskref create name=MyFirstPolicy version=0.0.1 stateName=AlternateRecommendation taskLocalName=AlternateRecommendationCreate taskName=AlternateRecommendationCreate taskVersion=0.0.1 outputType=DIRECT outputName=AlternateRecommendationCreate_Output + +validate +quit
\ No newline at end of file diff --git a/examples/examples-myfirstpolicy/src/main/resources/examples/models/MyFirstPolicy/3/MyFirstPolicy_SFL.js b/examples/examples-myfirstpolicy/src/main/resources/examples/models/MyFirstPolicy/3/MyFirstPolicy_SFL.js new file mode 100644 index 000000000..2088f7dda --- /dev/null +++ b/examples/examples-myfirstpolicy/src/main/resources/examples/models/MyFirstPolicy/3/MyFirstPolicy_SFL.js @@ -0,0 +1,40 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +executor.logger.info("finalizer execution: " + executor.subject.id); + +if (executor.fields.get("authorised") == true) { + executor.logger.info("finalizer if block "); + executor.setSelectedStateOutputName("MorningBoozeCheck_Output_Approved"); +} else { + executor.logger.info("finalizer else block "); + executor.setSelectedStateOutputName("MorningBoozeCheck_Output_Denied"); +} + +executor.logger.info("finalizer outputs ##2##: " + executor.stateOutputNames); +executor.logger.info( + "finalizer outputs:##2##: ##" + executor.selectedStateOutputName + "##"); + +true; + +/* +State Finaliser logic to decide the next state on the basis if the sale is approved or denied. +If the sale is approved, MorningBoozeCheck_Output_Approved is set as the state output. +If the sale is rejected, MorningBoozeCheck_Output_Denied is set as the state output. +*/ |