61 lines
1.7 KiB
Markdown
61 lines
1.7 KiB
Markdown
# Building Conditional Workflow
|
|
|
|
Now you'll create a workflow that uses conditional branching to route content through two different processing paths.
|
|
|
|
## Creating the Conditional Workflow
|
|
|
|
Add this workflow to your file:
|
|
|
|
```typescript
|
|
export const conditionalWorkflow = createWorkflow({
|
|
id: "conditional-workflow",
|
|
description: "Content processing with conditional branching",
|
|
inputSchema: z.object({
|
|
content: z.string(),
|
|
type: z.enum(["article", "blog", "social"]).default("article"),
|
|
}),
|
|
outputSchema: z.object({
|
|
processedContent: z.string(),
|
|
processingType: z.string(),
|
|
recommendations: z.array(z.string()),
|
|
}),
|
|
})
|
|
.then(assessContentStep)
|
|
.branch([
|
|
// Branch 1: Short and simple content
|
|
[
|
|
async ({ inputData }) =>
|
|
inputData.category === "short" && inputData.complexity === "simple",
|
|
quickProcessingStep,
|
|
],
|
|
// Branch 2: Everything else
|
|
[
|
|
async ({ inputData }) =>
|
|
!(inputData.category === "short" && inputData.complexity === "simple"),
|
|
generalProcessingStep,
|
|
],
|
|
])
|
|
.commit();
|
|
```
|
|
|
|
## Understanding the Conditions
|
|
|
|
1. **Short + Simple**: Quick processing with minimal recommendations
|
|
2. **Everything Else**: General processing with more suggestions
|
|
|
|
## Multiple Conditions
|
|
|
|
You can combine conditions using logical operators:
|
|
|
|
- **`&&`**: AND - both conditions must be true
|
|
- **`||`**: OR - either condition can be true
|
|
- **`!`**: NOT - condition must be false
|
|
|
|
## Condition Evaluation
|
|
|
|
- Conditions are checked in order
|
|
- Multiple conditions can be true (steps run in parallel)
|
|
- If no conditions match, the branch is skipped
|
|
|
|
Next, you'll test this conditional workflow with different types of content!
|