diff options
Diffstat (limited to 'services/services-engine/src')
11 files changed, 527 insertions, 0 deletions
diff --git a/services/services-engine/src/site-docs/adoc/fragments/config-example.adoc b/services/services-engine/src/site-docs/adoc/fragments/config-example.adoc new file mode 100644 index 000000000..dfbc397e9 --- /dev/null +++ b/services/services-engine/src/site-docs/adoc/fragments/config-example.adoc @@ -0,0 +1,103 @@ +// +// ============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) +// + +== A configuration example + +The following example loads all available plug-ins. + +Events are consumed from a Websocket, APEX as client. +Consumed event format is JSON. + +Events are produced to Kafka. +Produced event format is XML. + +[source%nowrap,json] +---- +{ + "engineServiceParameters" : { + "name" : "MyApexEngine", + "version" : "0.0.1", + "id" : 45, + "instanceCount" : 4, + "deploymentPort" : 12345, + "policyModelFileName" : "examples/models/some-model.json", + "engineParameters" : { + "executorParameters" : { + "JAVASCRIPT" : { + "parameterClassName" : + "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters" + }, + "JYTHON" : { + "parameterClassName" : + "org.onap.policy.apex.plugins.executor.jython.JythonExecutorParameters" + }, + "JRUBY" : { + "parameterClassName" : + "org.onap.policy.apex.plugins.executor.jruby.JrubyExecutorParameters" + }, + "JAVA" : { + "parameterClassName" : + "org.onap.policy.apex.plugins.executor.java.JavaExecutorParameters" + }, + "MVEL" : { + "parameterClassName" : + "org.onap.policy.apex.plugins.executor.mvel.MVELExecutorParameters" + } + }, + "contextParameters" : { + "parameterClassName" : + "org.onap.policy.apex.context.parameters.ContextParameters", + "schemaParameters" : { + "Avro":{ + "parameterClassName" : + "org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters" + } + } + } + } + }, + "producerCarrierTechnologyParameters" : { + "carrierTechnology" : "KAFKA", + "parameterClassName" : + "org.onap.policy.apex.plugins.event.carrier.kafka.KAFKACarrierTechnologyParameters", + "parameters" : { + "bootstrapServers" : "localhost:49092", + "acks" : "all", + "retries" : 0, + "batchSize" : 16384, + "lingerTime" : 1, + "bufferMemory" : 33554432, + "producerTopic" : "apex-out", + "keySerializer" : "org.apache.kafka.common.serialization.StringSerializer", + "valueSerializer" : "org.apache.kafka.common.serialization.StringSerializer" + } + }, + "producerEventProtocolParameters" : { + "eventProtocol" : "XML", + "parameterClassName" : + "org.onap.policy.apex.plugins.event.protocol.xml.XMLEventProtocolParameters" + }, + "consumerCarrierTechnologyParameters" : { + "carrierTechnology" : "WEBSOCKET", + "parameterClassName" : + "org.onap.policy.apex.plugins.event.carrier.websocket.WEBSOCKETCarrierTechnologyParameters", + "parameters" : { + "host" : "localhost", + "port" : 88888 + } + }, + "consumerEventProtocolParameters" : { + "eventProtocol" : "JSON" + } +} +---- diff --git a/services/services-engine/src/site-docs/adoc/fragments/config-general-format.adoc b/services/services-engine/src/site-docs/adoc/fragments/config-general-format.adoc new file mode 100644 index 000000000..27e076701 --- /dev/null +++ b/services/services-engine/src/site-docs/adoc/fragments/config-general-format.adoc @@ -0,0 +1,65 @@ +// +// ============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) +// + +== General Configuration Format + +The APEX configuration file is a JSON file containing a few main blocks for different parts of the configuration. +Each block then holds the configuration details. +The following code shows the main blocks: + +[source%nowrap,json] +---- +{ + "engineServiceParameters":{ + ... // <1> + "engineParameters":{ <2> + "engineParameters":{...}, <3> + "contextParameters":{...} <4> + } + }, + "eventInputParameters":{ <5> + "input1":{ <6> + "carrierTechnologyParameters":{...}, + "eventProtocolParameters":{...} + }, + "input2":{...}, <7> + "carrierTechnologyParameters":{...}, + "eventProtocolParameters":{...} + }, + ... // <8> + }, + "eventOutputParameters":{ <9> + "output1":{ <10> + "carrierTechnologyParameters":{...}, + "eventProtocolParameters":{...} + }, + "output2":{ <11> + "carrierTechnologyParameters":{...}, + "eventProtocolParameters":{...} + }, + ... // <12> + } +} +---- +<1> main engine configuration +<2> engine parameters for plugin configurations (execution environments and context handling) +<3> engine specific parameters, mainly for executor plugins +<4> context specific parameters, e.g. for context schemas, persistence, etc. +<5> configuration of the input interface +<6> an example input called `input1` with carrier technology and event protocol +<7> an example input called `input2` with carrier technology and event protocol +<8> any further input configuration +<9> configuration of the output interface +<10> an example output called `output1` with carrier technology and event protocol +<11> an example output called `output2` with carrier technology and event protocol +<12> any further output configuration 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> + } +} +---- diff --git a/services/services-engine/src/site-docs/adoc/fragments/config-service-parameters.adoc b/services/services-engine/src/site-docs/adoc/fragments/config-service-parameters.adoc new file mode 100644 index 000000000..d1b3fa3b9 --- /dev/null +++ b/services/services-engine/src/site-docs/adoc/fragments/config-service-parameters.adoc @@ -0,0 +1,47 @@ +// +// ============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) +// + +== Engine Service Parameters + +The configuration provides a number of parameters to configure the engine. +An example configuration with explanations of all options is shown below. + +[source%nowrap,json] +---- +"engineServiceParameters" : { + "name" : "AADMApexEngine", // <1> + "version" : "0.0.1", // <2> + "id" : 45, // <3> + "instanceCount" : 4, // <4> + "deploymentPort" : 12345, // <5> + "policyModelFileName" : "examples/models/VPN/VPNPolicyModelJava.json", // <6> + "periodicEventPeriod": 1000, <7> + "engineParameters":{ <8> + "engineParameters":{...}, <9> + "contextParameters":{...} <10> + } +} +---- +<1> a name for the engine. The engine name is used to create a key in a runtime engine. An name matching the following regular expression can be used here: `[A-Za-z0-9\\-_\\.]+` +<2> a version of the engine, use semantic versioning as explained here: link:http://semver.org/[Semantic Versioning]. This version is used in a runtime engine to create a version of the engine. For that reason, the version must match the following regular expression `[A-Z0-9.]+` +<3> a numeric identifier for the engine +<4> the number of threads (policy instances executed in parallel) the engine should use, use `1` for single threaded engines +<5> the port for the deployment Websocket connection to the engine +<6> the model file to load into the engine on startup (optional) +<7> an optional timer for periodic policies, in milliseconds (a defined periodic policy will be executed every `X` milliseconds), not used of not set or `0` +<8> engine parameters for plugin configurations (execution environments and context handling) +<9> engine specific parameters, mainly for executor plugins +<10> context specific parameters, e.g. for context schemas, persistence, etc. + +The model file is optional, it can also be specified via command line. +In any case, make sure all execution and other required plug-ins for the loaded model are loaded as required. diff --git a/services/services-engine/src/site/asciidoc/config-example.adoc b/services/services-engine/src/site/asciidoc/config-example.adoc new file mode 100644 index 000000000..d429d2fb6 --- /dev/null +++ b/services/services-engine/src/site/asciidoc/config-example.adoc @@ -0,0 +1,14 @@ +// +// ============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) +// + +include::{adsite-services-engine-dir}/site-docs/adoc/fragments/config-example.adoc[]
\ No newline at end of file diff --git a/services/services-engine/src/site/asciidoc/config-general-format.adoc b/services/services-engine/src/site/asciidoc/config-general-format.adoc new file mode 100644 index 000000000..d7b0f50f0 --- /dev/null +++ b/services/services-engine/src/site/asciidoc/config-general-format.adoc @@ -0,0 +1,14 @@ +// +// ============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) +// + +include::{adsite-services-engine-dir}/site-docs/adoc/fragments/config-general-format.adoc[]
\ No newline at end of file diff --git a/services/services-engine/src/site/asciidoc/config-interfaces-general.adoc b/services/services-engine/src/site/asciidoc/config-interfaces-general.adoc new file mode 100644 index 000000000..d82894de7 --- /dev/null +++ b/services/services-engine/src/site/asciidoc/config-interfaces-general.adoc @@ -0,0 +1,14 @@ +// +// ============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) +// + +include::{adsite-services-engine-dir}/site-docs/adoc/fragments/config-interfaces-general.adoc[]
\ No newline at end of file diff --git a/services/services-engine/src/site/asciidoc/config-service-parameters.adoc b/services/services-engine/src/site/asciidoc/config-service-parameters.adoc new file mode 100644 index 000000000..b12c84a7d --- /dev/null +++ b/services/services-engine/src/site/asciidoc/config-service-parameters.adoc @@ -0,0 +1,14 @@ +// +// ============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) +// + +include::{adsite-services-engine-dir}/site-docs/adoc/fragments/config-service-parameters.adoc[]
\ No newline at end of file diff --git a/services/services-engine/src/site/css/site.css b/services/services-engine/src/site/css/site.css new file mode 100644 index 000000000..ef8bd4d15 --- /dev/null +++ b/services/services-engine/src/site/css/site.css @@ -0,0 +1,100 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. 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 url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.0/css/font-awesome.css); + + +/*************** Table definitions *******************/ + +tableblock > .title, .tableblock > caption { line-height: 1.4; color: #7a2518; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; } + +.tableblock > caption { text-align: left; font-weight: bold; white-space: nowrap; overflow: visible; max-width: 0; } + +table.tableblock { background: white; margin-bottom: 1.25em; border: solid 1px #dddddd; } +table.tableblock thead, table.tableblock tfoot { background: whitesmoke; font-weight: bold; } +table.tableblock thead tr th, table.tableblock thead tr td, table tfoot tr th, table tfoot tr td { padding: 0.5em 0.625em 0.625em; font-size: inherit; color: #222222; text-align: left; } +table.tableblock tr th, table.tableblock tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #222222; } +table.tableblock tr.even, table.tableblock tr.alt, table.tableblock tr:nth-of-type(even) { background: #f9f9f9; } +table.tableblock thead tr th, table.tableblock tfoot tr th, table.tableblock tbody tr td, table.tableblock tr td, table.tableblock tfoot tr td { display: table-cell; line-height: 1.6; } + +table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; } + +table.tableblock.grid-all { border-collapse: separate; border-spacing: 1px; -webkit-border-radius: 4px; border-radius: 4px; border-top: 1px solid #dddddd; border-bottom: 1px solid #dddddd; } + +table.tableblock.frame-topbot, table.tableblock.frame-none { border-left: 0; border-right: 0; } + +table.tableblock.frame-sides, table.tableblock.frame-none { border-top: 0; border-bottom: 0; } + +table.tableblock td .paragraph:last-child p, table.tableblock td > p:last-child { margin-bottom: 0; } + +th.tableblock.halign-left, td.tableblock.halign-left { text-align: left; } + +th.tableblock.halign-right, td.tableblock.halign-right { text-align: right; } + +th.tableblock.halign-center, td.tableblock.halign-center { text-align: center; } + +th.tableblock.valign-top, td.tableblock.valign-top { vertical-align: top; } + +th.tableblock.valign-bottom, td.tableblock.valign-bottom { vertical-align: bottom; } + +th.tableblock.valign-middle, td.tableblock.valign-middle { vertical-align: middle; } + +p.tableblock.header { color: #222222; font-weight: bold; } + + + +/*************** KBD Macro definitions *******************/ + +kbd.keyseq { color: #555555; } + +kbd:not(.keyseq) { display: inline-block; color: #222222; font-size: 0.75em; line-height: 1.4; background-color: #F7F7F7; border: 1px solid #ccc; -webkit-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; margin: -0.15em 0.15em 0 0.15em; padding: 0.2em 0.6em 0.2em 0.5em; vertical-align: middle; white-space: nowrap; } + +kbd kbd:first-child { margin-left: 0; } + +kbd kbd:last-child { margin-right: 0; } + + +/*************** Admontion Blocks definitions *******************/ +.admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .videoblock > .title, .listingblock > .title, .literalblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-align: left; font-weight: bold; } + +.admonitionblock > table { border: 0; background: none; width: 100%; margin-top: 1em; margin-bottom: 1em;} +.admonitionblock > table td.icon { text-align: center; width: 80px; } +.admonitionblock > table td.icon img { max-width: none; } +.admonitionblock > table td.icon .title { font-weight: bold; text-transform: uppercase; } +.admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #6f6f6f; } +.admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; } + +.admonitionblock td.icon [class^="fa icon-"]:before {font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} +.admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #005498; color: #003f72; } +.admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; } +.admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; } +.admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; } +.admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; } + + + +/*************** Misc definitions *******************/ + +*:not(pre) > code { font-size: 0.9375em; padding: 1px 3px 0; white-space: nowrap; background-color: #f2f2f2; border: 1px solid #cccccc; -webkit-border-radius: 4px; border-radius: 4px; text-shadow: none; } + +pre, pre > code { line-height: 1.4; color: inherit; font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; } + +code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; color: #6d180b; } + diff --git a/services/services-engine/src/site/images/logos.png b/services/services-engine/src/site/images/logos.png Binary files differnew file mode 100644 index 000000000..915d6e59d --- /dev/null +++ b/services/services-engine/src/site/images/logos.png diff --git a/services/services-engine/src/site/site.xml b/services/services-engine/src/site/site.xml new file mode 100644 index 000000000..c9a70a66e --- /dev/null +++ b/services/services-engine/src/site/site.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ============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) + +--> + +<project name="APEX Services Engine"> + <body> + <menu name="APEX Services Engine"> + <item href="config-general-format.html" name="General Configuration Format" /> + <item href="config-service-parameters.html" name="Engine Service Parameters" /> + <item href="config-interfaces-general.html" name="Input and Output Interfaces" /> + <item href="config-example.html" name="Configuration Example" /> + <item href="javadocs/index.html" name="API Doc" /> + </menu> + <menu ref="reports" inherit="top" /> + <menu ref="modules" /> + + <breadcrumbs> + <item name="Engine" href="index.html" /> + </breadcrumbs> + </body> +</project>
\ No newline at end of file |