@@ -18,14 +18,16 @@ public class ActivityController : IActivityController
18
18
private readonly IDistributedLockProvider _lockProvider ;
19
19
private readonly IDateTimeProvider _dateTimeProvider ;
20
20
private readonly IQueueProvider _queueProvider ;
21
+ private readonly IWorkflowController _workflowController ;
21
22
22
- public ActivityController ( ISubscriptionRepository subscriptionRepository , IWorkflowRepository persistenceStore , IDateTimeProvider dateTimeProvider , IDistributedLockProvider lockProvider , IQueueProvider queueProvider )
23
+ public ActivityController ( ISubscriptionRepository subscriptionRepository , IWorkflowRepository persistenceStore , IWorkflowController workflowController , IDateTimeProvider dateTimeProvider , IDistributedLockProvider lockProvider , IQueueProvider queueProvider )
23
24
{
24
25
_persistenceStore = persistenceStore ;
25
26
_subscriptionRepository = subscriptionRepository ;
26
27
_dateTimeProvider = dateTimeProvider ;
27
28
_lockProvider = lockProvider ;
28
29
_queueProvider = queueProvider ;
30
+ _workflowController = workflowController ;
29
31
}
30
32
31
33
public async Task < PendingActivity > GetPendingActivity ( string activityName , string workerId , TimeSpan ? timeout = null )
@@ -93,7 +95,7 @@ public async Task SubmitActivityFailure(string token, object result)
93
95
} ) ;
94
96
}
95
97
96
- private async Task SubmitActivityResult ( string token , object result )
98
+ private async Task SubmitActivityResult ( string token , ActivityResult result )
97
99
{
98
100
var tokenObj = Token . Decode ( token ) ;
99
101
var sub = await _subscriptionRepository . GetSubscription ( tokenObj . SubscriptionId ) ;
@@ -102,28 +104,32 @@ private async Task SubmitActivityResult(string token, object result)
102
104
103
105
if ( sub . ExternalToken != token )
104
106
throw new NotFoundException ( "Token mismatch" ) ;
105
-
106
- if ( ! await _lockProvider . AcquireLock ( sub . WorkflowId , CancellationToken . None ) )
107
- throw new WorkflowLockedException ( ) ;
108
-
109
- try
110
- {
111
- var workflow = await _persistenceStore . GetWorkflowInstance ( sub . WorkflowId ) ;
112
- var pointer = workflow . ExecutionPointers . Single ( p => p . Id == sub . ExecutionPointerId ) ;
113
-
114
- pointer . EventData = result ;
115
- pointer . EventPublished = true ;
116
- pointer . Active = true ;
117
-
118
- workflow . NextExecution = 0 ;
119
- await _persistenceStore . PersistWorkflow ( workflow ) ;
120
- await _subscriptionRepository . TerminateSubscription ( sub . Id ) ;
121
- }
122
- finally
123
- {
124
- await _lockProvider . ReleaseLock ( sub . WorkflowId ) ;
125
- await _queueProvider . QueueWork ( sub . WorkflowId , QueueType . Workflow ) ;
126
- }
107
+
108
+ result . SubscriptionId = sub . Id ;
109
+
110
+ await _workflowController . PublishEvent ( sub . EventName , sub . EventKey , result ) ;
111
+
112
+ //if (!await _lockProvider.AcquireLock(sub.WorkflowId, CancellationToken.None))
113
+ // throw new WorkflowLockedException();
114
+
115
+ //try
116
+ //{
117
+ // var workflow = await _persistenceStore.GetWorkflowInstance(sub.WorkflowId);
118
+ // var pointer = workflow.ExecutionPointers.Single(p => p.Id == sub.ExecutionPointerId);
119
+
120
+ // pointer.EventData = result;
121
+ // pointer.EventPublished = true;
122
+ // pointer.Active = true;
123
+
124
+ // workflow.NextExecution = 0;
125
+ // await _persistenceStore.PersistWorkflow(workflow);
126
+ // await _subscriptionRepository.TerminateSubscription(sub.Id);
127
+ //}
128
+ //finally
129
+ //{
130
+ // await _lockProvider.ReleaseLock(sub.WorkflowId);
131
+ // await _queueProvider.QueueWork(sub.WorkflowId, QueueType.Workflow);
132
+ //}
127
133
}
128
134
129
135
class Token
0 commit comments