private void RegisterAction(Guid instanceId, Action <CompleteContext> completedHandler, IDictionary <string, object> parameters) { if (!_completeActions.Value.ContainsKey(instanceId)) { var ctx = new WfCompleteContext(); ctx.Start(instanceId, completedHandler, parameters); _completeActions.Value.Add(instanceId, ctx); } else { throw new NotImplementedException("Обновление процесса во время выполнения пока не реализовано."); } }
private void RiseCompleted(Guid instanceId, WfCompleteContext context) { // очищаем ReleaseAction(instanceId); // сообщаем context.RiseAction(); //Post обработка после вызова Action if (context.ParentInstanceId.HasValue && !string.IsNullOrEmpty(context.ShouldResumeBookmark)) { //небезопасный код. Может приводить к падению приложения. только логгируем try { var instance = _runtime.Value.GetWorkflow(context.ParentInstanceId.Value); instance.ResumeBookmark(context.ShouldResumeBookmark, context); } catch (Exception ex) { _log.Error(ex); } } }