public static EModeGestionErreurEtapeWorkflow OnError( CResultAErreur result, EModeGestionErreurEtapeWorkflow modeGestion) { CModeGestionErreurEtapeWorkflow mode = new CModeGestionErreurEtapeWorkflow(modeGestion); if (mode.IsSingleChoice()) { return(modeGestion); } CFormErreurOnWorkflowStep form = new CFormErreurOnWorkflowStep(); form.m_lblMessage.Text = result.Erreur.ToString(); form.m_btnDoNothing.Visible = (modeGestion & EModeGestionErreurEtapeWorkflow.DoNothing) != 0; form.m_btnCancel.Visible = (modeGestion & EModeGestionErreurEtapeWorkflow.CancelStep) != 0; form.m_btnError.Visible = (modeGestion & EModeGestionErreurEtapeWorkflow.SetError) != 0; form.m_btnTerminer.Visible = (modeGestion & EModeGestionErreurEtapeWorkflow.EndStep) != 0; form.ShowDialog(); form.Dispose(); return(form.m_modeGestion); }
//----------------------------------------------------------------------------- public CResultAErreur AfficheEtape(CEtapeWorkflow etape, bool bDansNouvelOnglet) { CResultAErreur result = CResultAErreur.True; if (etape == null || etape.TypeEtape == null) { return(result); } //Vérifie que l'étape est bien affectée à l'utilisateur string[] strCodes = CUtilSession.GetCodesAffectationsEtapeConcernant(etape.ContexteDonnee.ContexteDonnee); CAffectationsEtapeWorkflow affs = etape.Affectations; bool bIsAffectée = false; foreach (string strCode in strCodes) { if (affs.Contains(strCode)) { bIsAffectée = true; break; } } if (bIsAffectée) { CBlocWorkflow bloc = etape.TypeEtape.Bloc; if (bloc is CBlocWorkflowFormulaire) { result = AfficheEtapeFormulaire(etape, bDansNouvelOnglet); } else if (bloc is CBlocWorkflowProcess) { using (CContexteDonnee ctxt = new CContexteDonnee(etape.ContexteDonnee.IdSession, true, false)) { etape = etape.GetObjetInContexte(ctxt) as CEtapeWorkflow; result = ((CBlocWorkflowProcess)bloc).StartProcess(etape); } } if (!result) { EModeGestionErreurEtapeWorkflow mode = CFormErreurOnWorkflowStep.OnError(result, bloc.ModeGestionErreur); if (mode != EModeGestionErreurEtapeWorkflow.DoNothing) { using (CContexteDonnee ctx = new CContexteDonnee(etape.ContexteDonnee.IdSession, true, false)) { CEtapeWorkflow etapeInContexte = etape.GetObjetInContexte(ctx) as CEtapeWorkflow; switch (mode) { case EModeGestionErreurEtapeWorkflow.CancelStep: etapeInContexte.CancelStep(); break; case EModeGestionErreurEtapeWorkflow.EndStep: result = etapeInContexte.EndEtapeNoSave(); if (!result) { result.EmpileErreur(I.T("Can not end step|20766")); CFormAlerte.Afficher(result.Erreur); return(result); } break; case EModeGestionErreurEtapeWorkflow.SetError: etapeInContexte.EtatCode = (int)EEtatEtapeWorkflow.Erreur; etapeInContexte.LastError = result.Erreur.ToString(); etapeInContexte.DateFin = null; break; } result = ctx.SaveAll(true); } } } } else { CFormAlerte.Afficher(I.T("You are not allowed to display this step|20620")); } return(result); }