Appex Client Architecture

When the appex_client Erlang application is started, a supervisor and a couple workers are started.

appex_client_client

The HTTP client that communicates with the configured app exchange server API.

kappex_controller

On start up, the process binds itself into kapps_controller for fetching apps. When kapps_controller cannot find an Erlang application when asked to start it, a routing request will be issued for help (app.fetch binding). kappex_controller binds for those and, if possible, fetches the app (if the cluster has a subscription to the app) and unpack the archive file make it ready to be started.

If the app is not yet download, a request will be issued to the appex server for access to the Erlang application.

UI Asset wrapper OTP App

Appex BluePAK is creating a standard Erlang/OTP to wrap the UI. This wrapper app includes a module to integrate the Crossbar to serve the UI assets file over HTTP to clients.

On startup this module register an extra custom route to the Crossbar, providing a callback so when Crossbar starts on this node, it will adds appex to the running HTTP server routes.

When an UI app starts, the wrapper app will set the app’s metadata.json paramerter source_url. This will allows Monster UI to fetch the app from the route that appex client is set up.