static void Main() { // Start the engine. using (WorkflowRuntime workflowRuntime = new WorkflowRuntime()) { workflowRuntime.StartRuntime(); // Load the workflow type. Type type = typeof(SuspendAndTerminateWorkflow); workflowRuntime.WorkflowCompleted += OnWorkflowCompletion; workflowRuntime.WorkflowSuspended += OnWorkflowSuspend; workflowRuntime.WorkflowResumed += OnWorkflowResume; workflowRuntime.WorkflowTerminated += OnWorkflowTerminate; WorkflowInstance workflowInstance = workflowRuntime.CreateWorkflow(type); workflowInstance.Start(); waitHandle.WaitOne(); if (workflowSuspended) { Console.WriteLine("\r\nResuming Workflow Instance"); workflowInstance.Resume(); waitHandle.WaitOne(); } workflowRuntime.StopRuntime(); } }
protected void btnLUStop_Click(object sender, EventArgs e) { try { WorkflowRuntime workflowRuntime = (WorkflowRuntime)Application["WokflowRuntime"]; WorkflowInstance instance = workflowRuntime.GetWorkflow(new Guid(Application["LeaveUpLoadWF"].ToString())); instance.Resume(); objLeaveUploadService = (LeaveUploadService)workflowRuntime.GetService(typeof(LeaveUploadService)); objLeaveUploadService.RaiseStopEvent(instance.InstanceId); Application["LeaveUpLoadWF"] = ""; btnLUStart.Enabled = true; btnLUStop.Enabled = false; btnLURefreshLeaveCredit.Enabled = false; } catch (V2Exceptions ex) { throw; } catch (System.Exception ex) { Application["LeaveUpLoadWF"] = ""; FileLog objFileLog = FileLog.GetLogger(); objFileLog.WriteLine(LogType.Error, ex.Message, "LeaveApplicationForm.aspx.cs", "StartWorkflow", ex.StackTrace); throw new V2Exceptions(ex.ToString(), ex); } }
/// <summary> /// Resumes asynchronous execution of /// the current workflow. /// </summary> public void BeginResumeWorkflow() { InitializeRuntime(); if (!_workflowRuntime.IsStarted) { _workflowRuntime.StartRuntime(); } // execute workflow _instance.Resume(); _status = WorkflowStatus.Executing; }
/// <summary> /// Resumes the specified context. /// </summary> /// <param name="context">The context.</param> protected virtual void Resume(BusinessContext context) { // Load WorkflowInstanceEntity WorkflowInstanceEntity wf = (WorkflowInstanceEntity)BusinessManager.Load(WorkflowInstanceEntity.ClassName, context.GetTargetPrimaryKeyId().Value); // Check Wf State if (wf.State != (int)BusinessProcessState.Suspended) { throw new InvalidOperationException(); } WorkflowInstance instance = GlobalWorkflowRuntime.WorkflowRuntime.GetWorkflow((Guid)wf.PrimaryKeyId.Value); instance.Resume(); GlobalWorkflowRuntime.RunWorkflow(instance); //wf.State = (int)BusinessProcessState.Active; //BusinessManager.Update(wf); }
void container1() { // Load the workflow type. Type type = typeof(SuspendAndTerminateWorkflow); workflowInstance = workflowRuntime.CreateWorkflow(type); //<snippet170> workflowRuntime.WorkflowSuspended += OnWorkflowSuspend; //</snippet170> //<snippet171> workflowRuntime.WorkflowResumed += OnWorkflowResume; //</snippet171> //<snippet172> if (workflowSuspended) { Console.WriteLine("\r\nResuming Workflow Instance"); workflowInstance.Resume(); waitHandle.WaitOne(); } //</snippet172> }
protected void btnOnDemandAttendencCheck_Click(object sender, EventArgs e) { try { WorkflowRuntime workflowRuntime = (WorkflowRuntime)Application["WokflowRuntime"]; WorkflowInstance instance = workflowRuntime.GetWorkflow(new Guid(Application["AttendanceWF"].ToString())); instance.Resume(); objAttendanceCheckerService = (AttendanceCheckerService)workflowRuntime.GetService(typeof(AttendanceCheckerService)); objAttendanceCheckerService.RaiseOnDemandAttendanceCheckEvent(instance.InstanceId); GetWorkFlowStatus(); } catch (V2Exceptions ex) { throw; } catch (System.Exception ex) { Application["AttendanceWF"] = ""; FileLog objFileLog = FileLog.GetLogger(); objFileLog.WriteLine(LogType.Error, ex.Message, "LeaveApplicationForm.aspx.cs", "StartWorkflow", ex.StackTrace); throw new V2Exceptions(ex.ToString(), ex); } }
public void ResumeShouldResume() { // Arrange using (var testdb = new SqlWorkflowInstanceStoreTest()) { var view = new TestWorkflowView(testdb.CreateInstanceStore()); var model = new WorkflowModel(view); var wi = new WorkflowInstance(model); wi.New(); // Act wi.Resume(StateTrigger.T1); // Assert Assert.AreEqual(StateMachineExample.State2, wi.StateTracker.CurrentState); } }
protected void grvSISOApproval_RowUpdating(object sender, GridViewUpdateEventArgs e) { try { Label lblDate = (Label)grvSISOApproval.Rows[e.RowIndex].FindControl("lblDate"); string strDate = lblDate.Text.ToString(); //for workflow... Label lblWorkflowID = ((Label)grvSISOApproval.Rows[e.RowIndex].FindControl("lblSignInSignOutWFID")); // To write code if "" then dont fill value in model for WorkflowID if (lblWorkflowID.Text != "") { objSignInSignOutModel.WorkflowID = new Guid(lblWorkflowID.Text); } //Status DropDownList ddlStatus1 = (DropDownList)grvSISOApproval.Rows[e.RowIndex].FindControl("ddlStatusdEdit"); objSignInSignOutModel.StatusID = Convert.ToInt32(ddlStatus1.SelectedValue); //InTime DropDownList ddlSignInTimeH1 = (DropDownList)grvSISOApproval.Rows[e.RowIndex].FindControl("ddlInTimeHours"); DropDownList ddlSignInTimeM1 = (DropDownList)grvSISOApproval.Rows[e.RowIndex].FindControl("ddlInTimeMins"); string strInTime = ddlSignInTimeH1.SelectedValue.ToString() + ":" + ddlSignInTimeM1.SelectedValue.ToString() + ":00"; objSignInSignOutModel.SignInTime = Convert.ToDateTime(strInTime + " " + strDate.ToString()); //Out Time Label lblOutDate = (Label)grvSISOApproval.Rows[e.RowIndex].FindControl("lblOutDate"); string strOutDate = lblOutDate.Text.ToString(); Label lblOutTimeH1 = (Label)grvSISOApproval.Rows[e.RowIndex].FindControl("lblSignOutTime"); if (lblOutTimeH1.Text.ToString() != "") { DropDownList ddlOutTimeHours = (DropDownList)grvSISOApproval.Rows[e.RowIndex].FindControl("ddlOutTimeHours"); DropDownList ddlOutTimeMinutes = (DropDownList)grvSISOApproval.Rows[e.RowIndex].FindControl("ddlOutTimeMins"); string strOutTime = ddlOutTimeHours.SelectedValue.ToString() + ":" + ddlOutTimeMinutes.SelectedValue.ToString() + ":00"; objSignInSignOutModel.SignOutTime = Convert.ToDateTime(strOutTime + " " + strOutDate.ToString()); } else { objSignInSignOutModel.SignOutTime = Convert.ToDateTime(null); } //Approver's comments TextBox txtApproversComments = (TextBox)grvSISOApproval.Rows[e.RowIndex].FindControl("txtApproversComments"); objSignInSignOutModel.ApproverComments = txtApproversComments.Text.ToString(); //Id Label lblID = (Label)grvSISOApproval.Rows[e.RowIndex].FindControl("lblID"); objSignInSignOutModel.SignInSignOutID = Convert.ToInt32(lblID.Text); if ((objSignInSignOutModel.SignOutTime < objSignInSignOutModel.SignInTime) && (lblOutTimeH1.Text.ToString() != "")) { lblErrorMess.Text = "Sign Out Time cannot be smaller than the Sign In Time"; } else { lblErrorMess.Text = ""; UpdateStatus(objSignInSignOutModel); // StartWorkflow if (objSignInSignOutModel.StatusID == 2) { lblSuccess.Text = "Record updated successfully."; UpdateEmployeeLeaveAndComp(); try { WorkflowRuntime wr = (WorkflowRuntime)Application["WokflowRuntime"]; if (objSignInSignOutModel.WorkflowID != null || objSignInSignOutModel.WorkflowID.ToString() != "") { WorkflowInstance wi = wr.GetWorkflow(objSignInSignOutModel.WorkflowID); wi.Resume(); SignInSignOutService objSignInSignOutService = (SignInSignOutService)wr.GetService(typeof(SignInSignOutService)); objSignInSignOutService.RaiseApproveEvent(wi.InstanceId); } } catch (V2Exceptions) { try { Response.Redirect("SignInSignOutApproval.aspx"); } catch (System.Threading.ThreadAbortException ex) { throw; } } catch (System.Exception) { try { Response.Redirect("SignInSignOutApproval.aspx"); } catch (System.Threading.ThreadAbortException ex) { throw; } } } if (objSignInSignOutModel.StatusID == 3) { lblSuccess.Text = "Record updated successfully."; try { WorkflowRuntime wr = (WorkflowRuntime)Application["WokflowRuntime"]; if (objSignInSignOutModel.WorkflowID != null || objSignInSignOutModel.WorkflowID.ToString() != "") { WorkflowInstance wi = wr.GetWorkflow(objSignInSignOutModel.WorkflowID); wi.Resume(); SignInSignOutService objSignInSignOutService = (SignInSignOutService)wr.GetService(typeof(SignInSignOutService)); objSignInSignOutService.RaiseRejectEvent(wi.InstanceId); } } catch (V2Exceptions) { try { Response.Redirect("SignInSignOutApproval.aspx"); } catch (System.Threading.ThreadAbortException ex) { throw; } } catch (System.Exception) { try { Response.Redirect("SignInSignOutApproval.aspx"); } catch (System.Threading.ThreadAbortException ex) { throw; } } } // End WorkFlow grvSISOApproval.EditIndex = -1; Response.Redirect("SignInSignOutApproval.aspx"); } } catch (System.Threading.ThreadAbortException ex) { throw; } catch (V2Exceptions ex) { throw; } catch (System.Exception ex) { FileLog objFileLog = FileLog.GetLogger(); objFileLog.WriteLine(LogType.Error, ex.Message, "SignInSignOutApproval.aspx.cs", "grvSISOApproval_RowUpdating", ex.StackTrace); throw new V2Exceptions(ex.ToString(), ex); } }
protected void gvCompensationApprovals_RowUpdating(object sender, GridViewUpdateEventArgs e) { try { GridViewRow row = gvCompensationApprovals.Rows[e.RowIndex]; Label lblTMmember = row.FindControl("lblEditUserID") as Label; objCompensationModel.UserID = Convert.ToInt32(lblTMmember.Text.ToString()); Label lblEditCompensationID = row.FindControl("lblEditCompensationID") as Label; objCompensationModel.CompensationID = Convert.ToInt32(lblEditCompensationID.Text); Label lblCompensationWFID = row.FindControl("lblCompensationWFID") as Label; if (lblCompensationWFID.Text != "") { objCompensationModel.WorkFlowID = new Guid(lblCompensationWFID.Text); } Label lblgrvEditUserName = row.FindControl("lblgrvEditUserName") as Label; TextBox txtEditAppliedFor = row.FindControl("txtgrvAppliedFor") as TextBox; DropDownList ddlStatusID = row.FindControl("ddlgrvStatusName") as DropDownList; objCompensationModel.StatusID = Convert.ToInt32(ddlStatusID.SelectedValue); if (ddlStatusID.Visible == false) { WfApprovedLocked = true; } Label lblEditgrvReason = row.FindControl("lblEditgrvReason") as Label; objCompensationModel.Resason = lblEditgrvReason.Text.Trim(); TextBox ApproverComments = row.FindControl("txtgrvApproverComments") as TextBox; objCompensationModel.ApproverComments = Convert.ToString(ApproverComments.Text.ToString()); objCompensationModel.RequestedOn = Convert.ToDateTime(DateTime.Now.ToShortDateString()); objCompensationModel.CompensationTo = Convert.ToDateTime(txtEditAppliedFor.Text.Trim()); objLeaveDeatilsModel.UserID = Convert.ToInt32(lblTMmember.Text.ToString()); //Getting All the Holidays Details //dsHolidaysList = objHolidayBOL.bindData(); objHolidayModel.UserID = objCompensationModel.UserID; objHolidayModel.StartDate = Convert.ToDateTime(txtEditAppliedFor.Text.Trim()); objHolidayModel.EndDate = Convert.ToDateTime(txtEditAppliedFor.Text.Trim()); dsHolidaysList = objHolidayBOL.bindHolidaysForLeaveApprovals(objHolidayModel); //For Getting ConfigDate from Database dsConfigItem = objCompensationBOL.GetCompensationDetails(objCompensationModel); ConfigDate = Convert.ToDateTime(dsConfigItem.Tables[1].Rows[0]["ConfigItemValue"].ToString()); FromDate = Convert.ToDateTime(txtEditAppliedFor.Text.Trim()); Boolean isCompLeaveApproved = false; rowsAffected = objCompensationBOL.CheckSignInForCompensation(objCompensationModel); objRosterPlanningModel.UserId = Convert.ToInt32(lblTMmember.Text.ToString()); dsEmployeeRole = ObjRosterPlanningBOL.GetEmployeeRole(objRosterPlanningModel); foreach (DataRow rowRole in dsEmployeeRole.Tables[0].Rows) { if (rowRole["RoleName"].ToString().Equals("Shift")) { isShiftEmployee = true; break; } } if (rowsAffected > 0) { if (!isShiftEmployee) { // This is checking the total list of holiday in current year provided by V2. for (int k = 0; k < dsHolidaysList.Tables[0].Rows.Count; k++) { if (FromDate.ToString() == dsHolidaysList.Tables[0].Rows[k]["HolidayDate"].ToString()) { isCompLeaveApproved = true; break; } } // This is to check whether the working day is a WeekDay. if (FromDate.DayOfWeek.ToString() == "Saturday" || FromDate.DayOfWeek.ToString() == "Sunday") { isCompLeaveApproved = true; } } else { objRosterPlanningModel.FromDate = Convert.ToDateTime(FromDate); objRosterPlanningModel.ToDate = Convert.ToDateTime(FromDate); dsEmployeeShiftDetail = ObjRosterPlanningBOL.GetEmployeeShiftDetail(objRosterPlanningModel); for (int k = 0; k < dsEmployeeShiftDetail.Tables[1].Rows.Count; k++) { if (FromDate.ToString() == dsEmployeeShiftDetail.Tables[1].Rows[k]["HolidayDate"].ToString()) { isCompLeaveApproved = true; break; } } for (int i = 0; i < dsEmployeeShiftDetail.Tables[0].Rows.Count; i++) { if (Convert.ToDateTime(FromDate.ToString()) == Convert.ToDateTime(dsEmployeeShiftDetail.Tables[0].Rows[i]["WeekOff1"].ToString()) || (Convert.ToDateTime(FromDate.ToString()) == Convert.ToDateTime(dsEmployeeShiftDetail.Tables[0].Rows[i]["WeekOff2"].ToString()))) { isCompLeaveApproved = true; break; } } } if (isCompLeaveApproved) { // Compensatory Leave Approved Successfully. objCompensationModel.AppliedFor = Convert.ToDateTime(FromDate.ToString()); UpdateCompenstionDetails(); gvCompensationApprovals.EditIndex = -1; lblError.Visible = true; lblSuccess.Visible = true; lblSuccess.Text = "Compensatory Leave details are updated successfully"; lblError.Text = ""; if (ddlStatusID.SelectedValue == Convert.ToString("2")) { //Here delete the all records of related CompensationID objLeaveTransDetailsModel.UserID = Convert.ToInt32(lblTMmember.Text.ToString()); objLeaveTransDetailsModel.CompensationID = Convert.ToInt32(lblEditCompensationID.Text); //Here Adding Leave records to LeaveTransaction table objLeaveTransDetailsModel.UserID = Convert.ToInt32(lblTMmember.Text.ToString()); objLeaveTransDetailsModel.CompensationID = Convert.ToInt32(lblEditCompensationID.Text); objLeaveTransDetailsModel.TransactionDate = Convert.ToDateTime(DateTime.Now.ToShortDateString()); objLeaveTransDetailsModel.Description = "Compensatory Leave:" + lblEditgrvReason.Text.ToString(); objLeaveTransDetailsModel.Quantity = Convert.ToDecimal(1); objLeaveTransDetailsModel.LeaveType = Convert.ToBoolean(0); AddCompensationTransactionDetails(); UpdateEmployeeLeaveAndComp(); } if (ddlStatusID.SelectedValue == Convert.ToString("3")) { //Here delete the all records of related CompensationID objLeaveTransDetailsModel.UserID = Convert.ToInt32(lblTMmember.Text.ToString()); objLeaveTransDetailsModel.CompensationID = Convert.ToInt32(lblEditCompensationID.Text); DeleteCompensationTransactionDetails(); UpdateEmployeeLeaveAndComp(); //Here Adding Leave records to Compensation table objCompensationModel.AppliedFor = Convert.ToDateTime(txtEditAppliedFor.Text.Trim()); objCompensationModel.StatusID = Convert.ToInt32(3); UpdateCompenstionDetails(); lblSuccess.Visible = true; lblSuccess.Text = "Compensatory Leave Details are Rejected"; } } } else { // Compensatory Leave Approved Unsuccessfully. lblError.Visible = true; lblError.Text = "The entry for the day you are approving Compensatory Leave for is in Pending Status.Kindly approve that"; lblSuccess.Text = ""; return; } if (WfApprovedLocked == false) { if (objCompensationModel.StatusID == 2) { try { WorkflowRuntime wr = (WorkflowRuntime)Application["WokflowRuntime"]; if (objCompensationModel.WorkFlowID != null || objCompensationModel.WorkFlowID.ToString() != "") { WorkflowInstance wi = wr.GetWorkflow(objCompensationModel.WorkFlowID); wi.Resume(); CompensationService objCompensationService = (CompensationService)wr.GetService(typeof(CompensationService)); objCompensationService.RaiseApproveEvent(wi.InstanceId); } } catch (V2Exceptions) { try { Response.Redirect("CompensationApproval.aspx"); } catch (System.Threading.ThreadAbortException ex) { throw; } } catch (System.Exception) { try { Response.Redirect("CompensationApproval.aspx"); } catch (System.Threading.ThreadAbortException ex) { throw; } } } if (objCompensationModel.StatusID == 3) { try { WorkflowRuntime wr = (WorkflowRuntime)Application["WokflowRuntime"]; if (objCompensationModel.WorkFlowID != null || objCompensationModel.WorkFlowID.ToString() != "") { WorkflowInstance wi = wr.GetWorkflow(objCompensationModel.WorkFlowID); wi.Resume(); CompensationService objCompensationService = (CompensationService)wr.GetService(typeof(CompensationService)); objCompensationService.RaiseRejectEvent(wi.InstanceId); } } catch (V2Exceptions) { try { Response.Redirect("CompensationApproval.aspx"); } catch (System.Threading.ThreadAbortException ex) { throw; } } catch (System.Exception) { try { Response.Redirect("CompensationApproval.aspx"); } catch (System.Threading.ThreadAbortException ex) { throw; } } } if (objCompensationModel.StatusID == 4) { try { WorkflowRuntime wr = (WorkflowRuntime)Application["WokflowRuntime"]; if (objCompensationModel.WorkFlowID != null || objCompensationModel.WorkFlowID.ToString() != "") { WorkflowInstance wi = wr.GetWorkflow(objCompensationModel.WorkFlowID); wi.Resume(); CompensationService objCompensationService = (CompensationService)wr.GetService(typeof(CompensationService)); objCompensationService.RaiseCancelEvent(wi.InstanceId); } } catch (V2Exceptions) { try { Response.Redirect("CompensationApproval.aspx"); } catch (System.Threading.ThreadAbortException ex) { throw; } } catch (System.Exception) { try { Response.Redirect("CompensationApproval.aspx"); } catch (System.Threading.ThreadAbortException ex) { throw; } } } } else { if (objCompensationModel.StatusID == 2) { //Sending a Mail to Employee after Updating compensatory Leaves if (WfApprovedLocked == true) { objLeaveDeatilsModel.UserID = Convert.ToInt32(lblTMmember.Text.ToString()); SendingMailToReportingPerson(); } } } Response.Redirect("CompensationApproval.aspx"); } catch (System.Threading.ThreadAbortException ex) { throw; } catch (V2Exceptions ex) { throw; } catch (System.Exception ex) { if (ex.Message.CompareTo("Already Compensation applied for this date.") != 0) { lblError.Visible = false; FileLog objFileLog = FileLog.GetLogger(); objFileLog.WriteLine(LogType.Error, ex.Message, "CompensationApproval.aspx.cs", "btnSubmit", ex.StackTrace); throw new V2Exceptions(ex.ToString(), ex); } else { lblError.Visible = true; lblError.Text = "User has already applied for compensatory leave for this date"; lblSuccess.Text = ""; } } }