/conductor-ng-ui

Conductor NG UI is an Angular UI for Conductor Workflows and Workflow Executions management.

Primary LanguageTypeScriptMIT LicenseMIT

Conductor NG UI

Task & Workflow Definitions Management

Workflow Execution Management

Analytic Dashboards

Versions < 3.0.0 are prone to vulnerabilities and bugs.

SonarCloud

Before starting, for details on Conductor, refer to http://netflix.github.io/conductor/

Added to Netflix/Conductor Repository --> Conductor Community Projects

Overview

The idea is to build a single production grade Angular Web UI, to let the user interact with Conductor API, for the following

  • Task definitions - Create / View / Update / Delete / Requeue Task / See Polling Data

  • Workflow definitions - View / Execute / Delete

  • Workflow Executions - View / Pause / Resume / Terminate / Retry / Restart / Archive / Delete

Motivation

To avoid the pain points of

  • Referring to documentation manually and then develop / write Request JSONs for API requests.
  
  • Better visual representation of the workflows and tasks.

Tech / Framework used

  --> Docker Image to host the Angular Web UI. 
  			
  --> Angular 11

        Used an existing "Architect UI" template for development

Integrations

OAuth2.0 Integrated - (Keycloak Tested)

API Calls Scheduler : Planned (5.0.0) For scheduling conductor workflows

Code quality

SonarQube: Quality Gate Status

Build using Node

npm run build
  - for development build
npm run build-prod
  - for production build
	
The node build should place the build content inside the target dist/conductor-ng-ui folder.

Node CI

CI Provider Status
Node.js CI Node.js CI

Containerization CI (Continuous Integration)

CI Provider Status
Docker Docker
Docker Image CI Docker Image CI

Docker Image published to DockerHub here

To pull the image :

docker pull zzzmahesh/conductor-ng-ui

Run Conductor NG UI : Standalone

cd <to project root folder>
	
Below command will start the Conductor NG UI

	export WF_SERVER=http://localhost:8080/api

	export OAUTH_ENABLED=N

	npm run server

Replace your Conductor Server Endpoint accordingly

Note: To avoid CORS issue while running on local host, open chrom with disabled security. Example (For Mac) is as below and should be similar on other OS too.

open -n -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir="/tmp/chrome_dev_test" --disable-web-security

Application URLs

http://localhost:4200/ - To access Angular Web UI.

Run Conductor NG UI : Docker

To run the container :

docker run --name conductor-ng-ui -p 80:80 -d zzzmahesh/conductor-ng-ui:latest

Few other examples / ways / configurations to run the container as:

Running with a complete suite - Consisting of a OAUTH2.0 Login Validation

    docker run --name conductor-ng-ui -p 80:80 \
        -e WF_SERVER=http://localhost:8080/api
        -e OAUTH_ENABLED=Y
        -e OAUTH_TOKEN_URL=http://localhost:9990/auth/realms/master/protocol/openid-connect/token
        -e OAUTH_USER_INFO_URL=http://localhost:8080/userinfo
        -e OAUTH_LOGOUT_URL=http://localhost:9990/auth/realms/master/protocol/openid-connect/logout
        -e OAUTH_CLIENT_ID=conductor_user_client
        -e OAUTH_CLIENT_SECRET=8782ca99-decc-441a-8988-736350fafe67
        -d zzzmahesh/conductor-ng-ui:latest

All the above mentioned environment variables with start with OAUTH_ should be provided accordingly.

Note: If you are using Conductor Boot instead of pure conductor, then the userinfo url will http://<<conductor_server_url>>/userinfo . Here the conductor_server_url refers to the base url and not the API endpoint.

Note: To avoid CORS issue while running on local host, open chrom with disabled security. Example (For Mac) is as below and should be similar on other OS too.

open -n -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir="/tmp/chrome_dev_test" --disable-web-security

Application URLs

http://localhost - To access Angular Web UI.

Run Conductor NG UI : Docker Compose

1) A simple setup

    docker-compose up -d

2) A full fledged setup

    docker-compose -f docker-compose-suite.yml up -d

Note: For a full suite, it is assumed, the persistence also will be expected to be mapped. Hence create the below folder structure before "A full fledged setup"

mkdir container container/persistence container/persistence/mysql container/persistence/postgres container/persistence/elasticsearch

Note: To avoid CORS issue while running on local host, open chrom with disabled security. Example (For Mac) is as below and should be similar on other OS too.

open -n -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir="/tmp/chrome_dev_test" --disable-web-security

Application URLs

http://localhost - To access Angular Web UI.

Sample Web UI Screenshots

Login

Screenshot 2021-03-23 at 12 31 45 AM

Home Page - Swagger UI (read only mode)

Screenshot 2021-03-23 at 12 32 00 AM

Workflow Analytics Dashboards

API Hits Counter

Screenshot 2021-03-23 at 12 32 28 AM

Workflow Execution Analytics

Screenshot 2021-03-23 at 12 32 46 AM

Execitions and Definitions Stats

Screenshot 2021-03-23 at 12 33 05 AM

Log Aggregation Analytics Dashboard

Log Levels and Java Class invocations

Screenshot 2021-03-23 at 12 33 31 AM

Error and Pending Tasks Counter

Screenshot 2021-03-23 at 12 33 42 AM

Create Task Definition

Screenshot 2021-03-23 at 12 55 30 AM

Screenshot 2021-03-23 at 12 55 59 AM

Screenshot 2021-03-23 at 12 56 34 AM

Screenshot 2021-03-23 at 12 56 47 AM

Screenshot 2021-03-23 at 12 56 58 AM

View Task Definitions

Screenshot 2021-03-23 at 12 57 10 AM

Screenshot 2021-03-23 at 12 57 21 AM

Screenshot 2021-03-23 at 12 57 25 AM

Screenshot 2021-03-23 at 12 57 29 AM

Screenshot 2021-03-23 at 12 57 36 AM

Screenshot 2021-03-23 at 12 57 44 AM

Screenshot 2021-03-23 at 12 57 49 AM

View Task Definition Detail

Screenshot 2021-03-23 at 12 58 02 AM

Screenshot 2021-03-23 at 12 58 15 AM

View Workflow Definitions

Screenshot 2021-03-23 at 12 58 29 AM

Screenshot 2021-03-23 at 12 58 38 AM

Screenshot 2021-03-23 at 12 58 44 AM

Screenshot 2021-03-23 at 12 58 50 AM

Screenshot 2021-03-23 at 12 58 58 AM

Screenshot 2021-03-23 at 12 59 02 AM

View Workflow Definition Detail

Screenshot 2021-03-23 at 12 59 14 AM

Screenshot 2021-03-23 at 12 59 33 AM

Screenshot 2021-03-23 at 1 00 17 AM

Screenshot 2021-03-23 at 1 00 26 AM

Screenshot 2021-03-23 at 1 00 39 AM

View Workflow Executions

Screenshot 2021-03-23 at 1 00 56 AM

Screenshot 2021-03-23 at 1 01 09 AM

Screenshot 2021-03-23 at 1 01 26 AM

View Workflow Execution Detail

Screenshot 2021-03-23 at 1 01 46 AM

Screenshot 2021-03-23 at 1 02 12 AM

Screenshot 2021-03-23 at 1 02 33 AM

System Configuration and Queue Poll Data

Screenshot 2021-03-23 at 1 02 54 AM

Screenshot 2021-03-23 at 1 03 02 AM

User Profile

Screenshot 2021-03-23 at 1 03 13 AM