feat: introduce trigger functionality (#27644)
Signed-off-by: lyzno1 <yuanyouhuilyz@gmail.com> Co-authored-by: Stream <Stream_2@qq.com> Co-authored-by: lyzno1 <92089059+lyzno1@users.noreply.github.com> Co-authored-by: zhsama <torvalds@linux.do> Co-authored-by: Harry <xh001x@hotmail.com> Co-authored-by: lyzno1 <yuanyouhuilyz@gmail.com> Co-authored-by: yessenia <yessenia.contact@gmail.com> Co-authored-by: hjlarry <hjlarry@163.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: WTW0313 <twwu@dify.ai> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -12,6 +12,7 @@ import {
|
||||
useNodesSyncDraft,
|
||||
useWorkflowRun,
|
||||
} from '.'
|
||||
import { TriggerType } from '@/app/components/workflow/header/test-run-menu'
|
||||
|
||||
export const useWorkflowStartRun = () => {
|
||||
const store = useStoreApi()
|
||||
@@ -40,9 +41,11 @@ export const useWorkflowStartRun = () => {
|
||||
setShowDebugAndPreviewPanel,
|
||||
setShowInputsPanel,
|
||||
setShowEnvPanel,
|
||||
setShowGlobalVariablePanel,
|
||||
} = workflowStore.getState()
|
||||
|
||||
setShowEnvPanel(false)
|
||||
setShowGlobalVariablePanel(false)
|
||||
|
||||
if (showDebugAndPreviewPanel) {
|
||||
handleCancelDebugAndPreviewPanel()
|
||||
@@ -61,6 +64,203 @@ export const useWorkflowStartRun = () => {
|
||||
}
|
||||
}, [store, workflowStore, featuresStore, handleCancelDebugAndPreviewPanel, handleRun, doSyncWorkflowDraft])
|
||||
|
||||
const handleWorkflowTriggerScheduleRunInWorkflow = useCallback(async (nodeId?: string) => {
|
||||
if (!nodeId)
|
||||
return
|
||||
|
||||
const {
|
||||
workflowRunningData,
|
||||
showDebugAndPreviewPanel,
|
||||
setShowDebugAndPreviewPanel,
|
||||
setShowInputsPanel,
|
||||
setShowEnvPanel,
|
||||
setShowGlobalVariablePanel,
|
||||
setListeningTriggerType,
|
||||
setListeningTriggerNodeId,
|
||||
setListeningTriggerNodeIds,
|
||||
setListeningTriggerIsAll,
|
||||
} = workflowStore.getState()
|
||||
|
||||
if (workflowRunningData?.result.status === WorkflowRunningStatus.Running)
|
||||
return
|
||||
|
||||
const { getNodes } = store.getState()
|
||||
const nodes = getNodes()
|
||||
const scheduleNode = nodes.find(node => node.id === nodeId && node.data.type === BlockEnum.TriggerSchedule)
|
||||
|
||||
if (!scheduleNode) {
|
||||
console.warn('handleWorkflowTriggerScheduleRunInWorkflow: schedule node not found', nodeId)
|
||||
return
|
||||
}
|
||||
|
||||
setShowEnvPanel(false)
|
||||
setShowGlobalVariablePanel(false)
|
||||
|
||||
if (showDebugAndPreviewPanel) {
|
||||
handleCancelDebugAndPreviewPanel()
|
||||
return
|
||||
}
|
||||
|
||||
setListeningTriggerType(BlockEnum.TriggerSchedule)
|
||||
setListeningTriggerNodeId(nodeId)
|
||||
setListeningTriggerNodeIds([nodeId])
|
||||
setListeningTriggerIsAll(false)
|
||||
|
||||
await doSyncWorkflowDraft()
|
||||
handleRun(
|
||||
{},
|
||||
undefined,
|
||||
{
|
||||
mode: TriggerType.Schedule,
|
||||
scheduleNodeId: nodeId,
|
||||
},
|
||||
)
|
||||
setShowDebugAndPreviewPanel(true)
|
||||
setShowInputsPanel(false)
|
||||
}, [store, workflowStore, handleCancelDebugAndPreviewPanel, handleRun, doSyncWorkflowDraft])
|
||||
|
||||
const handleWorkflowTriggerWebhookRunInWorkflow = useCallback(async ({ nodeId }: { nodeId: string }) => {
|
||||
if (!nodeId)
|
||||
return
|
||||
|
||||
const {
|
||||
workflowRunningData,
|
||||
showDebugAndPreviewPanel,
|
||||
setShowDebugAndPreviewPanel,
|
||||
setShowInputsPanel,
|
||||
setShowEnvPanel,
|
||||
setShowGlobalVariablePanel,
|
||||
setListeningTriggerType,
|
||||
setListeningTriggerNodeId,
|
||||
setListeningTriggerNodeIds,
|
||||
setListeningTriggerIsAll,
|
||||
} = workflowStore.getState()
|
||||
|
||||
if (workflowRunningData?.result.status === WorkflowRunningStatus.Running)
|
||||
return
|
||||
|
||||
const { getNodes } = store.getState()
|
||||
const nodes = getNodes()
|
||||
const webhookNode = nodes.find(node => node.id === nodeId && node.data.type === BlockEnum.TriggerWebhook)
|
||||
|
||||
if (!webhookNode) {
|
||||
console.warn('handleWorkflowTriggerWebhookRunInWorkflow: webhook node not found', nodeId)
|
||||
return
|
||||
}
|
||||
|
||||
setShowEnvPanel(false)
|
||||
setShowGlobalVariablePanel(false)
|
||||
|
||||
if (!showDebugAndPreviewPanel)
|
||||
setShowDebugAndPreviewPanel(true)
|
||||
|
||||
setShowInputsPanel(false)
|
||||
setListeningTriggerType(BlockEnum.TriggerWebhook)
|
||||
setListeningTriggerNodeId(nodeId)
|
||||
setListeningTriggerNodeIds([nodeId])
|
||||
setListeningTriggerIsAll(false)
|
||||
|
||||
await doSyncWorkflowDraft()
|
||||
handleRun(
|
||||
{ node_id: nodeId },
|
||||
undefined,
|
||||
{
|
||||
mode: TriggerType.Webhook,
|
||||
webhookNodeId: nodeId,
|
||||
},
|
||||
)
|
||||
}, [store, workflowStore, handleRun, doSyncWorkflowDraft])
|
||||
|
||||
const handleWorkflowTriggerPluginRunInWorkflow = useCallback(async (nodeId?: string) => {
|
||||
if (!nodeId)
|
||||
return
|
||||
const {
|
||||
workflowRunningData,
|
||||
showDebugAndPreviewPanel,
|
||||
setShowDebugAndPreviewPanel,
|
||||
setShowInputsPanel,
|
||||
setShowEnvPanel,
|
||||
setShowGlobalVariablePanel,
|
||||
setListeningTriggerType,
|
||||
setListeningTriggerNodeId,
|
||||
setListeningTriggerNodeIds,
|
||||
setListeningTriggerIsAll,
|
||||
} = workflowStore.getState()
|
||||
|
||||
if (workflowRunningData?.result.status === WorkflowRunningStatus.Running)
|
||||
return
|
||||
|
||||
const { getNodes } = store.getState()
|
||||
const nodes = getNodes()
|
||||
const pluginNode = nodes.find(node => node.id === nodeId && node.data.type === BlockEnum.TriggerPlugin)
|
||||
|
||||
if (!pluginNode) {
|
||||
console.warn('handleWorkflowTriggerPluginRunInWorkflow: plugin node not found', nodeId)
|
||||
return
|
||||
}
|
||||
|
||||
setShowEnvPanel(false)
|
||||
setShowGlobalVariablePanel(false)
|
||||
|
||||
if (!showDebugAndPreviewPanel)
|
||||
setShowDebugAndPreviewPanel(true)
|
||||
|
||||
setShowInputsPanel(false)
|
||||
setListeningTriggerType(BlockEnum.TriggerPlugin)
|
||||
setListeningTriggerNodeId(nodeId)
|
||||
setListeningTriggerNodeIds([nodeId])
|
||||
setListeningTriggerIsAll(false)
|
||||
|
||||
await doSyncWorkflowDraft()
|
||||
handleRun(
|
||||
{ node_id: nodeId },
|
||||
undefined,
|
||||
{
|
||||
mode: TriggerType.Plugin,
|
||||
pluginNodeId: nodeId,
|
||||
},
|
||||
)
|
||||
}, [store, workflowStore, handleRun, doSyncWorkflowDraft])
|
||||
|
||||
const handleWorkflowRunAllTriggersInWorkflow = useCallback(async (nodeIds: string[]) => {
|
||||
if (!nodeIds.length)
|
||||
return
|
||||
const {
|
||||
workflowRunningData,
|
||||
showDebugAndPreviewPanel,
|
||||
setShowDebugAndPreviewPanel,
|
||||
setShowInputsPanel,
|
||||
setShowEnvPanel,
|
||||
setShowGlobalVariablePanel,
|
||||
setListeningTriggerIsAll,
|
||||
setListeningTriggerNodeIds,
|
||||
setListeningTriggerNodeId,
|
||||
} = workflowStore.getState()
|
||||
|
||||
if (workflowRunningData?.result.status === WorkflowRunningStatus.Running)
|
||||
return
|
||||
|
||||
setShowEnvPanel(false)
|
||||
setShowGlobalVariablePanel(false)
|
||||
setShowInputsPanel(false)
|
||||
setListeningTriggerIsAll(true)
|
||||
setListeningTriggerNodeIds(nodeIds)
|
||||
setListeningTriggerNodeId(null)
|
||||
|
||||
if (!showDebugAndPreviewPanel)
|
||||
setShowDebugAndPreviewPanel(true)
|
||||
|
||||
await doSyncWorkflowDraft()
|
||||
handleRun(
|
||||
{ node_ids: nodeIds },
|
||||
undefined,
|
||||
{
|
||||
mode: TriggerType.All,
|
||||
allNodeIds: nodeIds,
|
||||
},
|
||||
)
|
||||
}, [store, workflowStore, handleRun, doSyncWorkflowDraft])
|
||||
|
||||
const handleWorkflowStartRunInChatflow = useCallback(async () => {
|
||||
const {
|
||||
showDebugAndPreviewPanel,
|
||||
@@ -68,10 +268,12 @@ export const useWorkflowStartRun = () => {
|
||||
setHistoryWorkflowData,
|
||||
setShowEnvPanel,
|
||||
setShowChatVariablePanel,
|
||||
setShowGlobalVariablePanel,
|
||||
} = workflowStore.getState()
|
||||
|
||||
setShowEnvPanel(false)
|
||||
setShowChatVariablePanel(false)
|
||||
setShowGlobalVariablePanel(false)
|
||||
|
||||
if (showDebugAndPreviewPanel)
|
||||
handleCancelDebugAndPreviewPanel()
|
||||
@@ -92,5 +294,9 @@ export const useWorkflowStartRun = () => {
|
||||
handleStartWorkflowRun,
|
||||
handleWorkflowStartRunInWorkflow,
|
||||
handleWorkflowStartRunInChatflow,
|
||||
handleWorkflowTriggerScheduleRunInWorkflow,
|
||||
handleWorkflowTriggerWebhookRunInWorkflow,
|
||||
handleWorkflowTriggerPluginRunInWorkflow,
|
||||
handleWorkflowRunAllTriggersInWorkflow,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user