summaryrefslogtreecommitdiffstats
path: root/services/services-engine/src/site-docs/adoc/fragments/config-interfaces-general.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'services/services-engine/src/site-docs/adoc/fragments/config-interfaces-general.adoc')
-rw-r--r--services/services-engine/src/site-docs/adoc/fragments/config-interfaces-general.adoc124
1 files changed, 124 insertions, 0 deletions
diff --git a/services/services-engine/src/site-docs/adoc/fragments/config-interfaces-general.adoc b/services/services-engine/src/site-docs/adoc/fragments/config-interfaces-general.adoc
new file mode 100644
index 000000000..54ffcca1a
--- /dev/null
+++ b/services/services-engine/src/site-docs/adoc/fragments/config-interfaces-general.adoc
@@ -0,0 +1,124 @@
+//
+// ============LICENSE_START=======================================================
+// Copyright (C) 2016-2018 Ericsson. All rights reserved.
+// ================================================================================
+// This file is licensed under the CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE
+// Full license text at https://creativecommons.org/licenses/by/4.0/legalcode
+//
+// SPDX-License-Identifier: CC-BY-4.0
+// ============LICENSE_END=========================================================
+//
+// @author Sven van der Meer (sven.van.der.meer@ericsson.com)
+//
+
+== Input and Output Interfaces
+
+An APEX engine has two main interfaces:
+
+- An _input_ interface to receive events: also known as ingress interface or consumer, receiving (consuming) events commonly named triggers, and
+- An _output_ interface to publish produced events: also known as egress interface or producer, sending (publishing) events commonly named actions or action events.
+
+The input and output interface is configured in terms of inputs and outputs, respectively.
+Each input and output is a combination of a carrier technology and an event protocol.
+Carrier technologies and event protocols are provided by plugins, each with its own specific configuration.
+Most carrier technologies can be configured for input as well as output.
+Most event protocols can be used for all carrier technologies.
+One exception is the JMS object event protocol, which can only be used for the JMS carrier technology.
+Some further restrictions apply (for instance for carrier technologies using bi- or uni-directional modes).
+
+Input and output interface can be configured separately, in isolation, with any number of carrier technologies.
+The resulting general configuration options are:
+
+- Input interface with one or more inputs
+ ** each input with a carrier technology and an event protocol
+ ** some inputs with optional synchronous mode
+ ** some event protocols with additional parameters
+- Output interface with one or more outputs
+ ** each output with a carrier technology and an event encoding
+ ** some outputs with optional synchronous mode
+ ** some event protocols with additional parameters
+
+The configuration for input and output is contained in `eventInputParameters` and `eventOutputParameters`, respectively.
+Inside here, one can configure any number of inputs and outputs.
+Each of them needs to have a unique identifier (name), the content of the name is free form.
+The example below shows a configuration for two inputs and two outputs.
+
+[source%nowrap,json]
+----
+"eventInputParameters": { <1>
+ "FirstConsumer": { <2>
+ "carrierTechnologyParameters" : {...}, <3>
+ "eventProtocolParameters":{...}, <4>
+ ... <5>
+ },
+ "SecondConsumer": { <6>
+ "carrierTechnologyParameters" : {...}, <7>
+ "eventProtocolParameters":{...}, <8>
+ ... <9>
+ },
+},
+"eventOutputParameters": { <10>
+ "FirstProducer": { <11>
+ "carrierTechnologyParameters":{...}, <12>
+ "eventProtocolParameters":{...}, <13>
+ ... <14>
+ },
+ "SecondProducer": { <15>
+ "carrierTechnologyParameters":{...}, <16>
+ "eventProtocolParameters":{...}, <17>
+ ... <18>
+ }
+}
+----
+<1> input interface configuration, APEX input plugins
+<2> first input called `FirstConsumer`
+<3> carrier technology for plugin
+<4> event protocol for plugin
+<5> any other input configuration (e.g. event name filter, see below)
+<6> second input called `SecondConsumer`
+<7> carrier technology for plugin
+<8> event protocol for plugin
+<9> any other plugin configuration
+<10> output interface configuration, APEX output plugins
+<11> first output called `FirstProducer`
+<12> carrier technology for plugin
+<13> event protocol for plugin
+<14> any other plugin configuration
+<15> second output called `SecondProducer`
+<16> carrier technology for plugin
+<17> event protocol for plugin
+<18> any other output configuration (e.g. event name filter, see below)
+
+=== Event Filters
+
+APEX will always send an event after a policy execution is finished.
+For a successful execution, the event sent is the output event created by the policy.
+In case the policy does not create an output event, APEX will create a new event with all input event fields plus an additional field `exceptionMessage` with an exception message.
+
+There are situations in which this auto-generated error event might not be required or wanted:
+
+* when a policy failing should not result in an event send out via an output interface
+* when the auto-generated event goes back in an APEX engine (or the same APEX engine), this can create endless loops
+* the auto-generated event should go to a special output interface or channel
+
+All of these situations are supported by a filter option using a wildecard (regular expression) configuration on APEX I/O interfaces.
+The parameter is called `eventNameFilter` and the value are link:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html[Java regular expressions] (a link:http://www.vogella.com/tutorials/JavaRegularExpressions/article.html[tutorial]).
+The following code shows some examples:
+
+[source%nowrap,json]
+----
+"eventInputParameters": {
+ "Input1": {
+ "carrierTechnologyParameters" : {...},
+ "eventProtocolParameters":{...},
+ "eventNameFilter" : "^E[Vv][Ee][Nn][Tt][0-9]004$" <1>
+ }
+},
+"eventOutputParameters": {
+ "Output1": {
+ "carrierTechnologyParameters":{...},
+ "eventProtocolParameters":{...},
+ "eventNameFilter" : "^E[Vv][Ee][Nn][Tt][0-9]104$" <2>
+ }
+}
+----