示例#1
0
 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("Обновление процесса во время выполнения пока не реализовано.");
     }
 }
示例#2
0
        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);
                }
            }
        }