Ejemplo n.º 1
0
        public async Task SendResumeAsync(string sessionId, int lastSeq, RequestOptions options = null)
        {
            var msg = new ResumeParams()
            {
                Token     = _authToken,
                SessionId = sessionId,
                Sequence  = lastSeq
            };

            await SendGatewayAsync(GatewayOpCode.Resume, msg, options : options).ConfigureAwait(false);
        }
Ejemplo n.º 2
0
        private void ExecuteCommand(Guid id, string commandName, DocumentModel document)
        {
            var currentUser = CurrentUserSettings.GetCurrentUser(HttpContext).ToString();

            if (commandName.Equals("SetState", StringComparison.InvariantCultureIgnoreCase))
            {
                if (string.IsNullOrEmpty(document.StateNameToSet))
                {
                    return;
                }

                var setStateParams = new SetStateParams(id, document.StateNameToSet)
                {
                    IdentityId             = currentUser,
                    ImpersonatedIdentityId = currentUser
                }.AddTemporaryParameter("Comment", document.Comment);

                WorkflowInit.Runtime.SetState(setStateParams);

                return;
            }
            else if (commandName.Equals("Resume", StringComparison.InvariantCultureIgnoreCase))
            {
                if (string.IsNullOrEmpty(document.StateNameToSet))
                {
                    return;
                }
                var pi = WorkflowInit.Runtime.GetProcessInstanceAndFillProcessParameters(id);

                var activity = pi.ProcessScheme.Activities.FirstOrDefault(a => a.IsForSetState && a.State.Equals(document.StateNameToSet, StringComparison.OrdinalIgnoreCase));

                if (activity == null)
                {
                    return;
                }
                var resumeParams = new ResumeParams(id, activity.Name)
                {
                    IdentityId             = currentUser,
                    ImpersonatedIdentityId = currentUser
                }.AddTemporaryParameter("Comment", document.Comment);

                WorkflowInit.Runtime.Resume(resumeParams);
                return;
            }

            var commands = WorkflowInit.Runtime.GetAvailableCommands(id, currentUser);

            var command =
                commands.FirstOrDefault(
                    c => c.CommandName.Equals(commandName, StringComparison.CurrentCultureIgnoreCase));

            if (command == null)
            {
                return;
            }

            if (command.Parameters.Count(p => p.ParameterName == "Comment") == 1)
            {
                command.Parameters.Single(p => p.ParameterName == "Comment").Value = document.Comment ?? string.Empty;
            }

            WorkflowInit.Runtime.ExecuteCommand(command, currentUser, currentUser);
        }