system architecture guidewinshuttle-help.s3.amazonaws.com/enterworks... · along with fully-defined...
TRANSCRIPT
Enable 10 System Architecture Guide
Page 1 of 43 Revised 12/10/2019
Enable™ Version 10
System Architecture Guide
Revised 12/10/2019
Enable 10.1 Release Enable Suite - All components:
• EnterworksInstallPackage_20190906_1101
• EnterworksDB_20190906_1101
• EnterworksDBScripts_20190906_1101
• ew-linux-10.1-docker-20190906_1848.tar.gz
Enable Patch:
• EnableServer_ 10.1.4_Enable_patch_20191122_2108
• ew-linux-10.1.4-patch-20191123_1612
Enable Builds:
• Enable10 10.1.4 Build 20191115_1432
• EnableServer Build 20191115_1432
EnterWorks®, Acquisition Inc., a Winshuttle Company 46040 Center Oak Plaza Suite 115
Sterling, VA 20166
Enable 10 System Architecture Guide
Page 2 of 43 Revised 12/10/2019
©EnterWorks, Inc. Loudoun Tech Center 46040 Center Oak Plaza Suite 115 Sterling, VA 20166 1.888.242.8356 (Sales and General Information) 1.888.225.2705 (U.S. Support) http://www.enterworks.com EnterWorks® Enable 10 System Architecture Guide Copyright © 2019-2020 EnterWorks, Inc., a Winshuttle Company. All rights reserved. Law prohibits unauthorized copying of all or any part of this document. Use, duplication, or disclosure by the U.S. Government is subject to the restrictions set forth in FAR 52.227-14. “EnterWorks” and the “EnterWorks” logo are registered trademarks and “Enable PIM”, “EnterWorks Process Exchange” and “EnterWorks Product Information Management” are trademarks of EnterWorks, Inc. Windows, .NET, IIS, SQL Server, Word, and Excel are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. Java and all Sun and Java based trademarks are trademarks or registered trademarks of the Oracle Corporation in the United States and other countries. Oracle is a registered trademark and Oracle 10g is a trademark of Oracle Corporation. Pentium is a registered trademark of Intel Corporation in the United States and other countries. JBoss is a registered trademark of Red Hat, Inc. All other trademarks and registered trademarks are the property of their respective holders. All icons and graphics, with the exception of the "e." logo, were obtained from West Coast Icons and Design at http://www.bywestcoast.com. EnterWorks, Inc. retains copyrights for all graphics unless otherwise stated. All other trademarks and registered trademarks are the property of their respective holders. This document is furnished for informational purposes only. The material presented in this document is believed to be accurate at the time of printing. However, EnterWorks Acquisition, Inc. assumes no liability in connection with this document except as set forth in the License Agreement under which this document is furnished.
Enable 10 System Architecture Guide
Page 3 of 43 Revised 12/10/2019
Contents
1 Document Conventions ...................................................................................................5
2 Customer Support ...........................................................................................................6
3 Overview .........................................................................................................................7
4 Architectural Overview ....................................................................................................7
4.1 Components of Enable ..................................................................................................8
4.1.1 Enable Server .....................................................................................................9
4.1.2 EPX .....................................................................................................................9
4.1.3 Enable Microservices ..........................................................................................9
4.1.4 Enable Utilities .................................................................................................11
4.1.5 3rd-party Applications .......................................................................................11
4.2 Databases ...................................................................................................................11
4.3 File Storage .................................................................................................................11
5 Server Configurations ....................................................................................................12
6 Enable Services Distribution ..........................................................................................13
7 Operating System-specific Architecture Specifications ...................................................14
7.1 Linux-specific Architecture Specifications ....................................................................14
7.1.1 Linux Single-server vs Multi-server Configuration .............................................14
7.1.2 Docker ..............................................................................................................15
7.1.3 Linux File Maps .................................................................................................16
7.2 Windows-specific Architecture Specifications .............................................................18
7.2.1 Windows File Maps ..........................................................................................18
8 Enable 10 Specifications ................................................................................................22
8.1 Enable 10 Supported Browsers ...................................................................................22
8.2 Enable 10 Supported 3rd-party Software Versions .......................................................22
8.3 Enable 10 Compatibility Matrix ...................................................................................24
8.4 Enable 10 Subnets .......................................................................................................24
8.5 Enable 10 Default Port Matrices ..................................................................................24
8.5.1 Enable 10.1 Default Port Matrix by Port ...........................................................24
Enable 10 System Architecture Guide
Page 4 of 43 Revised 12/10/2019
8.5.2 Enable 10.1 Default Port Matrix by Service .......................................................28
9 Architectural Diagrams ..................................................................................................33
9.1 Enable Core Software Architectural Model .................................................................33
9.2 Linux Stand-alone Architecture ...................................................................................34
9.3 Linux Multi-server Architecture ...................................................................................35
9.4 Windows Single-Server Architecture ...........................................................................36
9.5 Windows Multi-server Architecture ............................................................................37
10 Extending Enable’s Base Functionality ...........................................................................38
10.1 Enable APIs ..............................................................................................................38
10.2 Extended Capabilities via the Enable 2020 UI ..........................................................39
10.3 Add-on Microservices ..............................................................................................40
10.3.1 Additional Static Files ....................................................................................40
10.3.2 Proxies ..........................................................................................................41
10.3.3 Custom Microservices ...................................................................................41
Enable 10 System Architecture Guide
Page 5 of 43 Revised 12/10/2019
1 Document Conventions
This EnterWorks document uses the following typographic conventions:
Convention Usage
pathnames Pathnames are shown with backslashes, as for Windows systems.
Courier New font Denotes sample code, for example, Java, IDL, and command line information. May be used to denote filenames and pathnames, calculations, code samples, registry keys, path and file names, URLs, messages displayed on the screen.
If italicized and in angle brackets (< >), it denotes a variable. Variables may also be written in red to further emphasize them in a long code sample.
Calibri Font (bold) When used in body text, it denotes an object, area, list item, button, or menu option within the graphical user interface; or a database name or database-related object. (Examples: the Save button; the Product tab; the Name field; the SKU repository)
Can also be used to denote text that is typed in a text box. (Example: Type “trackingNo” in the Name field)
Blue underlined text Words, phrases or numbers in blue are active links that can be clicked. Clicking these active links will bring the user to the required information, steps, pages chapters, or URL.
Enable 10 System Architecture Guide
Page 6 of 43 Revised 12/10/2019
2 Customer Support
There’s a reason why EnterWorks receives the highest customer satisfaction scores from firms including Gartner® and Forrester® ─ our customers are our top priority.
EnterWorks provides a full spectrum of customer support. Check your maintenance contract for the level of support purchased. The first time you contact customer support, you’ll receive a customer identification number. Keep this number for future reference when using the EnterWorks customer support service.
How to reach us Comments
On the Web:
https://enterworkssupport.zendesk.com
For detailed discussions of hardware, software, configuration issues, or Helpdesk credentials, contact your EnterWorks representative.
Enable 10 System Architecture Guide
Page 7 of 43 Revised 12/10/2019
3 Overview
This document describes the basic architecture of Enable 10 in high-level terms, including descriptions of Enable’s components, how they interact, and which ports they use.
For architectural information regarding your specific system architecture, see your Solution Architecture design documentation or contact your Enable account representative.
Refer to the following documents for additional information.
• For guidance on installing Enable on a Linux system, see Enable 10 Linux Installation Guide.
• For guidance on installing Enable on a Windows system, see Enable 10 Windows Installation Guide.
• For system administration processes and procedures, see the Enable 10 Administration Guide.
• For user functionality, see the Enable 10 PIM User Guide.
4 Architectural Overview
EnterWorks Enable features a three-tier web architecture fully distributable for scalability, along with fully-defined and exposed web services to access all functionality of the product. We deliver fully documented service-oriented API’s with our solution and have customers in production who have developed custom applications using Enable web services to access MDM functionality. Enable is packaged as an appliance and can be deployed on-premise or hosted as a private cloud offering in AWS. Enable is globalized to support multiple languages, geographies and currencies and is used by several large multinational customers.
• EnterWorks® Enable is a standards-based, Java / J2EE application that contains a variety of open source technologies beyond our own proprietary capabilities, including industry standard Web Servers (Tomcat) and App Servers (JBoss). The solution fully supports cloud, on premise, and hybrid deployments. Every function in the solution can be accessed via API.
• The EnterWorks® Enable product features a three-tier architecture built on industry standards such as Java, JQuery and Ajax, utilizing an open web services API (SOAP or REST) for integration purposes. The distributed Web server tier allows customers to add more Web servers, load balance, or distribute them across the enterprise.
• We have always been very conscious of user experience in a Web-based world. As such, we employ various caching techniques to ensure the interaction at the browser level is acceptable. We also make extensive use of Ajax and jQuery, limiting the back-and-forth between the browser and the server; when we do call the server, we can narrow it down to just the specific information needed.
Enable 10 System Architecture Guide
Page 8 of 43 Revised 12/10/2019
In addition, we employ a unique approach to the database structure itself. In order to maintain maximum flexibility for our customers as they both initially define their model and maintain it on an ongoing basis, we store much of the data as XML. We also provide two features that further enhance data retrieval when necessary —“snapshot” attributes and “Empower” tables. Snapshot attributes are attributes that live in the XML structure, but are extracted as they are saved, placed in a snapshot table, and indexed for high-speed search and retrieval. With Empower, a complete set of relational tables is automatically maintained that represent a direct reflection of the XML structure for high transaction scenarios.
4.1 Components of Enable
The core components of Enable are:
• Enable Server
• EPX
• Enable Microservices
• Enable Utilities
Enable Core Software Architecture
Enable 10 System Architecture Guide
Page 9 of 43 Revised 12/10/2019
• 3rd-party Applications
4.1.1 Enable Server
Enable Server is the primary Enable application. It also provides UIs and directs batch job processing.
• Enable Server Tomcat – Provides the Enable 2020 UI, (and optionally, Enable Classic UI), and exposes the core API.
• Enable Server Master – The job manager; it queues jobs to available slaves.
• Enable Server Slave(s) – Job processors for background operations (i.e. large imports, validations, etc.).
4.1.2 EPX
EPX (Enable Process Exchange) is the workflow manager and scheduling framework for business processes.
4.1.3 Enable Microservices
In a microservice architecture, applications are broken down into multiple modular, loosely coupled components, each of which performs a discrete function. The benefits of a microservice architecture include:
• Applications based on a microservice model are easier to create, maintain, and configure to meet specific business needs.
• Microservices be distributed across servers, clouds and data centers.
• Each microservices is an independent service that can be changed, updated, or deleted without disrupting the rest of an application.
• Each microservice can be developed in any language that is best fits its functional and operational requirements.
The table below lists Enable’s microservices.
Note that in the event that more than one environment is hosted on the same server, there may be more than one instance of a microservice on that server. In this case, microservice names may have a prefix that identifies them as part of a particular environment, such as DEV or PROD. This prefix would allow RabbitMQ to distinguish between a microservice and other instances of the same microservice, and to enable it to route messages to the correct microservice instance.
Enable 10 System Architecture Guide
Page 10 of 43 Revised 12/10/2019
Microservice Name Function
enable2020-api-go-service Main authentication point (JWT) with various utility end-points.
enable2020-channel-readiness-service Interacts with MongoDB to compile Channel Readiness statistics.
enable2020-dam-manager-service Processes images uploaded to Enable; extracts metadata; links to records in Enable, etc.
enable2020-dam-magick-service Handles generation of image variants.
enable2020-epx-broker-service Glue service between RabbitMQ and EPX Workflow.
enable2020-es-indexer-service Indexes the creation and enrichment of data.
enable2020-es-manager-service A microservice that is tightly coupled with Elastic Search for interacting with Elastic Search.
enable2020-es-search-service Handles the search operations performed in the Enable UI.
enable2020-ids-manager-service
enable2020-monitor-dam-drop-service Monitors a ”hot folder” to pick up and process digital assets
enable2020-mq-logger-service Logs messages data for troubleshooting.
enable2020-pimql-broker-service
enable2020-service-wrapper-service
enable2020-webcm-broker-service Glue Service between RabbitMQ and EnableServer J2EE REST API. Manages token authentication.
enable2020-web-server-service Main web server.
enable2020-winshuttle-listener-service Monitor’s repository records; submits ready records to the Winshuttle Foundation workflow.
Enable 10 System Architecture Guide
Page 11 of 43 Revised 12/10/2019
4.1.4 Enable Utilities
The Enable utilities are:
• DAMReportUtility: Reports on discrepancies between DamMaster and
Damroot.
• MontitorDamdrop: Monitors the Damdrop folder for uploading digital assets.
• RegenerateDAMVariant: Generates variants of digital assets. Used by the DAM
functionality.
4.1.5 3rd-party Applications
The primary 3rd-party applications Enable uses consist of:
• Elasticsearch – Handles search requests and typeahead.
• ImageMagick – Handles the conversion of images into various formats and variants.
• Microsoft SQL Server – For Enable in a Windows environment, it manages the EPIM and EPX database .
• MongoDB/Robo 3T – Manage the Channel Readiness database.
• PostgreSQL Server – For Enable in a Linux environment, it manages the EPIM and EPX database
• RabbitMQ – Service bus between the UI, micro-services and various Enable components.
4.2 Databases
Enable’s databases consist of:
• EPIM database: For business data and system operations.
• EPX database: For the Workflow functionality.
• Channel Readiness database: (MongoDB) For Channel Readiness functionality.
4.3 File Storage
Enable’s primary file storage function consists of:
• DAM (Digital Assets Management): Manages the storage and use of business digital assets.
Enable 10 System Architecture Guide
Page 12 of 43 Revised 12/10/2019
5 Server Configurations
Enable can be configured to run on one or more servers. Typically, one server is used for the EPIM and EPX databases, and the Enable components are distributed across one or more servers. When referring to the number of servers in the configuration, it is common practice to count only the servers containing Enable components; the database server is understood to be part of the configuration. Therefore:
• A “one-server” configuration refers to:
o One database server.
o One Enable server.
• A “two-server” configuration refers to:
o One database server.
o Two Enable servers.
• A “stand-alone” configuration consists of Enable and the databases installed on the same server.
The below is an example of a multiple-server architecture.
Enable Stand-alone Configuration
Enable 10 System Architecture Guide
Page 13 of 43 Revised 12/10/2019
6 Enable Services Distribution
Highly available EPX solutions should be deployed using classic Enable HA configurations. This product is still in the process of be ported to a containerized product.
Component Services Distribution
Enable Server • Tomcat
• AppMaster (Wildfly/JBossMaster)
• AppSlave <X>
May be distributed across multiple servers.
Enable Multi-server Configuration
Enable 10 System Architecture Guide
Page 14 of 43 Revised 12/10/2019
Component Services Distribution
Enable 2020 Microservices
• api-go-service
• channel-readiness-service
• dam-magick-service
• dam-manager-service
• epx-broker-service
• es-indexer-service
• es-manager-service
• es-search-service
• ids-manager-service
• monitor-dam-drop-service
• mq-logger-service
• pimql-broker-service
• service-wrapper-service
• webcm-broker-service
• web-server-service
• winshuttle-listener-service
• May be distributed across multiple servers.
• enable2020-es-manager-
service must be on the same
server as Elasticsearch.
• Unless Amazon S3 is used, enable2020-dam-
manager-service must be
installed on the same server as Damroot, (until enable2020-file-
service is complete).
Utilities • DAMReportUtility
• MontitorDamdrop
• RegenerateDAMVariant
A full set of the Utilities services will be installed on each server that has Enable Server services.
Channel Readiness
MongoDB Robo 3T
May not be distributed across multiple servers.
RabbitMQ RabbitMQ
Search Elasticsearch
EPIM Database
May not be distributed across multiple servers.
EPX EPX Database
May not be distributed across multiple servers.
7 Operating System-specific Architecture Specifications
7.1 Linux-specific Architecture Specifications
7.1.1 Linux Single-server vs Multi-server Configuration
For detailed images of various Linux server configurations, see Architectural Diagrams.
Enable 10 System Architecture Guide
Page 15 of 43 Revised 12/10/2019
7.1.2 Docker
Enable architecture uses Docker to facilitate scalability across multiple servers. Enable components may run in containers controlled by a Docker swarm manager. PostgreSQL can run in a Docker container or on a separate server.
Enable uses shared volumes to move data between Docker containers. Docker is configured to use both a Docker bridge network and Docker network overlays.
Enable uses Docker to communicate with EPX. This is similar to opening a port through a firewall to support communications among different server environments.
When a process in a container references a process in another container, the best practice is to use the target container’s name rather than the name or IP address of the server running the target container. This is because when a container or VM is restarted, it may be assigned a new local or dynamic IP address.
Anytime a container is restarted, restart all containers and services. Failing to restart all containers and services could result in broken communication links.
If a resource is being accessed that is not in a container, use the static IP address or DNS resolved address of the server the resource is running on. If the server does not have a static IP address or DNS resolved address, it must be referenced by a dynamic IP address and any references to the resource must be updated anytime the server is restarted.
Note that Docker includes everything under its context (about 130MB) for each image build, so if there is a random file that is 10GB located in the context, the Docker image becomes 10GB instead of 130mb. If there are files that do not need to be in the Docker context for each build, include their paths inside the .dockerignore file to reduce the size of the image.
Installing Enable requires using basic Docker commands and some advanced shell scripting commands. Docker and Linux commands are used to manage Docker containers.
The installation of Enable on a Linux OS differs from Enable installed on a Windows OS in that EPX uses the EPIM database to store some work flow data.
Docker’s default logging mechanism is used for standard out (stdout). Therefore, any output
to stdout by any process can be accessed with the docker container logs command.
7.1.2.1 Allocation of Services to Containers
Enable components are allocated to containers as follows:
• EPIM is comprised of two containers:
o Tomcat
o JBoss
• Slaves uses containers as defined by the Solution Architecture.
Enable 10 System Architecture Guide
Page 16 of 43 Revised 12/10/2019
• EPX Workflow is comprised of two containers:
o Tomcat
o JBoss
• 3rd Party servers that may run in individual docker containers include:
o RabbitMQ
o Elasticsearch
o MongoDB
o PostgreSQL
• All Go Language based microservices will run in a docker container.
• The PostgreSQL databases and the MongoDB database run in separate containers.
• RabbitMQ and Elasticsearch run in separate containers.
7.1.2.2 Referencing Services
The Docker swarm manager assigns each container in the internal Docker network a unique identifier, either the IP address of the server it is running on or a different unique identifier. Containers use this identifier to reference other containers. This allows each server to readily communicate to the other server end-points.
When a service in a container references a service in another container, the best practice is to use the target container’s name rather than the name or IP address of the server running the target container. This is because when a container or VM is restarted, it may be assigned a new local or dynamic IP address.
If a resource is being accessed that is not in a container, use the static IP address or DNS resolved address of the server the resource is running on. If the server does not have a static IP address or DNS resolved address, it must be referenced by a dynamic IP address and any references to the resource must be updated anytime the server is restarted.
7.1.3 Linux File Maps
7.1.3.1 Enable File Structure
Enable 10 System Architecture Guide
Page 17 of 43 Revised 12/10/2019
Enable File Structure
File Path Notes
/enterworks-root/software The folder where installation files will be copied to and then expanded from.
/opt/enable/backup Directory containing all archived files from the /opt/enable/enterworks-root folder. This
folder is deliberately not under /opt/enable/enterworks-root to allow /opt/enable/enterworks-root to be
searched without finding the backup files as well as the current files.
/opt/enable/enterworks-
root The main Enable folder. The files it contains includes scripts for installing and patching Enable, configuration files, log files for Docker containers, and shared folders for files that need to be shared across containers.
/enterworks-
root/working/{_ <temp
files created during the
install> _}
Temporary files.
/enterworks-
root/software/micro-svc/ The install folders for Linux-based microservices.
/enterworks-
root/enterworks/{custom,
logs, shared, Utilities}
Similar to the enterworks folder in windows, logs,
custom jars, html, shared{damroot…}, etc.
7.1.3.2 Configuration Files
Enable 10 System Architecture Guide
Page 18 of 43 Revised 12/10/2019
Configuration Files
File Path Notes
/enterworks-
root/config/EnterworksInstall
.properties
Configuration file from the tar ball. It is tokenized by the scripts and used to configure EPIM. Installation properties can be edited here directly.
/enterworks-
root/docker/epx/EnterworksIns
tall.properties
EPX configuration files. It is tokenized by the scripts and used to configure EPX. Installation properties can be edited here directly.
/enterworks-
root/config/EnterworksInstall
.replaced
File containing the replaced values in the properties file, after scripts run.
env.original Main build data, with placeholders that are replaced during installation with actual runtime values and written to the file: env.configure
env.configure Used by the scripts to configure enable2020 microservices.
7.2 Windows-specific Architecture Specifications
7.2.1 Windows File Maps
7.2.1.1 Enable General Component/Function File Map
Enable General Component/Function File Map
Component/Function File Path
Main folder <install drive>:\Enterworks
Start/Stop scripts <install drive>:\Enterworks\bin
DAM <install drive>:\Enterworks
Enable 10 System Architecture Guide
Page 19 of 43 Revised 12/10/2019
Enable General Component/Function File Map
Component/Function File Path
Enable 2020 Microservices <install
drive>:\Enterworks\enable2020\
Enable Server <install
drive>:\Enterworks\EnableServer
JbossMaster/Slaves <install
drive>:\Enterworks\EnableServer
Tomcat <install
drive>:\Enterworks\EnableServer
Utilities <install drive>:\Enterworks\Utilities
EPX <install drive>:\Enterworks\EPX
MongoDB <install drive>:\Enterworks\MongoDB
The markdown documentation files.
<install drive>:\Enterworks\ewdocs
7.2.1.2 DAM File Map
DAM File Map
File/Folders File Path
DAMdrop <install drive>:\Enterworks\DAMdrop
DamDropOnDemand <install
drive>:\Enterworks\DamDropOnDemand
DamDropWorking <install
drive>:\Enterworks\DamDropWorking
Damroot <install drive>:\Enterworks\Damroot
DAMReportUtility <install drive>:\Enterworks\Utilities
Enable 10 System Architecture Guide
Page 20 of 43 Revised 12/10/2019
DAM File Map
File/Folders File Path
MonitorDamdrop <install drive>:\Enterworks\Utilities
RegenerateDAMVariant <install drive>:\Enterworks\Utilities
7.2.1.3 Enable 2020 Microservices File Map
Enable 2020 Microservices File Map
Purpose File/Folder
Root folder for microservices.
<install drive>:\Enterworks\enable2020
Microservice .exe files.
<install
drive>:\Enterworks\enable2020\services\bin
Installation scripts.
<install
drive>:\Enterworks\enable2020\services\install
Microservices Working Directories
<install
drive>:\Enterworks\enable2020\services\bin\working
7.2.1.4 Log and Error Files Map
Note that the file map below is configuration dependent. For example, in some configurations, log files for JBossMaster are found under the wildfly directory, while in another
configuration, they would be found under the jbossMaster directory.
Enable 10 System Architecture Guide
Page 21 of 43 Revised 12/10/2019
Component/Function
File Path
Archived Logs
<install drive>:\Enterworks\logs\archive
Job logs and Error files
<install drive>:\Enterworks\logs\EnableServer\<job
type>
Tomcat logs <install drive>:\Enterworks\logs\EnableServer\tomcat
Wildfly logs <install
drive>:\Enterworks\logs\EnableServer\wildfly
JBoss Master logs
<install
drive>:\Enterworks\jbossMaster\standalone\log
JBoss Slave logs
<install
directory>\Enterworks\jbossSlave<X>\standalone\log
EPX logs and Error files
<install drive>:\Enterworks\logs\EPX
Enable Utilities
<install drive>:\Enterworks\logs\EPX
Validation logs
<install
drive>:\Enterworks\logs\EnableServer\validation
MongoDB logs
<install drive>:\Enterworks\MongoDB\logs
Snapshot logs
<install
drive>:\Enterworks\logs\EnableServer\snapshot
Generated when a snapshot table is rebuilt or populated through the Job Monitor.
Heap dump log
<install
drive>:\Enterworks\logs\EnableServer\heapdump
If a process runs out of memory, a dump of the process is stored here.
Text index log
<install
drive>:\Enterworks\logs\EnableServer\textIndex
Enable 10 System Architecture Guide
Page 22 of 43 Revised 12/10/2019
8 Enable 10 Specifications
8.1 Enable 10 Supported Browsers
Supported Browsers Version Enable Testing
Google Chrome v64 and newer
Tested fully with Enable Classic and Enable 2020 UIs.
Internet Explorer v11 and newer
Tested fully with Enable Classic UI.
Testing with Enable 2020 UI scheduled for year 2020.
Firefox V60 and newer
Tested fully with Enable Classic UI.
Testing with Enable 2020 UI scheduled for year 2020.
Edge Not tested Not yet tested.
8.2 Enable 10 Supported 3rd-party Software Versions
Enable 10 Supported 3rd-Party Software Versions
Product Name Version Number
Apache Tomcat 6.0.41
Apache Tomcat (for Infolink Deduplication Application)
9.0.0 (or higher)
Centos 7.7 64-bit
Elasticsearch 5.0.2
Erlang OTP 20
Ghostscript 9.23
Enable 10 System Architecture Guide
Page 23 of 43 Revised 12/10/2019
Enable 10 Supported 3rd-Party Software Versions
Product Name Version Number
Google Chrome 64 (Will probably work on previous versions as well.)
JasperReports 5.2
Jaspersoft IReport Designer Professional
5.2.0
JDK 1.7.0_51
jTDS 1.2
Microsoft SQL Server 2008 or later. SQL Server Standard or Enterprise Edition. The Full Text Engine feature must also be installed.
Microsoft SQL Server Management Studio
18.2
MongoDB Community Server
3.6.6
Node.js v4.4.7
Oracle JRE 8 or higher
PostgreSQL 10.6
PuTTY 0.73
RabbitMQ Server 3.7.8
Robo 3T 1.2.1
SAML 2
Xming 6-9-0-31
Enable 10 System Architecture Guide
Page 24 of 43 Revised 12/10/2019
8.3 Enable 10 Compatibility Matrix
Application Application Versions
Microsoft SQL Server 2008+
Windows OS 2012+
8.4 Enable 10 Subnets
In Enable running on Linux, allow Docker to take full control of subnets 172.17.0.0/16 and 172.18.0.0/16. If any technologies, (e.g. VPN), is set up on these subnets, Docker may interfere with those technologies on startup.
8.5 Enable 10 Default Port Matrices
Note that Enable Server Slaves can be configured to use various ports, depending on the system requirement. Each slave uses 2-4 ports. It is suggested that the ports selected fall within the range of 3000 to 4000.
8.5.1 Enable 10.1 Default Port Matrix by Port
Enable 10.1 Default Port Matrix Sorted by Port
Port Protocol Endpoint A Endpoint B Components
21 SFTP
22 SFTP
25 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
80 TCP enable2020-web-server-service
Web
82
443 Web
Enable 10 System Architecture Guide
Page 25 of 43 Revised 12/10/2019
Enable 10.1 Default Port Matrix Sorted by Port
Port Protocol Endpoint A Endpoint B Components
445 TCP Data Services (TOMCAT/ JBOSS Master)
445 TCP Job Queues (Slave 1 -- n) EPX
445 TCP Support Services (Microservices)
1099 Design Console
1100 EPXJboss
1101 EPXJboss
1161 EPXJboss
1162 EPXJboss
1433 TCP MS SQL Server EnableServerTomcat SQL Server
1433 TCP MS SQL Server EnableServerSlaveN
1433 TCP MS SQL Server EPXJboss
1433 TCP MS SQL Server PIMQL
1434 PostgreSQL Server
2049 TCP NFS NFS
2376 TCP Docker Swarm Docker Swarm
2377 TCP Docker Swarm Docker Swarm
3306 PostgreSQL Server
3527 EPXJboss
3528 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
3529 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
3873 TCP EPXJboss EPX server
4000 TCP NoMachine/NX NX
Enable 10 System Architecture Guide
Page 26 of 43 Revised 12/10/2019
Enable 10.1 Default Port Matrix Sorted by Port
Port Protocol Endpoint A Endpoint B Components
4369 TCP RabbitMQ RabbitMQ
4444 TCP EPXJboss EPX server
4445 TCP EPXJboss EPX Server
4446 TCP EPXJboss EPX Server
4448 EPXJboss
4455 TCP EPXJboss EPX Server
4457 EPXJboss
4712 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
4713 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
4789 UDP Docker Swarm Docker Swarm
5432 TCP PostgreSQL Server EnableServerTomcat
5432 TCP PostgreSQL Server EnableServerSlaveN DB
5432 TCP PostgreSQL Server EPXTomcat
5432 TCP PostgreSQL Server EnablePIMQL
5671 TCP RabbitMQ RabbitMQ
5672 TCP RabbitMQ RabbitMQ
7946 TCP Docker Swarm Docker Swarm
7946 UDP Docker Swarm Docker Swarm
8000 TCP EPXJboss EPX Server
8009 TCP EPXTomcat EPX Server
8015 EnableServerTomcat
8034 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
8035 EnableServerSlaveN
8036 EnableServerSlaveN
Enable 10 System Architecture Guide
Page 27 of 43 Revised 12/10/2019
Enable 10.1 Default Port Matrix Sorted by Port
Port Protocol Endpoint A Endpoint B Components
8037 EnableServerSlaveN
8038 EnableServerSlaveN
8039 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
8080 TCP EPXJboss Data Services (TOMCAT/ JBOSS Master)
8083 TCP EPXJboss EPX Server
8090 TCP EnableServerTomcat Data Services (TOMCAT/ JBOSS Master)
8093 EPXJboss
8109 EnableServerTomcat
8134 TCP EnableServerSlaveN Job Queues (Slave 1 -- n) EPX
8139 TCP EnableServerSlaveN Job Queues (Slave 1 -- n) EPX
8443 EPXTomcat
9018 PIMQL
9033 TCP EPXJboss EPX Server
9034 TCP EPXJboss EPX Server
9039 TCP EPXJboss EPX Server
9040 TCP EPXTomcat EPX Server
9200 TCP Elasticsearch Elasticsearch & MongoDB
9300 TCP Elasticsearch & MongoDB
9443 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
9990 TCP EPXJboss EPX Server
9990 EnableServerWildflyMaster
Enable 10 System Architecture Guide
Page 28 of 43 Revised 12/10/2019
Enable 10.1 Default Port Matrix Sorted by Port
Port Protocol Endpoint A Endpoint B Components
9993 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
9999 EnableServerWildflyMaster
15671 TCP RabbitMQ RabbitMQ
15672 TCP RabbitMQ RabbitMQ
19001 EPXJboss
25672 TCP RabbitMQ RabbitMQ
27017 TCP MongoDB Elasticsearch & MongoDB
27018 TCP Elasticsearch & MongoDB
27019 Elasticsearch & MongoDB
8.5.2 Enable 10.1 Default Port Matrix by Service
Enable 10.1 Default Port Matrix Sorted by Endpoint A
Port Protocol Endpoint A Endpoint B Components
1099 Design Console
2376 TCP Docker Swarm Docker Swarm
2377 TCP Docker Swarm Docker Swarm
4789 UDP Docker Swarm Docker Swarm
7946 TCP Docker Swarm Docker Swarm
7946 UDP Docker Swarm Docker Swarm
9200 TCP Elasticsearch Elasticsearch & MongoDB
80 TCP enable2020-web-server-service
Web
8035 EnableServerSlaveN
Enable 10 System Architecture Guide
Page 29 of 43 Revised 12/10/2019
Enable 10.1 Default Port Matrix Sorted by Endpoint A
Port Protocol Endpoint A Endpoint B Components
8036 EnableServerSlaveN
8037 EnableServerSlaveN
8038 EnableServerSlaveN
8134 TCP EnableServerSlaveN Job Queues (Slave 1 -- n) EPX
8139 TCP EnableServerSlaveN Job Queues (Slave 1 -- n) EPX
8015 EnableServerTomcat
8090 TCP EnableServerTomcat Data Services (TOMCAT/ JBOSS Master)
8109 EnableServerTomcat
25 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
3528 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
3529 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
4712 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
4713 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
8034 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
8039 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
9443 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
Enable 10 System Architecture Guide
Page 30 of 43 Revised 12/10/2019
Enable 10.1 Default Port Matrix Sorted by Endpoint A
Port Protocol Endpoint A Endpoint B Components
9990 EnableServerWildflyMaster
9993 TCP EnableServerWildflyMaster Data Services (TOMCAT/ JBOSS Master)
9999 EnableServerWildflyMaster
1100 EPXJboss
1101 EPXJboss
1161 EPXJboss
1162 EPXJboss
3527 EPXJboss
3873 TCP EPXJboss EPX server
4444 TCP EPXJboss EPX server
4445 TCP EPXJboss EPX Server
4446 TCP EPXJboss EPX Server
4448 EPXJboss
4455 TCP EPXJboss EPX Server
4457 EPXJboss
8000 TCP EPXJboss EPX Server
8080 TCP EPXJboss Data Services (TOMCAT/ JBOSS Master)
8083 TCP EPXJboss EPX Server
8093 EPXJboss
9033 TCP EPXJboss EPX Server
9034 TCP EPXJboss EPX Server
9039 TCP EPXJboss EPX Server
9990 TCP EPXJboss EPX Server
19001 EPXJboss
8009 TCP EPXTomcat EPX Server
8443 EPXTomcat
9040 TCP EPXTomcat EPX Server
Enable 10 System Architecture Guide
Page 31 of 43 Revised 12/10/2019
Enable 10.1 Default Port Matrix Sorted by Endpoint A
Port Protocol Endpoint A Endpoint B Components
27017 TCP MongoDB Elasticsearch & MongoDB
1433 TCP MS SQL Server EnableServerTomcat SQL Server
1433 TCP MS SQL Server EnableServerSlaveN
1433 TCP MS SQL Server EPXJboss
1433 TCP MS SQL Server PIMQL
2049 TCP NFS NFS
4000 TCP NoMachine/NX NX
9018 PIMQL
1434 PostgreSQL Server
3306 PostgreSQL Server
5432 TCP PostgreSQL Server EnableServerTomcat
5432 TCP PostgreSQL Server EnableServerSlaveN DB
5432 TCP PostgreSQL Server EPXTomcat
5432 TCP PostgreSQL Server EnablePIMQL
4369 TCP RabbitMQ RabbitMQ
5671 TCP RabbitMQ RabbitMQ
5672 TCP RabbitMQ RabbitMQ
15671 TCP RabbitMQ RabbitMQ
15672 TCP RabbitMQ RabbitMQ
25672 TCP RabbitMQ RabbitMQ
443 Web
21 SFTP
22 SFTP
82
445 TCP Data Services (TOMCAT/ JBOSS Master)
445 TCP Job Queues (Slave 1 -- n) EPX
445 TCP Support Services (Microservices)
Enable 10 System Architecture Guide
Page 32 of 43 Revised 12/10/2019
Enable 10.1 Default Port Matrix Sorted by Endpoint A
Port Protocol Endpoint A Endpoint B Components
9300 TCP Elasticsearch & MongoDB
27018 TCP Elasticsearch & MongoDB
27019 Elasticsearch & MongoDB
Enable 10 System Architecture Guide
Page 33 of 43 Revised 12/10/2019
9 Architectural Diagrams
9.1 Enable Core Software Architectural Model
Enable 10 System Architecture Guide
Page 34 of 43 Revised 12/10/2019
9.2 Linux Stand-alone Architecture
Enable 10 System Architecture Guide
Page 35 of 43 Revised 12/10/2019
9.3 Linux Multi-server Architecture
Enable 10 System Architecture Guide
Page 36 of 43 Revised 12/10/2019
9.4 Windows Single-Server Architecture
Enable 10 System Architecture Guide
Page 37 of 43 Revised 12/10/2019
9.5 Windows Multi-server Architecture
Enable 10 System Architecture Guide
Page 38 of 43 Revised 12/10/2019
10 Extending Enable’s Base Functionality
10.1 Enable APIs
Note: Enable’s SOAP and EJB APIs are in the process of being deprecated in favor of Enable’s REST APIs. For information regarding Enable’s SOAP and EJB APIs, see the Enable v8 APIs document.
For information regarding the Enable REST APIs, see the documentation available through the Enable 2020 UI and the Enable 10 API Overview document, or contact your Enable account representative.
To access information regarding the Enable REST APIs through the Enable 2020 UI:
1. Sign in to the Enable 2020 UI.
2. Open the Feature Sidebar, open the System tab, open the Help folder, and click REST API.
Enable 10 System Architecture Guide
Page 39 of 43 Revised 12/10/2019
3. Enable’s REST APIs help content will appear.
10.2 Extended Capabilities via the Enable 2020 UI
The Enable user can interact with custom functionality in the following manners:
• Custom Widget
• Custom Action
Open Enable’s REST API Help
Enable 10 System Architecture Guide
Page 40 of 43 Revised 12/10/2019
• Trigger
• Callouts:
o Validation Callout
o Pre-save Callout
o Scheduled Import Preprocess Callout
o Scheduled Export Preprocess Callout
o EPX Callout
o Message Queue Callout
10.3 Add-on Microservices
The enable2020-web-server-service is the main web server. There are three different ways to add custom integrations.
• Include routes to additional static files (.html).
• Include routes to proxy to an external web server.
• Include routes to another microservice queue (custom microservices).
They are described in the following sections.
10.3.1 Additional Static Files
You may want to add a custom web component and bring it up in a widget or add a custom popup from an attribute define button.
Your web files will be treated as part of the same application, and therefore have the same cookies. This means you can include JavaScript that makes any REST API call.
To do this, place your files in a location that can be reached by the web server process. Then add an entry in the install script as follows:
Enable 10 System Architecture Guide
Page 41 of 43 Revised 12/10/2019
-customPaths=/custom;<install drive>:/Enterworks/custom ^
Each path is defined by two paths separated by a semicolon. The first entry is the relative path specified in the URL. The second entry is the physical path to the associated folder.
You can supply multiple paths by using a comma separator between each semicolon-delimited pair:
-customPaths=/custom1;<install drive>:/Enterworks/custom1,/custom2;<install
drive>/Enterworks/custom2 ^
10.3.2 Proxies
Similar to additional static files, you can point a relative path URL to another web server.
Again, any JavaScript running from files served by the proxied server will have access to the REST API. Add an entry in the install script as follows:
-customProxies=/myapp1;myAppServer1:8080
Each proxy is defined by two paths separated by a semicolon. The first entry is the relative path specified in the URL. The second entry is the URL for the proxy.
For example, if you refer a widget's custom URL to /myapp1/somefile.html, then somefile.html lives on an external web
server.
The proxy web server can be written in any language.
There is an example Go Language web server that can be installed as a Windows service. The example serves static files from a command line configured path. It is located at:
/enable2020-go/service-mains/example/enable2020-example-web-server-service.go
10.3.3 Custom Microservices
The preferred way to customize and enhance enable2020 is to write a custom microservice that receives messages from RabbitMQ.
Enable 10 System Architecture Guide
Page 42 of 43 Revised 12/10/2019
Your microservice should define a queue on the same RabbitMQ server. The web server will capture any request on the custom queue path and send it to your custom queue.
customQueues=/custom1;myCustomQueue1,/api/custom2;customQueue2
Each microservice is defined by two paths separated by a semicolon. The first entry is the relative path specified in the URL. The second entry is the RabbitMQ queue name.
It isn't required, but your queue names should be parameterized and follow the same naming convention as the rest of the microservices.
An example of a custom microservice is provided at:
/enable2020-go/service-mains/example/enable2020-example-micro-service.go
The example is written in Golang, mainly because it is easy to install as a Windows service, however, you could use any process and language to connect to RabbitMQ and establish a queue worker.
The RabbitMQ documentation web page has examples in eleven languages including Java, JavaScript, Python, C#, and Go. The documentation is available at:
https://www.rabbitmq.com/getstarted.html
The message structure sent from the web server is like an HTTP request and has the following structure:
type EwMicroServiceMsg struct {
Method string
URI string
Body []byte
Headers string
EwToken string // Used for authentication of other microservices
}
If you POST a JSON document, it will be serialized in the Body. It's up to you to deserialize it.
Enable 10 System Architecture Guide
Page 43 of 43 Revised 12/10/2019