summaryrefslogtreecommitdiffstats
path: root/src/site/xdoc/index.xml
blob: 55e3e58fb71c36c9004158e18d07160a2aaad2c5 (plain)
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
<?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)
  
-->

<document>

	<properties>
		<title>Welcome to APEX - The Adaptive Policy EXecution (Engine)</title>
		<author email="sven.van.der.meer@ericsson.com">Sven van der Meer</author>
		<author email="liam.fallon@ericsson.com">Liam Fallon</author>
		<author email="john.keeney@ericsson.com">John Keeny</author>
	</properties>

	<body>
		<section name="Welcome to APEX - The Adaptive Policy EXecution (Engine)">

			<p>
				The APEX (Adaptive Policy Execution) policy engine is a fully featured policy engine that executes anything from simple to adaptive policies.
				An adaptive policy is one that can modify its behavior based on the current conditions of the network and systems.
				Adaptive policies have the following characteristics:
				<ul>
					<li>Are able to make decisions at runtime rather than simply selecting decisions described at policy definition time</li>
					<li>Can use additional context information that was not provided in the incoming event or request</li>
					<li>Can be adapted or self-adapt at runtime to modify decision making</li>
				</ul>
			</p>

			<p>
				The APEX policy engine accepts input events and requests from other components, routes the input to the appropriate policies, computes the policy results, and generates response events or actions to be processed by other components.
				The policies may be affected by information injected into the policy context as changes in business or domain goals, by information derived from previous executions of the policies, and by context information retrieved from other components (analytics, inventory, topology, etc.).
			</p>

			<p>
				APEX connects to a Trigger System to receive events that can trigger a policy and to an Actioning System to send the result of a policy.
				The connection support various common technologies, such as messaging systems (Kafka, Websockets), file input/output, and standard input/output.
				APEX supports context (as additional information) for all events as well as inside the engine to support policies.
				Context information can be read from any outside source.
			</p>

			<p>
				A policy is defined in a Universal Execution Policy Specification (UEPS), directly executable in an APEX engine.
				Higher-level policy specifications (or existing policy languages) can be easily translated in UEPS.
			</p>

			<p>
				An APEX system can use multiple policy engines with different policies deployed on each of them.
				Context information is automatically shared between all engine instances.
				A simple deployment component is provided.
			</p>


			<h3>APEX Documentation</h3>
				<table>
					<tr>
						<th style="white-space:nowrap; font-weight: bold; font-size: 1.25em">Document</th>
						<th style="white-space:nowrap; font-weight: bold; font-size: 1.25em">Description</th>
					</tr>
					<tr>
						<td><a href="apex-intro/intro-introduction.html">APEX Introduction</a></td>
						<td>
							This is a short introduction to APEX to show its features and capabilities.

							<br /><br />
							Also available as
								<a href="docs-apex/html/APEX-Introduction.html">stand-alone HTML</a> and
								<a href="docs-apex/pdf/APEX-Introduction.pdf">stand-alone PDF</a>.
						</td>
					</tr>

					<tr>
						<td><a href="apex-publications.html">Publications</a></td>
						<td>
							APEX is based on a theor called Unifying Policy Theory (UPT).
							Over the years, we have published a number of papers on APEX, context management, policy in general, and control loops.
							This is the list of all APEX and the most relevant other publications.
							We provide links to full text versions if possible.

							<br /><br />
							Also available as
								<a href="docs-apex/html/APEX-Publications.html">stand-alone HTML</a> and
								<a href="docs-apex/pdf/APEX-Publications.pdf">stand-alone PDF</a>.
						</td>
					</tr>
					<tr>
						<td><a href="user-manual.html">APEX User Manual</a></td>
						<td>
							The APEX user manual combines a set of guides and howto documents, all supporting the use of APEX.
							The guides and howto documents are provided as integrated documentation in the APEX site.
							Furthermore, we provide stand-alone documents in HTML and PDF.
						</td>
					</tr>
					<tr>
						<td><a href="policy-guide.html">APEX Policy Guide</a></td>
						<td>
							The APEX policy guide combines a set of howto documents, all supporting APEX and policy, including how to write task and task selection logic.
							The howto documents are provided as integrated documentation in the APEX site.
							Furthermore, we provide stand-alone documents in HTML and PDF.
						</td>
					</tr>
					<tr>
						<td><a href="developer-guide.html">APEX Development Guide</a></td>
						<td>
							The APEX developer guide combines a set of guides and howto documents, all addressing aspects for APEX developers.
							These documents look at APEX internals and how to extend build and extend the platform, and how to add applications.
							The guide and howto documents are provided as integrated documentation in the APEX site.
							Furthermore, we provide stand-alone documents in HTML and PDF. 
						</td>
					</tr>
				</table>


			<h3>APEX Modules and Projects</h3>
				<table>
					<tr>
						<th style="white-space:nowrap; font-weight: bold; font-size: 1.25em">Name</th>
						<th style="white-space:nowrap; font-weight: bold; font-size: 1.25em">Description</th>
						<th style="white-space:nowrap; font-weight: bold; font-size: 1.25em">Useful for</th>
					</tr>
<!--
					<tr>
						<td><a href="modules/apps/index.html">apps</a></td>
						<td>
							The APEX applications, implementation dependent wrappers and mediation for APEX in various technologies.
							Important projects here are:
							<ul>
								<li><a href="modules/apps/apps-generators/apps-generators-model/index.html">apps-generators-model</a> - Generators from/to the APEX policy mode</li>
								<li><a href="modules/apps/apps-utilities/index.html">apps-utilities</a> - Utilities for APEX application developers</li>
								<li><a href="modules/apps/apps-wsclients/apps-wsclients-simple/index.html">apps-wsclients-simple</a> - Simple Websocket clients (console and echo) for trigger/actioning systems</li>
								<li><a href="modules/apps/apps-uservice/apps-uservice-test/index.html">apps-uservice-test</a> - Test cases with configurations, policy models, events, for all carrier technologies and event protocols</li>
							</ul>
						</td>
						<td>Applications developers, DevOps, Installers</td>
					</tr>
-->
					<tr>
						<td><a href="modules/auth/index.html">auth</a></td>
						<td>
							Policy, state, and task authoring for APEX.
							Important projects here are:
							<ul>
								<li><a href="modules/auth/cli-editor/index.html">cli-editor</a> - The APEX CLI Editor</li>
								<li><a href="modules/auth/cli-codegen/index.html">cli-codegen</a> - Code-generation tools</li>
							</ul>
						</td>
						<td>Policy Designers</td>
					</tr>
<!--
					<tr>
						<td><a href="modules/domains/index.html">domains</a></td>
						<td>
							Specific source code and other artefacts for APEX domains of application.
							Here one can find complete implementations, examples, and tests for APEX policies.
							Important projects here are:
							<ul>
								<li><a href="modules/domains/domains-decisionmaker/index.html">domains-decisionmaker</a> - A simple decision maker demo, with REST interface for interactions deployed in a Docker container</li>
								<li><a href="modules/domains/domains-myfirstpolicy/index.html">domains-myfirstpolicy</a> - My First Policy, a step-by-step tutorial for defining a policy</li>
								<li><a href="modules/domains/domains-pcvs/index.html">domains-pcvs</a> - An example policy for managing customers and link failures showing video streaming for a simple VPN scenario</li>
								<li><a href="modules/domains/domains-onap-vcpe/index.html">domains-onap-vcpe</a> - An example policy for managing vCPE's in ONAP</li>
								<li><a href="modules/domains/domains-periodic/index.html">domains-periodic</a> - An example periodic policy</li>
								<li><a href="modules/domains/domains-adaptive/index.html">domains-adaptive</a> - A simple adaptive policy</li>
								<li><a href="modules/domains/domains-aadm/index.html">domains-aadm</a> - A policy realizing a complex scenario for Autonomic Anomaly Detection and Mitigation (AADM)</li>
							</ul>
						</td>
						<td>Policy Designers, Testers</td>
					</tr>
-->
					<tr>
						<td><a href="modules/plugins/index.html">plugins</a></td>
						<td>
							Plugins for APEX that can be implemented with various 3PPs are implemented here.
							Most of the APEX engine and system functionality is realized using plug-ins.
							These plug-ins are loaded when an APEX policy engine is started.
							A configuration specifies which plugins to load.
							Important projects here are:
							<ul>
								<li><a href="modules/plugins/plugins-executor/index.html">plugins-executor</a> - Execution environments for policy logic, such as Javascript, Java, JRuby, Jython, MVEL</li>
								<li><a href="modules/plugins/plugins-event/index.html">plugins-event</a> - All event-related plugins: carrier technologies (Kafka, Websocket), event protocols (XML, IBeam)</li>
								<li><a href="modules/plugins/plugins-context/index.html">plugins-context</a> - Everything for context: schema (for defining context) distribution (across policies and engines), locking (for writing to context items), persistence</li>
								<li><a href="modules/plugins/plugins-persistence/index.html">plugins-persistence</a> - Everything needed for persistence (beside context), mainly JPA plugins for Eclipselink and Hibernate</li>
							</ul>
						</td>
						<td>Plugin developers</td>
					</tr>
					<tr>
						<td><a href="modules/services/index.html">services</a></td>
						<td>
							The main services of APEX, deployment independent.
							Important projects here are:
							<ul>
								<li><a href="modules/services/services-engine/index.html">services-engine</a> - APEX engine service</li>
<!--
								<li><a href="modules/services/services-client/services.client-editor/index.html">services: client-editor</a> - APEX REST Editor</li>
								<li><a href="modules/services/services-client/services.client-monitoring/index.html">services: client-monitoring</a> - APEX Monitoring Client</li>
								<li><a href="modules/services/services-client/services.client-deployment/index.html">services: client-deployment</a> - APEX Deployment Client</li>
								<li><a href="modules/services/services-client/services.client-full/index.html">services: client-full</a> - APEX Full Client</li>
-->
							</ul>
						</td>
						<td>Service developers, Deployers</td>
					</tr>
					<tr>
						<td><a href="modules/core/index.html">core</a></td>
						<td>
							The core of APEX, deployment independent.
							Important projects here are:
							<ul>
								<li><a href="modules/core/core-engine/index.html">core-engine</a> - The APEX policy execution engine</li>
								<li><a href="modules/core/core-infrastructure/index.html">core-infrastructure</a> - Common non-functional components for APEX</li>
								<li><a href="modules/core/core-deployment/index.html">core-deployment</a> - The APEX policy deployer</li>
								<li><a href="modules/core/core-protocols/index.html">core-protocols</a> - Protocols used to transfer information between components in APEX</li>
							</ul>
						</td>
						<td>Core APEX developers</td>
					</tr>
					<tr>
						<td><a href="modules/context/index.html">context</a></td>
						<td>
							The context handling framework of APEX.
							Important projects here are:
							<ul>
								<li><a href="modules/context/context-management/index.html">context-management</a> - Context management for Apex policy execution</li>
								<li><a href="modules/context/context-test/index.html">context-test</a> - Test context date for testing</li>
							</ul>
						</td>
						<td>Core APEX developers</td>
					</tr>
					<tr>
						<td><a href="modules/model/index.html">model</a></td>
						<td>
							The model for APEX, it comtains definitions of all APEX concepts, also has handling for APEX policy models.
							Important projects here are:
							<ul>
								<li><a href="modules/model/model-api/index.html">model-api</a> - The APEX Model API with programatic access to a policy model</li>
								<li><a href="modules/model/basic-model/index.html">basic-model</a> - Basic Models used and model handling in Apex</li>
								<li><a href="modules/model/event-model/index.html">event-model</a> -  Event Models used in APEX </li>
								<li><a href="modules/model/policy-model/index.html">policy-model</a> - Policy Models used in APEX</li>
								<li><a href="modules/model/engine-model/index.html">engine-model</a> - Engine Models used in APEX</li>
								<li><a href="modules/model/context-model/index.html">context-model</a> - Context Models used in APEX</li>
								<li><a href="modules/model/utilities/index.html">model-utilities</a> - Common non-functional Apex Model Utilities</li>
							</ul>
						</td>
						<td>Core APEX developers, Application developers (Model API)</td>
					</tr>
				</table>


			<h3>APEX Resources</h3>
				<table>
					<tr>
						<th style="white-space:nowrap; font-weight: bold; font-size: 1.25em">Resource</th>
						<th style="white-space:nowrap; font-weight: bold; font-size: 1.25em">Description</th>
					</tr>
					<tr>
						<td><a href="https://gerrit.onap.org/r/#/admin/projects/policy/apex-pdp">APEX Source (ONAP)</a></td>
						<td>
							The source of APEX is hosted part of the ONAP Policy Framework.
						</td>
					</tr>
					<tr>
						<td><a href="https://github.com/Ericsson/apex/issues">APEX Issue Management (Github)</a></td>
						<td>
							Issues with the APEX software and integrated documentation are managed here.
						</td>
					</tr>
				</table>

		</section>
	</body>
</document>