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); }
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); }