Challenge Overview
Watson Pattern Explorer User Interface Contest Specification
1. Project Overview
1.1 System Description
The goal is to produce a proof of concept pattern explorer application using Node RED technology. The application should take in data from the Watson Engagement Advisor Instance, run it through a series of processing steps and provide access to the processed data.
1.2 Competition Task Overview
In this contest we will build an end user application to enable configuring flows, managing user credentials and accessing the processing results. The application will be built using nodejs/express stack.
The application should support the following:
- User credentials configuration
- Configuration of the available nodeRED flows
- Adding a new job
- Monitoring job status
- Displaying job history
- Access to the job results
1.2.1 Credentials configuration
This is where the user can define credentials that will be reused in multiple flows. Implement add/remove/update credential pages. Each credential should be a username/password combination with ID and credentials title.
Credential: {
ID:int,
Name:string,
Username:string,
Password: string
}
1.2.2 Configuring nodeRED flows
This is where the user can define node RED flows that can be used to process the jobs. User should be able to Add/Remove/Update a nodeRED flow. Each flow will have a name, configuration, trigger path, list of input parameters and a list of output results.
JobConfig:{
name:string,
configuration:string,
triggerPath:string,
inputParams:[
{
name
type:number|string|file|credential
}
],
results:[
{
name:string
type:json|csv|text
}
]
}
If the input parameter type is credential, name should be chosen from the available credentials (created in 1.2.1)
1.2.2 Adding a new job
User will first choose a job type (one of the added flows in 1.2.2), then enter the input parameters for the job.
Form with the input parameters is generated on the fly. Show a textbox for number/string parameters and file selector for file parameter types. Credential parameters should not be shown here, as they will be populated from the configured ones.
On submitting the form, new job will be created in the database and the data will be sent to the nodeRED http endpoint to trigger the processing flow. Triggering the flow is out of scope here, just define and call a triggerFlow method and pass the job parameters to it.
For now, we can use the following database schema for persisting user jobs
Job:{
ID:string,
userID:int,
name:string,
jobConfigID:string,
inputParams:[
{
name
value
}
],
results:[
{
name
value
timestamp
}
],
status:string
}
1.2.3 Monitoring job status
User can start multiple processing jobs, and each of them can be in different stages. The processing flow will update the job status in the database, so the UI should reflect the status changes. For now, implement just the simple polling for job status changes and add a refresh status button.
1.2.4 Displaying job history
Display a simple list of all submitted jobs. For each job display the input parameters, processing status and a link to the output data if the job is completed.
1.2.5 Access to the job result
The job result will be available in the database after the processing is completed. The result will be available in json, csv or text format. Show a page with job details (inputs) and processing results.
All of the above actions should operate on a user basis. For now, add users table (ID, username, password). Job history should include jobs by the current user only.
1.3 Persistence
Use cloudant database instance to persist all the data. To connect to the cloudant instance use one of the supported nodejs libraries https://docs.cloudant.com/libraries.html#node.js
1.4 User interface
There is no UI prototype yet, so use a simple one column layout with a menu (configuration, new job, job history).
1.5 Verification
All pages can be verified manually.
1.6 Technology overview
- Nodejs https://nodejs.org
- Node RED http://nodered.org
- Cloudant https://cloudant.com
- cf-cloudant http://flows.nodered.org/node/node-red-node-cf-cloudant
Final Submission Guidelines
Submit a zip file with all the deliverables.