General Architecture
The general architecture for CUWOs consists of a combination of client- and server-side components that are part of the enfore platform and two external components that are provided by the external integrator:
Components
The following sections provide a high-level overview of the relevant components of the architecture.
Relevant components - enfore
The enfore platform allows external parties to implement custom workflows. Each instance of such a workflow is called a “custom workflow instance” or “CUWO instance” and is running inside a specialized container component that sandboxes it and separates the custom UI and logic from the regular enfore application UI/logic.
That container component is called “custom workflow container” or “CUWO container” and is implemented using a WebView component that is capable of rendering HTML/CSS and executing JavaScript code.
Additionally, the “Certificate Service” is a component in the enfore backend responsible for providing the client certificates needed by the custom workflow container to access the external integrators “CUWO provider”. Certificates are issued by enfore and must be trusted by the “CUWO Provider”. To allow the provider to determine what device the request comes from, the certificates contain the serial number of the device as well as the ID of the organization that device belongs to.
Relevant components - external integrator
The “CUWO Provider” is a server backend that provides the custom workflows with their application code as well as all necessary backend APIs.
APIs
This section provides a high-level overview of the various APIs that are part of the architecture
The “CUWO Callback” API is a JavaScript API injected into the JavaScript engine that is part of the CUWO container to allow the workflow running in the container to communicate with the container (e.g., notify termination of workflow).
The “CUWO Messages” API is an API provided by the CUWO container to allow the workflow running in the container to trigger operations (e.g. printing of documents) in the enfore client environment.
The “CUWO Cert” API provided by the Certificate Service is used by the CUWO container to acquire the client certificate necessary to execute custom workflows from the external CUWO provider backend.