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 override CResultAErreur MySerialize(C2iSerializer serializer) { int nVersion = GetNumVersion(); CResultAErreur result = serializer.TraiteVersion(ref nVersion); if (!result) { return(result); } serializer.TraiteBool(ref m_bIsFormulaireStandard); result = serializer.TraiteObject <C2iExpression>(ref m_formuleElementEditePrincipal); if (!result) { return(result); } if (nVersion >= 1) { result = serializer.TraiteListe <CFormuleNommee>(m_listeFormulesDeConditionDeFin); // m_nIdFormulairePrincipal est obsolète, l'Id du Formulaire proncipal ne doit plus être utilisé //int nIdFormulaire = m_nIdFormulairePrincipal != null ? m_nIdFormulairePrincipal.Value : -1; int nIdFormulaire = -1; serializer.TraiteInt(ref nIdFormulaire); //if (serializer.Mode == ModeSerialisation.Lecture) // m_nIdFormulairePrincipal = nIdFormulaire >= 0 ? (int?)nIdFormulaire : null; } if (nVersion >= 2) { if (nVersion < 6) { string strInstructionsTemp = ""; serializer.TraiteString(ref strInstructionsTemp); if (strInstructionsTemp != "") { m_formuleInstructions = new C2iExpressionConstante(strInstructionsTemp); } } result = serializer.TraiteObject <CListeRestrictionsUtilisateurSurType>(ref m_listeRestrictions); if (!result) { return(result); } } if (nVersion >= 3) { serializer.TraiteBool(ref m_bMasquerSurChangementDeFormulaire); result = serializer.TraiteObject <C2iExpression>(ref m_formuleElementEditeSecondaire); if (nVersion <= 13) { // TESTDBKEYOK serializer.ReadDbKeyFromOldId(ref m_dbKeyFormulaireSecondaire, typeof(CFormulaire)); } else { serializer.TraiteDbKey(ref m_dbKeyFormulaireSecondaire); } } else { m_bMasquerSurChangementDeFormulaire = true; } if (nVersion >= 4) { serializer.TraiteBool(ref m_bSecondaireEnEdition); } if (nVersion >= 5) { int nNombreFormulaires = m_listeDbKeysFormulaires.Count; serializer.TraiteInt(ref nNombreFormulaires); switch (serializer.Mode) { case ModeSerialisation.Lecture: m_listeDbKeysFormulaires.Clear(); for (int i = 0; i < nNombreFormulaires; i++) { CDbKey nKeyTemp = null; if (nVersion < 14) { // TESTDBKEYOK serializer.ReadDbKeyFromOldId(ref nKeyTemp, typeof(CFormulaire)); } else { serializer.TraiteDbKey(ref nKeyTemp); } m_listeDbKeysFormulaires.Add(nKeyTemp); } break; case ModeSerialisation.Ecriture: foreach (CDbKey nKey in m_listeDbKeysFormulaires) { // TESTDBKEYOK CDbKey nKeyTemp = nKey; serializer.TraiteDbKey(ref nKeyTemp); } break; } } if (nVersion >= 6) { result = serializer.TraiteObject <C2iExpression>(ref m_formuleInstructions); if (!result) { return(result); } } if (nVersion >= 7) { serializer.TraiteBool(ref m_bProposerSortieSiToutesConditionsRemplies); } if (nVersion >= 8) { serializer.TraiteBool(ref m_bLockElementEditeEnFinDEtape); } if (nVersion >= 9) { serializer.TraiteBool(ref m_bMasquerApresValidation); } if (nVersion >= 10) { int nVal = (int)m_modeGestionErreurs; serializer.TraiteInt(ref nVal); m_modeGestionErreurs = (EModeGestionErreurEtapeWorkflow)nVal; } else { m_modeGestionErreurs = EModeGestionErreurEtapeWorkflow.DoNothing; } if (nVersion >= 11) { serializer.TraiteBool(ref m_bNePasExecuterSiToutesConditionsRemplies); } else { m_bNePasExecuterSiToutesConditionsRemplies = false; } if (nVersion >= 12) { serializer.TraiteObject <CParametreDeclencheurEvenement>(ref m_parametreDeclencheurStop); } else { m_parametreDeclencheurStop = null; } if (nVersion >= 13) { serializer.TraiteString(ref m_strRestrictionExceptionContext); } return(result); }
//----------------------------------------------------- public void SetModeGestionErreur(EModeGestionErreurEtapeWorkflow mode) { m_modeGestionErreurs = mode; }
//------------------------------------------------------------------- private void m_btnError_Click(object sender, EventArgs e) { m_modeGestion = EModeGestionErreurEtapeWorkflow.SetError; Close(); }
//------------------------------------------------------------------- private void m_btnTerminer_Click(object sender, EventArgs e) { m_modeGestion = EModeGestionErreurEtapeWorkflow.EndStep; Close(); }
//------------------------------------------------------------------- private void m_btnCancel_Click(object sender, EventArgs e) { m_modeGestion = EModeGestionErreurEtapeWorkflow.CancelStep; Close(); }
//------------------------------------------------------------------- private void m_btnDoNothing_Click(object sender, EventArgs e) { m_modeGestion = EModeGestionErreurEtapeWorkflow.DoNothing; Close(); }
//----------------------------------------------------------------------------- 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); }
//------------------------------------------------------- private CResultAErreur MajChamps() { CResultAErreur result = CResultAErreur.True; C2iExpression formule = GetFormuleValideElementEdite(m_txtFormuleElementEdite); if (formule == null) { result.EmpileErreur(I.T("Edited elements formula is not valid|20052")); } else { m_blocFormulaire.FormuleElementEditePrincipal = formule; } formule = GetFormuleValideElementEdite(m_txtFormuleElementSecondaire); m_blocFormulaire.FormuleElementEditeSecondaire = formule; m_blocFormulaire.FormuleInstructions = m_txtFormuleInstructions.Formule; if (m_rbtnFormulaireSpecifique.Checked) { if (m_listeDbKeysFormulaires.Count == 0) { result.EmpileErreur(I.T("Select the form to use|20053")); } else { m_blocFormulaire.ListeDbKeysFormulaires = m_listeDbKeysFormulaires.ToArray(); m_blocFormulaire.IsStandardForm = false; } } else { m_blocFormulaire.IsStandardForm = true; } CFormulaire formulaire = m_txtSelectFormulaireSecondaire.ElementSelectionne as CFormulaire; if (m_blocFormulaire.FormuleElementEditeSecondaire != null && formulaire == null) { result.EmpileErreur(I.T("Select the secondary form to use|20086")); } m_blocFormulaire.DbKeyFormulaireSecondaire = formulaire != null ? formulaire.DbKey : null; m_blocFormulaire.MasquerSurChangementDeFormulaire = m_chkHideOnChangeForm.Checked; m_blocFormulaire.LockerElementEditeEnFinDEtape = m_chkLockItemWhenComplete.Checked; m_blocFormulaire.HideAfterValidation = m_chkMasquerApresValidation.Checked; if (result) { m_blocFormulaire.FormulesConditionFin = m_wndListeFormules.GetFormules(); } if (result) { m_blocFormulaire.Restrictions = m_panelRestrictions.GetListeRestrictions(); } CResultAErreurType <CParametresInitialisationEtape> resParam = m_panelAffectations.MajChamps(); if (resParam) { if (m_blocFormulaire.TypeEtape != null) { m_blocFormulaire.TypeEtape.ParametresInitialisation = resParam.DataType; } } else { result.EmpileErreur(resParam.Erreur); return(result); } m_blocFormulaire.SecondaireEnEdition = m_chkSecondaireEnEdition.Checked; m_blocFormulaire.PromptForEndWhenAllConditionsAreOk = m_chkPromptToEnd.Checked; m_blocFormulaire.NePasExecuterSiToutesConditionsRemplies = m_chkPasserSiPasErreur.Checked; EModeGestionErreurEtapeWorkflow modeGestionErreur = EModeGestionErreurEtapeWorkflow.DoNothing; foreach (Control ctrl in m_panelGestionErreur.Controls) { CheckBox chk = ctrl as CheckBox; if (chk != null && chk.Checked) { EModeGestionErreurEtapeWorkflow?modeChk = chk.Tag as EModeGestionErreurEtapeWorkflow?; if (modeChk != null) { modeGestionErreur |= modeChk.Value; } } } m_blocFormulaire.SetModeGestionErreur(modeGestionErreur); if (m_chkUseStopHandler.Checked) { result = m_panelParametreDeclenchement.MAJ_Champs(); CParametreDeclencheurEvenement parametre = null; if (result) { parametre = m_panelParametreDeclenchement.ParametreDeclencheur; result = parametre.VerifieDonnees(); } if (!result) { return(result); } m_blocFormulaire.ParametreDeclencheurStop = parametre; } else { m_blocFormulaire.ParametreDeclencheurStop = null; } m_blocFormulaire.RestrictionExceptionContext = m_txtExceptionRestriction.Text.Trim(); result = m_panelChamps.MAJ_Champs(); return(result); }