public void StartWorkflow() { System.DateTime startTime = DateTime.Now; String originalQueryString = ((!String.IsNullOrWhiteSpace(UrlOriginal)) ? ((UrlOriginal.Split('?').Length > 0) ? UrlOriginal.Split('?')[1] : String.Empty) : String.Empty); // CREATE WORKFLOW START REQUEST Mercury.Server.Application.WorkflowStartRequest workflowStartRequest = new Server.Application.WorkflowStartRequest(); workflowStartRequest.Arguments = new System.Collections.Generic.Dictionary <String, Object> (); workflowStartRequest.WorkflowId = WorkflowId; workflowStartRequest.WorkflowInstanceId = WorkflowInstanceId; workflowStartRequest.WorkflowName = WorkflowName; // LOAD ARGUMENTS FROM ORIGINAL QUERY STRING for (Int32 currentIndex = 0; currentIndex < originalQueryString.Split('&').Length; currentIndex++) { String parameter = originalQueryString.Split('&')[currentIndex]; String parameterName = ((parameter.Contains("=")) ? parameter.Split('=')[0] : String.Empty); String parameterValue = ((parameter.Contains("=")) ? parameter.Split('=')[1] : String.Empty); if (!String.IsNullOrWhiteSpace(parameterName)) { workflowStartRequest.Arguments.Add(parameterName, parameterValue); } } // CALL WORKFLOW START ON MERCURY SERVER workflowResponse = MercuryApplication.WorkflowStart(workflowStartRequest); System.Diagnostics.Debug.WriteLine("WorkflowStart: " + DateTime.Now.Subtract(startTime).TotalMilliseconds.ToString()); WorkflowInstanceId = workflowResponse.WorkflowInstanceId; // ASSIGN NEW WORKFLOW INSTANCE ID FOR FUTURE REFERENCE (CONTINUE AND RESUME) startTime = DateTime.Now; HandleWorkflowResponse(); actionResultType = Models.ActionResultType.Control; System.Diagnostics.Debug.WriteLine("WorkflowStart_HandleResponse: " + DateTime.Now.Subtract(startTime).TotalMilliseconds.ToString()); return; }
public void ContinueWorkflow(System.Collections.Specialized.NameValueCollection form) { System.DateTime startTime = DateTime.Now; Mercury.Server.Application.WorkflowUserInteractionResponseBase userInteractionResponse = null; // COMING BACK IN FROM A POSTBACK (AJAX REQUEST) // USE THE SELECTED WORKFLOW CONTROL TO RESTORE STATE AND VALIDATE System.Diagnostics.Debug.WriteLine("Workflow Control - Continue Workflow: " + workflowControl); // AT THIS POINT, THE WORKFLOW CONTROL HAS BEEN REBUILT AND UPDATED FROM THE CLIENT if (workflowControl.Contains("ContactEntity")) { userInteractionResponse = HandleUserInteraction_ContactEntity(form); } // IF USER INTERACTION RESPONSE AVAILABLE, CONTINUE WORKFLOW, OR REBUILD EXISTING PAGE if (userInteractionResponse != null) { WorkflowControl = String.Empty; workflowResponse = MercuryApplication.WorkflowContinue(WorkflowName, WorkflowInstanceId, userInteractionResponse); HandleWorkflowResponse(); actionResultType = Models.ActionResultType.Control; } else { actionResultType = Models.ActionResultType.View; } System.Diagnostics.Debug.WriteLine("WorkflowContinue_HandleResponse: " + DateTime.Now.Subtract(startTime).TotalMilliseconds.ToString()); return; }