@nocobase/plugin-workflow
Version:
A powerful BPM tool that provides foundational support for business automation, with the capability to extend unlimited triggers and nodes.
794 lines (792 loc) • 21.4 kB
JavaScript
/**
* This file is part of the NocoBase (R) project.
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
* Authors: NocoBase Team.
*
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
* For more information, please refer to: https://www.nocobase.com/agreement.
*/
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var swagger_exports = {};
__export(swagger_exports, {
default: () => swagger_default
});
module.exports = __toCommonJS(swagger_exports);
var swagger_default = {
openapi: "3.0.2",
info: {
title: "NocoBase API - Workflow plugin"
},
tags: [],
paths: {
"/workflows:list": {
get: {
tags: ["workflows"],
description: "",
parameters: [
{
$ref: "#/components/schemas/workflow/filter"
}
],
responses: {
200: {
description: "OK",
content: {
"application/json": {
schema: {
type: "array",
items: {
$ref: "#/components/schemas/workflow/model"
}
}
}
}
}
}
}
},
"/workflows:get": {
get: {
tags: ["workflows"],
description: "Get single workflow",
parameters: [
{
$ref: "#/components/schemas/workflow/filterByTk"
},
{
$ref: "#/components/schemas/workflow/filter"
}
],
responses: {
200: {
description: "OK",
content: {
"application/json": {
schema: {
allOf: [
{
$ref: "#/components/schemas/workflow/model"
},
{
type: "object",
properties: {
nodes: {
type: "array",
items: {
$ref: "#/components/schemas/node"
}
}
}
}
]
}
}
}
}
}
}
},
"/workflows:create": {
post: {
tags: ["workflows"],
description: "Create new workflow",
parameters: [],
requestBody: {
content: {
"application/json": {
schema: {
type: "object",
properties: {
title: {
$ref: "#/components/schemas/workflow/model/properties/title"
},
type: {
$ref: "#/components/schemas/workflow/model/properties/type"
},
description: {
$ref: "#/components/schemas/workflow/model/properties/description"
}
}
}
}
}
},
responses: {
200: {
description: "OK",
content: {
"application/json": {
schema: {
allOf: [
{
$ref: "#/components/schemas/workflow"
}
]
}
}
}
}
}
}
},
"/workflows:update": {
post: {
tags: ["workflows"],
description: "Update a workflow",
parameters: [],
requestBody: {
content: {
"application/json": {
schema: {
type: "object",
properties: {
title: {
$ref: "#/components/schemas/workflow/model/properties/title"
},
enabled: {
$ref: "#/components/schemas/workflow/model/properties/enabled"
},
description: {
$ref: "#/components/schemas/workflow/model/properties/description"
},
config: {
$ref: "#/components/schemas/workflow/model/properties/config"
}
}
}
}
}
},
responses: {
200: {
description: "OK"
}
}
}
},
"/workflows:destroy": {
post: {
tags: ["workflows"],
description: "Delete workflows. Also will delete all nodes and executions of the workflow.",
parameters: [
{
name: "filterByTk",
in: "query",
description: "Primary key of a record",
schema: {
type: "integer",
description: "ID. The only workflow with ID will be deleted."
}
},
{
name: "filter",
in: "query",
description: "Filter",
schema: {
type: "object",
properties: {
key: {
type: "string",
description: "Key. If provided, all workflow with same key will be deleted."
}
}
}
}
],
responses: {
200: {
description: "OK"
}
}
}
},
"/workflows:revision": {
post: {
tags: ["workflows"],
description: "Duplicate a workflow to a new version or a new workflow. All nodes will be duplicated too.",
parameters: [
{
name: "filterByTk",
in: "query",
description: "Primary key of a record",
schema: {
type: "integer",
description: "ID. The workflow to duplicate."
}
},
{
name: "filter",
in: "query",
description: "Filter",
schema: {
type: "object",
properties: {
key: {
type: "string",
description: "Key. If provided, only duplicate to a new version. Or will be duplicated to a new workflow."
}
}
}
}
],
responses: {
200: {
description: "OK"
}
}
}
},
"/workflows:trigger": {
post: {
tags: ["workflows"],
description: "",
parameters: [
{
name: "triggerWorkflows",
in: "query",
description: "A combined string to describe workflows to trigger and context data to use. e.g. `?triggerWorkflows=1,2!category`. Each comma separated part is a trigger pair, as `1` and `2!category`. The number part is the ID of workflow, exclamation means the path of association to use in form data. If ignored, will trigger with the full form data object.",
schema: {
type: "string"
}
}
],
responses: {
202: {
description: "Accepted"
},
400: {
description: "Bad Request"
}
}
}
},
"/workflows/{workflowId}/nodes:create": {
post: {
tags: ["workflows.nodes"],
description: "Create a new node in workflow",
parameters: [],
requestBody: {
content: {
"application/json": {
schema: {
type: "object",
properties: {
title: {
$ref: "#/components/schemas/node/properties/title"
},
type: {
$ref: "#/components/schemas/node/properties/type"
},
upstreamId: {
$ref: "#/components/schemas/node/properties/upstreamId"
},
branchIndex: {
$ref: "#/components/schemas/node/properties/branchIndex"
}
}
}
}
}
},
responses: {
200: {
description: "OK",
content: {
"application/json": {
schema: {
allOf: [
{
$ref: "#/components/schemas/node"
}
]
}
}
}
}
}
}
},
"/flow_nodes:update": {
post: {
tags: ["flow_nodes"],
description: "Update node properties.",
parameters: [
{
name: "filterByTk",
in: "query",
description: "Primary key of a record",
schema: {
type: "integer",
description: "ID"
}
}
],
requestBody: {
content: {
"application/json": {
schema: {
type: "object",
properties: {
title: {
$ref: "#/components/schemas/node/properties/title"
},
config: {
$ref: "#/components/schemas/node/properties/config"
}
}
}
}
}
},
responses: {
200: {
description: "OK"
},
400: {
description: "Bad Request. Node in exected workflow cannot be updated."
}
}
}
},
"/flow_nodes:destroy": {
post: {
tags: ["flow_nodes"],
description: "Delete a node. All nodes in sub-branches will also be deleted.",
parameters: [
{
name: "filterByTk",
in: "query",
description: "Primary key of a record",
schema: {
type: "integer",
description: "ID"
}
}
],
responses: {
200: {
description: "OK"
},
400: {
description: "Bad Request. Node in exected workflow cannot be deleted."
}
}
}
},
"/executions:list": {
get: {
tags: ["executions"],
description: "Get list of executions",
parameters: [],
responses: {
200: {
description: "OK",
content: {
"application/json": {
schema: {
type: "array",
description: "List of executions",
items: {
$ref: "#/components/schemas/execution",
type: "object",
not: {
$ref: "#/components/schemas/execution/properties/jobs"
}
}
}
}
}
}
}
}
},
"/executions:get": {
get: {
tags: ["executions"],
description: "Get single execution",
parameters: [
{
name: "filterByTk",
in: "query",
description: "Primary key of a record",
schema: {
type: "integer",
description: "ID"
}
}
],
responses: {
200: {
description: "OK",
content: {
"application/json": {
schema: {
$ref: "#/components/schemas/execution"
}
}
}
}
}
}
},
"/workflowManualTasks:list": {
get: {
tags: ["workflowManualTasks"],
description: "List manual jobs",
parameters: [],
responses: {
200: {
description: "OK",
content: {
"application/json": {
schema: {
type: "array",
description: "List of manual jobs",
items: {
$ref: "#/components/schemas/user_job"
}
}
}
}
}
}
}
},
"/workflowManualTasks:get": {
get: {
tags: ["workflowManualTasks"],
description: "Single user job",
parameters: [],
responses: {
200: {
description: "OK",
content: {
"application/json": {
schema: {
allOf: [
{
$ref: "#/components/schemas/user_job"
},
{
type: "object",
properties: {
execution: {
$ref: "#/components/schemas/execution"
}
}
}
]
}
}
}
}
}
}
},
"/workflowManualTasks:submit": {
post: {
tags: ["workflowManualTasks"],
description: "",
parameters: [
{
name: "filterByTk",
in: "query",
description: "Primary key of a record",
schema: {
type: "integer",
description: "ID"
}
}
],
requestBody: {
content: {
"application/json": {
schema: {
type: "object",
properties: {
result: {
type: "object",
properties: {
$formKey: {
type: "object"
},
_: {
type: "string"
}
}
}
}
}
}
}
},
responses: {
202: {
description: "Accepted"
},
400: {
description: "Bad Request. Status of the job is not 0."
}
}
}
}
},
components: {
schemas: {
workflow: {
model: {
type: "object",
description: "Workflow",
properties: {
id: {
type: "integer",
description: "ID"
},
key: {
type: "string",
description: "Key. Variant versions of the same workflow share the same key."
},
title: {
type: "string",
description: "Title"
},
description: {
type: "string",
description: "Description"
},
current: {
type: "boolean",
description: "Current version"
},
enabled: {
type: "boolean",
description: "Enabled"
},
type: {
type: "string",
description: "Event type"
},
config: {
type: "object",
description: "Configuration JSON object"
},
nodes: {
type: "array",
description: "Workflow nodes"
},
executions: {
type: "array",
description: "Executions"
},
revisions: {
type: "array",
description: "Revisions"
}
}
},
filterByTk: {
name: "filterByTk",
in: "query",
description: "Primary key of a record",
schema: {
type: "integer",
description: "ID"
}
},
filter: {
name: "filter",
in: "query",
description: "Filter parameters in JSON format",
schema: {
type: "object",
properties: {
id: {
$ref: "#/components/schemas/workflow/model/properties/id"
},
title: {
$ref: "#/components/schemas/workflow/model/properties/title"
},
type: {
$ref: "#/components/schemas/workflow/model/properties/type"
},
enabled: {
$ref: "#/components/schemas/workflow/model/properties/enabled"
},
current: {
$ref: "#/components/schemas/workflow/model/properties/current"
},
key: {
$ref: "#/components/schemas/workflow/model/properties/key"
}
}
}
}
},
node: {
type: "object",
description: "Workflow node",
properties: {
id: {
type: "integer",
description: "ID"
},
title: {
type: "string",
description: "Title"
},
workflowId: {
type: "integer",
description: "Workflow ID"
},
upstreamId: {
type: "integer",
description: "Upstream node ID"
},
upstream: {
type: "object",
description: "Upstream node",
$ref: "#/components/schemas/node"
},
downstreamId: {
type: "integer",
description: "Downstream node ID in flow, not in sub-branches",
$ref: "#/components/schemas/node"
},
downstream: {
type: "object",
description: "Downstream node",
$ref: "#/components/schemas/node"
},
type: {
type: "string",
description: "Node type"
},
config: {
type: "object",
description: "Configuration JSON object"
},
branchIndex: {
type: "integer",
description: "Non-null if the node is a branch node of upstream"
},
branches: {
type: "array",
description: "Branch nodes under the node",
items: {
$ref: "#/components/schemas/node"
}
}
}
},
execution: {
type: "object",
description: "Execution record of workflow",
properties: {
id: {
type: "integer",
description: "ID"
},
key: {
type: "string",
description: "Workflow key"
},
workflowId: {
type: "integer",
description: "Workflow ID"
},
context: {
type: "object",
description: "Context data"
},
status: {
type: "integer",
description: "Status of execution"
},
jobs: {
type: "array",
description: "Results of executed nodes",
items: {
$ref: "#/components/schemas/job"
}
}
}
},
job: {
type: "object",
description: "Job record of exected node",
properties: {
id: {
type: "integer",
description: "ID"
},
executionId: {
type: "integer",
description: "Execution ID"
},
nodeId: {
type: "integer",
description: "Node ID"
},
status: {
type: "integer",
description: "Status of job"
},
result: {
type: "object",
description: "Result data of job"
}
}
},
user_job: {
type: "object",
description: "User job",
properties: {
id: {
type: "integer",
description: "ID"
},
executionId: {
type: "integer",
description: "Execution ID"
},
nodeId: {
type: "integer",
description: "Node ID"
},
workflowId: {
type: "integer",
description: "Workflow ID"
},
userId: {
type: "integer",
description: "User ID"
},
status: {
type: "integer",
description: "Status of job"
},
result: {
type: "object",
description: "Result data of job"
}
}
}
}
}
};