Register
Submit a solution
The challenge is finished.

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

 



Final Submission Guidelines

Submit a zip file with all the deliverables.

ELIGIBLE EVENTS:

2016 TopCoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30051169