chore: rename-general-event-trigger (#1201)
Reviewed-on: daoyoucloud/tachybase#1201
This commit is contained in:
parent
a8191ba6c5
commit
266c934ce6
@ -18,6 +18,7 @@ import { PluginParallel } from './features/parallel';
|
|||||||
import { PluginRequest } from './features/request';
|
import { PluginRequest } from './features/request';
|
||||||
import { PluginResponse } from './features/response';
|
import { PluginResponse } from './features/response';
|
||||||
import { PluginSql } from './features/sql';
|
import { PluginSql } from './features/sql';
|
||||||
|
import { PluginTriggerInstruction } from './features/trigger-instruction/plugin';
|
||||||
import { PluginVariables } from './features/variables';
|
import { PluginVariables } from './features/variables';
|
||||||
import { NAMESPACE } from './locale';
|
import { NAMESPACE } from './locale';
|
||||||
import { Instruction } from './nodes';
|
import { Instruction } from './nodes';
|
||||||
@ -89,6 +90,7 @@ export class PluginWorkflow extends Plugin {
|
|||||||
await this.pm.add(PluginVariables);
|
await this.pm.add(PluginVariables);
|
||||||
await this.pm.add(PluginResponse);
|
await this.pm.add(PluginResponse);
|
||||||
await this.pm.add(PluginOmniTrigger);
|
await this.pm.add(PluginOmniTrigger);
|
||||||
|
await this.pm.add(PluginTriggerInstruction);
|
||||||
}
|
}
|
||||||
|
|
||||||
async load() {
|
async load() {
|
||||||
|
@ -7,7 +7,7 @@ import { Trigger } from '../../triggers';
|
|||||||
import { getCollectionFieldOptions, UseVariableOptions } from '../../variable';
|
import { getCollectionFieldOptions, UseVariableOptions } from '../../variable';
|
||||||
|
|
||||||
export class OmniActionTrigger extends Trigger {
|
export class OmniActionTrigger extends Trigger {
|
||||||
title = tval('Omni action event');
|
title = tval('General event');
|
||||||
description = tval(
|
description = tval(
|
||||||
`Omni Trigger is a versatile trigger. You can use it to trigger workflows in a table, trigger it from another workflow, or trigger it with a form button.`,
|
`Omni Trigger is a versatile trigger. You can use it to trigger workflows in a table, trigger it from another workflow, or trigger it with a form button.`,
|
||||||
);
|
);
|
||||||
|
@ -49,7 +49,7 @@ const triggerWorkflowLinkItem = {
|
|||||||
};
|
};
|
||||||
export class PluginOmniTrigger extends Plugin {
|
export class PluginOmniTrigger extends Plugin {
|
||||||
async load() {
|
async load() {
|
||||||
this.app.pm.get<PluginWorkflow>('workflow').registerTrigger('omni-action', OmniActionTrigger);
|
this.app.pm.get<PluginWorkflow>('workflow').registerTrigger('general-action', OmniActionTrigger);
|
||||||
this.app.addScopes({
|
this.app.addScopes({
|
||||||
useFormWorkflowCustomActionProps,
|
useFormWorkflowCustomActionProps,
|
||||||
useRecordWorkflowCustomTriggerActionProps,
|
useRecordWorkflowCustomTriggerActionProps,
|
||||||
|
@ -28,7 +28,8 @@ class ResponseInstruction extends Instruction {
|
|||||||
};
|
};
|
||||||
isAvailable({ workflow }) {
|
isAvailable({ workflow }) {
|
||||||
return (
|
return (
|
||||||
workflow.type === 'request-interception' || (['action', 'omni-action'].includes(workflow.type) && workflow.sync)
|
workflow.type === 'request-interception' ||
|
||||||
|
(['action', 'general-action'].includes(workflow.type) && workflow.sync)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,32 @@
|
|||||||
|
import { ISchema } from '@tachybase/schema';
|
||||||
|
|
||||||
|
import { tval } from '../../locale';
|
||||||
|
import { Instruction } from '../../nodes';
|
||||||
|
import { VariableOption } from '../../variable';
|
||||||
|
|
||||||
|
export class TriggerInstruction extends Instruction {
|
||||||
|
title = tval('Trigger');
|
||||||
|
type = 'trigger-instruction';
|
||||||
|
group = 'extended';
|
||||||
|
fieldset = {
|
||||||
|
workflowKey: {
|
||||||
|
type: 'string',
|
||||||
|
title: tval('workflow'),
|
||||||
|
name: 'workflowKey',
|
||||||
|
'x-decorator': 'FormItem',
|
||||||
|
'x-component': 'WorkflowSelect',
|
||||||
|
'x-component-props': {
|
||||||
|
buttonAction: 'customize:triggerWorkflows',
|
||||||
|
label: 'title',
|
||||||
|
value: 'key',
|
||||||
|
},
|
||||||
|
required: true,
|
||||||
|
} as ISchema,
|
||||||
|
};
|
||||||
|
useVariables(node, options): VariableOption {
|
||||||
|
return {
|
||||||
|
value: node.key,
|
||||||
|
label: node.title,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
import { Plugin } from '@tachybase/client';
|
||||||
|
|
||||||
|
import { PluginWorkflow } from '../../Plugin';
|
||||||
|
import { TriggerInstruction } from './TriggerInstruction';
|
||||||
|
|
||||||
|
export class PluginTriggerInstruction extends Plugin {
|
||||||
|
async load() {
|
||||||
|
this.app.pm.get<PluginWorkflow>('workflow').registerInstruction('trigger-instruction', TriggerInstruction);
|
||||||
|
}
|
||||||
|
}
|
@ -192,6 +192,6 @@
|
|||||||
"Ignore failed request and continue workflow": "Ignore failed request and continue workflow",
|
"Ignore failed request and continue workflow": "Ignore failed request and continue workflow",
|
||||||
"SQL action": "SQL action",
|
"SQL action": "SQL action",
|
||||||
"Execute a SQL statement in database": "Execute a SQL statement in database",
|
"Execute a SQL statement in database": "Execute a SQL statement in database",
|
||||||
"Omni action event": "Omni action event",
|
"General event": "General event",
|
||||||
"Usage of SQL query result is not supported yet.": "Usage of SQL query result is not supported yet."
|
"Usage of SQL query result is not supported yet.": "Usage of SQL query result is not supported yet."
|
||||||
}
|
}
|
||||||
|
@ -258,7 +258,7 @@
|
|||||||
"Ignore failed request and continue workflow": "忽略失败的请求并继续工作流",
|
"Ignore failed request and continue workflow": "忽略失败的请求并继续工作流",
|
||||||
"SQL action": "SQL 操作",
|
"SQL action": "SQL 操作",
|
||||||
"Execute a SQL statement in database.": "在数据库中执行一个 SQL 语句",
|
"Execute a SQL statement in database.": "在数据库中执行一个 SQL 语句",
|
||||||
"Omni action event": "万能操作事件",
|
"General event": "通用事件",
|
||||||
"Select a data source to execute SQL.": "选择一个数据源来执行 SQL",
|
"Select a data source to execute SQL.": "选择一个数据源来执行 SQL",
|
||||||
"SQL query result could be used through <1>JSON query node</1> (Commercial plugin).": "SQL 执行的结果可在 <1>JSON 解析节点</1> 中使用(商业插件)。"
|
"SQL query result could be used through <1>JSON query node</1> (Commercial plugin).": "SQL 执行的结果可在 <1>JSON 解析节点</1> 中使用(商业插件)。"
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ import { PluginParallel } from './features/parallel/Plugin';
|
|||||||
import { PluginRequest } from './features/request/Plugin';
|
import { PluginRequest } from './features/request/Plugin';
|
||||||
import { PluginResponse } from './features/response';
|
import { PluginResponse } from './features/response';
|
||||||
import { PluginSql } from './features/sql/Plugin';
|
import { PluginSql } from './features/sql/Plugin';
|
||||||
|
import { PluginTriggerInstruction } from './features/trigger-instruction/plugin';
|
||||||
import { PluginVariables } from './features/variables';
|
import { PluginVariables } from './features/variables';
|
||||||
import initFunctions, { CustomFunction } from './functions';
|
import initFunctions, { CustomFunction } from './functions';
|
||||||
import { Instruction, InstructionInterface } from './instructions';
|
import { Instruction, InstructionInterface } from './instructions';
|
||||||
@ -78,6 +79,7 @@ export default class PluginWorkflowServer extends Plugin {
|
|||||||
this.addFeature(PluginVariables);
|
this.addFeature(PluginVariables);
|
||||||
this.addFeature(PluginResponse);
|
this.addFeature(PluginResponse);
|
||||||
this.addFeature(PluginOmniTrigger);
|
this.addFeature(PluginOmniTrigger);
|
||||||
|
this.addFeature(PluginTriggerInstruction);
|
||||||
}
|
}
|
||||||
|
|
||||||
getLogger(workflowId: ID): Logger {
|
getLogger(workflowId: ID): Logger {
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
import { JOB_STATUS } from '../../constants';
|
||||||
|
import Instruction from '../../instructions';
|
||||||
|
|
||||||
|
export class TriggerInstruction extends Instruction {
|
||||||
|
async run(node, input, processor) {
|
||||||
|
const workflowKey = node.config.workflowKey;
|
||||||
|
const wfRepo = this.workflow.db.getRepository('workflows');
|
||||||
|
const wf = await wfRepo.findOne({ filter: { key: workflowKey, enabled: true } });
|
||||||
|
const p = await this.workflow.trigger(wf, { data: 'not-support' });
|
||||||
|
if (!p) {
|
||||||
|
return {
|
||||||
|
status: JOB_STATUS.FAILED,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
const { lastSavedJob } = processor;
|
||||||
|
return {
|
||||||
|
status: JOB_STATUS.RESOLVED,
|
||||||
|
result: lastSavedJob.result,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
import { Plugin } from '@tachybase/server';
|
||||||
|
|
||||||
|
import { PluginWorkflow } from '../..';
|
||||||
|
import { TriggerInstruction } from './TriggerInstruction';
|
||||||
|
|
||||||
|
export class PluginTriggerInstruction extends Plugin {
|
||||||
|
async load() {
|
||||||
|
// get workflow plugin instance
|
||||||
|
const workflowPlugin = this.app.getPlugin<PluginWorkflow>(PluginWorkflow);
|
||||||
|
|
||||||
|
// register instruction
|
||||||
|
workflowPlugin.registerInstruction('trigger-instruction', TriggerInstruction);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user