Your TaskProcessingWorkflow is working well. It validates tasks, assigns them, and sends notifications. But now you're scaling the team. The notification team has their own service with a dedicated deployment pipeline. The ML team wants to run inference activities on GPU-equipped nodes. The security team requires sensitive operations to run in isolated environments with different access controls.
Suddenly, your single-app workflow needs to orchestrate activities across multiple services. You could duplicate code, but that creates maintenance nightmares. You could use pub/sub, but you'd lose the durable orchestration guarantees. What you need is workflow coordination that spans service boundaries while maintaining the same fault-tolerance you've built.
Consider a task management system with specialized services:
Multi-app workflows let you maintain orchestration logic in one place while distributing execution across your architecture.
The key to multi-app workflows is the app_id parameter. When calling an activity, you specify which Dapr application should execute it.
Your orchestrator workflow can call these activities using app_id:
For more complex scenarios, you can invoke entire workflows on remote services:
Multi-app workflows have three non-negotiable requirements:
Your dapr-deployment skill should now include multi-app workflow patterns. Test it:
Prompt 2: Debug Multi-App Workflow Failures
Prompt 3: Scale Multi-App Workflows
Safety Note: Multi-app workflows create architectural coupling. If participating services use different SDK versions, you may encounter serialization incompatibilities. Always test the full coordination chain in a staging environment before upgrading versions.