How to test greeting workflow in Synapse?
I am new to serverless workflow, I want to test it's example in synapse. Here is my test example workflow.
{
"id": "greeting",
"name": "Greeting Workflow",
"description": "Greet Someone",
"version": "1.0.5",
"specVersion": "0.8",
"functions": [
{
"name": "greetingFunction",
"operation": "https://gist.githubusercontent.com/mumubin/7d6ede1791ddd6fb705576187f91c930/raw/5357026c05ddb641de52b27d5e922856be1243e3/greeting.yaml#randomGreeting",
"type": "rest"
}
],
"start": "Greet",
"states": [
{
"name": "Greet",
"type": "operation",
"actions": [
{
"actionDataFilter": {
"results": "${ {greeting: .greeting} }"
},
"functionRef": {
"refName": "greetingFunction",
"arguments": {
"name": "${ .person.name }"
}
}
}
],
"end": true
}
]
}
here is my input data
{
"person": {
"name": "John"
}
}
But I got the error output
{
"code": "NullReference",
"message": "Failed to find an action that matches the metadata specified by the activity with id '71ca09e5-9968-4190-936c-41a938aba16a'"
}
This is the log
Input/Output
Activities
Logs
C[05:53:20] info: Synapse.Worker.Services.WorkflowRuntimeContext[0]
h Initializing the runtime context for workflow instance with id 'greeting-egi9dh3iusbnzeohsijw'...
/[05:53:20] info: Microsoft.Hosting.Lifetime[0]
6 Application started. Press Ctrl+C to shut down.
/[05:53:20] info: Microsoft.Hosting.Lifetime[0]
& Hosting environment: Production
/[05:53:20] info: Microsoft.Hosting.Lifetime[0]
Content root path: /app
C[05:53:21] info: Synapse.Worker.Services.WorkflowRuntimeContext[0]
D Retrieving definition of workflow with id 'greeting:1.0.5'...
C[05:53:21] info: Synapse.Worker.Services.WorkflowRuntimeContext[0]
" Runtime context initialized
<[05:53:21] info: Synapse.Worker.Services.WorkflowRuntime[0]
+ Starting the workflow's execution...
O[05:53:21] info: Synapse.Worker.Services.Processors.OperationStateProcessor[0]
V Initializing activity '6659cc95-bc5a-450a-905c-7ec3a005a6b5' (type: 'State')...
M[05:53:21] fail: Synapse.Worker.Services.WorkflowActivityProcessorFactory[0]
An error occured while creating a new processor for the activity with id '71ca09e5-9968-4190-936c-41a938aba16a': System.NullReferenceException: Failed to find an action that matches the metadata specified by the activity with id '71ca09e5-9968-4190-936c-41a938aba16a'
� at Synapse.Worker.Services.WorkflowActivityProcessorFactory.CreateActionActivityProcessor(StateDefinition state, V1WorkflowActivity activity) in /src/src/apps/Synapse.Worker/Services/WorkflowActivityProcessorFactory.cs:line 125
� at Synapse.Worker.Services.WorkflowActivityProcessorFactory.Create(V1WorkflowActivity activity) in /src/src/apps/Synapse.Worker/Services/WorkflowActivityProcessorFactory.cs:line 72
O[05:53:21] warning: Synapse.Worker.Services.Processors.OperationStateProcessor[0]
An error occured while executing the activity '6659cc95-bc5a-450a-905c-7ec3a005a6b5' (type: 'State')/r/nDetails:/r/nSystem.NullReferenceException: Failed to find an action that matches the metadata specified by the activity with id '71ca09e5-9968-4190-936c-41a938aba16a'
� at Synapse.Worker.Services.WorkflowActivityProcessorFactory.CreateActionActivityProcessor(StateDefinition state, V1WorkflowActivity activity) in /src/src/apps/Synapse.Worker/Services/WorkflowActivityProcessorFactory.cs:line 125
� at Synapse.Worker.Services.WorkflowActivityProcessorFactory.Create(V1WorkflowActivity activity) in /src/src/apps/Synapse.Worker/Services/WorkflowActivityProcessorFactory.cs:line 72
� at Synapse.Worker.Services.WorkflowActivityProcessorFactory.Synapse.Worker.Services.IWorkflowActivityProcessorFactory.Create(V1WorkflowActivity activity) in /src/src/apps/Synapse.Worker/Services/WorkflowActivityProcessorFactory.cs:line 320
� at Synapse.Worker.Services.WorkflowActivityProcessor.CreateProcessorFor(V1WorkflowActivity activity) in /src/src/apps/Synapse.Worker/Services/WorkflowActivityProcessor.cs:line 194
� at Synapse.Worker.Services.Processors.OperationStateProcessor.CreateProcessorFor(V1WorkflowActivity activity) in /src/src/apps/Synapse.Worker/Services/Processors/OperationStateProcessor.cs:line 46
� at Synapse.Worker.Services.Processors.OperationStateProcessor.StartAsync() in /src/src/apps/Synapse.Worker/Services/Processors/OperationStateProcessor.cs:line 103
� at Synapse.Worker.Services.Processors.OperationStateProcessor.InitializeAsync(CancellationToken cancellationToken) in /src/src/apps/Synapse.Worker/Services/Processors/OperationStateProcessor.cs:line 60
� at Synapse.Worker.Services.WorkflowActivityProcessor.<>c__DisplayClass30_0.<b__0>d.MoveNext() in /src/src/apps/Synapse.Worker/Services/WorkflowActivityProcessor.cs:line 103
<[05:53:22] warning: Synapse.Worker.Services.WorkflowRuntime[0]
� An error occured while executing the workflow instance: System.NullReferenceException: Failed to find an action that matches the metadata specified by the activity with id '71ca09e5-9968-4190-936c-41a938aba16a'
� at Synapse.Worker.Services.WorkflowActivityProcessorFactory.CreateActionActivityProcessor(StateDefinition state, V1WorkflowActivity activity) in /src/src/apps/Synapse.Worker/Services/WorkflowActivityProcessorFactory.cs:line 125
� at Synapse.Worker.Services.WorkflowActivityProcessorFactory.Create(V1WorkflowActivity activity) in /src/src/apps/Synapse.Worker/Services/WorkflowActivityProcessorFactory.cs:line 72
� at Synapse.Worker.Services.WorkflowActivityProcessorFactory.Synapse.Worker.Services.IWorkflowActivityProcessorFactory.Create(V1WorkflowActivity activity) in /src/src/apps/Synapse.Worker/Services/WorkflowActivityProcessorFactory.cs:line 320
� at Synapse.Worker.Services.WorkflowActivityProcessor.CreateProcessorFor(V1WorkflowActivity activity) in /src/src/apps/Synapse.Worker/Services/WorkflowActivityProcessor.cs:line 194
� at Synapse.Worker.Services.Processors.OperationStateProcessor.CreateProcessorFor(V1WorkflowActivity activity) in /src/src/apps/Synapse.Worker/Services/Processors/OperationStateProcessor.cs:line 46
� at Synapse.Worker.Services.Processors.OperationStateProcessor.StartAsync() in /src/src/apps/Synapse.Worker/Services/Processors/OperationStateProcessor.cs:line 103
� at Synapse.Worker.Services.Processors.OperationStateProcessor.InitializeAsync(CancellationToken cancellationToken) in /src/src/apps/Synapse.Worker/Services/Processors/OperationStateProcessor.cs:line 60
� at Synapse.Worker.Services.WorkflowActivityProcessor.<>c__DisplayClass30_0.<b__0>d.MoveNext() in /src/src/apps/Synapse.Worker/Services/WorkflowActivityProcessor.cs:line 103
/[05:53:22] info: Microsoft.Hosting.Lifetime[0]
& Application is shutting down...
@mumubin Can you try naming your action and see if that works?
We are working in SW to make name or id required for every single component, and I took the initiative to already enforce it on Synapse
Thanks @cdavernas . After adding action name, it works. However, the YAML file I tested came from https://github.com/serverlessworkflow/specification/blob/main/examples/README.md#workflow-definition-1. It seems a bug in the examples. Let me submit a pr to fix it.
Fixed SW yaml.
{
"id": "greeting",
"name": "Greeting Workflow",
"description": "Greet Someone",
"version": "1.0.8",
"specVersion": "0.8",
"functions": [
{
"name": "greetingFunction",
"operation": "https://gist.githubusercontent.com/mumubin/7d6ede1791ddd6fb705576187f91c930/raw/5357026c05ddb641de52b27d5e922856be1243e3/greeting.yaml#randomGreeting",
"type": "rest"
}
],
"start": "Greet",
"states": [
{
"name": "Greet",
"type": "operation",
"actions": [
{
"name": "GreetingAction",
"actionDataFilter": {
"results": "${ {greeting: .greeting} }"
},
"functionRef": {
"refName": "greetingFunction",
"arguments": {
"name": "${ .person.name }"
}
}
}
],
"end": true
}
]
}