236 lines
7.2 KiB
JSON

{
"$schema": "../../shared/schemas/conductor-project.schema.json",
"schemaVersion": "0.1.0",
"project": {
"id": "proj_concert_workflow_launcher",
"name": "Concert Workflow Launcher",
"description": "A UI for triggering IBM Concert RIA workflows, monitoring status, and displaying structured results.",
"pages": [
{
"id": "page_launch",
"name": "Launch Workflow",
"description": "Primary page for selecting and triggering workflows.",
"order": 0,
"components": [
{
"id": "cmp_env_dropdown",
"type": "Dropdown",
"name": "environmentDropdown",
"position": { "x": 24, "y": 24 },
"size": { "width": 320, "height": 44 },
"properties": {
"label": "Target Environment",
"placeholder": "Select environment…",
"visible": true,
"disabled": false,
"required": true,
"options": [
{ "label": "Development", "value": "dev" },
{ "label": "Staging", "value": "stg" },
{ "label": "Production", "value": "prod" }
]
},
"events": [],
"bindings": []
},
{
"id": "cmp_workflow_input",
"type": "TextInput",
"name": "workflowIdInput",
"position": { "x": 24, "y": 84 },
"size": { "width": 320, "height": 44 },
"properties": {
"label": "Workflow ID",
"placeholder": "e.g. wf-deploy-app",
"defaultValue": "",
"visible": true,
"disabled": false,
"required": true
},
"events": [],
"bindings": []
},
{
"id": "cmp_params_textarea",
"type": "TextArea",
"name": "paramsTextArea",
"position": { "x": 24, "y": 144 },
"size": { "width": 320, "height": 120 },
"properties": {
"label": "Parameters (JSON)",
"placeholder": "{ \"version\": \"1.2.3\" }",
"defaultValue": "{}",
"visible": true,
"disabled": false,
"required": false
},
"events": [],
"bindings": []
},
{
"id": "cmp_launch_btn",
"type": "Button",
"name": "launchButton",
"position": { "x": 24, "y": 284 },
"size": { "width": 160, "height": 44 },
"properties": {
"label": "Launch Workflow",
"visible": true,
"disabled": false
},
"events": [
{
"event": "onClick",
"actionId": "action_trigger_workflow"
}
],
"bindings": []
},
{
"id": "cmp_status_panel",
"type": "StatusPanel",
"name": "statusPanel",
"position": { "x": 24, "y": 344 },
"size": { "width": 640, "height": 60 },
"properties": {
"label": "",
"visible": true,
"disabled": false
},
"events": [],
"bindings": []
},
{
"id": "cmp_results_viewer",
"type": "JsonViewer",
"name": "resultsViewer",
"position": { "x": 24, "y": 420 },
"size": { "width": 640, "height": 320 },
"properties": {
"label": "Response",
"visible": true,
"disabled": false
},
"events": [],
"bindings": []
}
],
"events": []
},
{
"id": "page_history",
"name": "Execution History",
"description": "Read-only view of recent workflow executions.",
"order": 1,
"components": [
{
"id": "cmp_history_table",
"type": "Table",
"name": "historyTable",
"position": { "x": 24, "y": 24 },
"size": { "width": 900, "height": 480 },
"properties": {
"label": "Recent Executions",
"visible": true,
"disabled": false,
"columns": [
{ "key": "id", "header": "Execution ID" },
{ "key": "workflow", "header": "Workflow" },
{ "key": "environment", "header": "Environment" },
{ "key": "status", "header": "Status", "width": 100 },
{ "key": "startedAt", "header": "Started At" }
]
},
"events": [],
"bindings": []
}
],
"events": [
{
"event": "onLoad",
"actionId": "action_list_executions"
}
]
}
],
"actions": [
{
"id": "action_trigger_workflow",
"name": "Trigger Workflow",
"description": "Calls the Concert RIA API to trigger a workflow run.",
"method": "POST",
"url": "https://concert.example.com/api/v1/workflows/{{workflowId}}/run",
"headers": {
"Content-Type": "application/json",
"Accept": "application/json"
},
"queryParameters": {
"environment": "{{components.environmentDropdown.value}}"
},
"pathParameters": {
"workflowId": "{{components.workflowIdInput.value}}"
},
"bodyTemplate": "{\"params\": {{components.paramsTextArea.value}}}",
"authenticationType": "bearerToken"
},
{
"id": "action_list_executions",
"name": "List Executions",
"description": "Fetches recent workflow execution records.",
"method": "GET",
"url": "https://concert.example.com/api/v1/executions",
"headers": {
"Accept": "application/json"
},
"queryParameters": {},
"pathParameters": {},
"bodyTemplate": "",
"authenticationType": "bearerToken"
}
],
"bindings": [
{
"id": "bind_status_to_panel",
"source": "actions.action_trigger_workflow.response.body.status",
"target": "components.statusPanel.value",
"trigger": "onSuccess"
},
{
"id": "bind_response_to_viewer",
"source": "actions.action_trigger_workflow.response",
"target": "components.resultsViewer.value",
"trigger": "onSuccess"
},
{
"id": "bind_history_to_table",
"source": "actions.action_list_executions.response",
"target": "components.historyTable.rows",
"trigger": "onSuccess"
}
],
"variables": {
"lastRunStatus": {
"type": "string",
"defaultValue": "",
"description": "Status string returned by the most recent workflow trigger."
},
"selectedEnvironment": {
"type": "string",
"defaultValue": "dev",
"description": "Currently selected target environment."
}
},
"settings": {
"theme": "system",
"defaultPageId": "page_launch",
"canvasWidth": 1280,
"canvasHeight": 900
}
}
}