Initial commit

This commit is contained in:
2025-08-22 21:09:48 +02:00
commit 2d84f535f4
68 changed files with 34807 additions and 0 deletions

View File

@@ -0,0 +1,122 @@
/**
* Example: Manual Trigger Workflow
*
* This example shows how to create a workflow that can be triggered
* manually from the PayloadCMS admin interface using a custom button.
*/
import type { Payload } from 'payload'
/**
* Create a workflow with manual trigger
*/
export async function createManualTriggerWorkflow(payload: Payload) {
const workflow = await payload.create({
collection: 'workflows',
data: {
name: 'Manual Data Processing',
description: 'A workflow that can be triggered manually from the admin UI',
triggers: [
{
type: 'manual-trigger' // This enables the trigger button in the admin
}
],
steps: [
{
name: 'fetch-data',
type: 'http-request-step',
input: {
url: 'https://api.example.com/data',
method: 'GET'
}
},
{
name: 'process-data',
type: 'create-document',
input: {
collection: 'auditLog',
data: {
message: 'Manual workflow executed',
triggeredAt: '$.trigger.data.timestamp'
}
},
dependencies: ['fetch-data'] // This step depends on fetch-data
}
]
}
})
console.log('Created workflow:', workflow.id)
return workflow
}
/**
* Trigger a workflow programmatically using the custom trigger
*/
export async function triggerWorkflowProgrammatically(payload: Payload) {
// Import the trigger functions from the plugin
const { triggerCustomWorkflow, triggerWorkflowById } = await import('@xtr-dev/payload-automation')
// Option 1: Trigger all workflows with a specific trigger slug
const results = await triggerCustomWorkflow(payload, {
slug: 'manual-trigger',
data: {
source: 'api',
timestamp: new Date().toISOString(),
user: 'system'
}
})
console.log('Triggered workflows:', results)
// Option 2: Trigger a specific workflow by ID
const workflowId = 'your-workflow-id'
const result = await triggerWorkflowById(
payload,
workflowId,
'manual-trigger',
{
source: 'api',
timestamp: new Date().toISOString()
}
)
console.log('Triggered workflow:', result)
}
/**
* Example usage in your application
*/
export async function setupManualTriggerExample(payload: Payload) {
// Create the workflow
const workflow = await createManualTriggerWorkflow(payload)
// The workflow is now available in the admin UI with a trigger button
console.log('Workflow created! You can now:')
console.log('1. Go to the admin UI and navigate to the Workflows collection')
console.log('2. Open the workflow:', workflow.name)
console.log('3. Click the "Trigger Workflow" button to execute it manually')
// You can also trigger it programmatically
await triggerWorkflowProgrammatically(payload)
}
/**
* Notes:
*
* 1. The manual trigger button appears automatically in the workflow admin UI
* when a workflow has a trigger with type 'manual-trigger'
*
* 2. You can have multiple triggers on the same workflow, including manual triggers
*
* 3. The trigger passes data to the workflow execution context, accessible via:
* - $.trigger.data - The custom data passed when triggering
* - $.trigger.type - The trigger type ('manual-trigger')
* - $.trigger.triggeredAt - Timestamp of when the trigger was activated
*
* 4. Manual triggers are useful for:
* - Administrative tasks
* - Data migration workflows
* - Testing and debugging
* - On-demand processing
*/