//------------------------------------------------------------------------------------
        public void GetInfosPopup(IDonneeNotification donnee, ref bool bShouldDisplay, ref string strLibelle, ref Image image)
        {
            bShouldDisplay = false;
            CDonneeNotificationWorkflow dw = donnee as CDonneeNotificationWorkflow;

            if (dw == null)
            {
                return;
            }
            string[] strCodesInteressants = CUtilSession.GetCodesAffectationsEtapeConcernant(CSc2iWin32DataClient.ContexteCourant);
            bool     bPourMoi             = false;

            foreach (string strCode in strCodesInteressants)
            {
                if (dw.CodesAffectations.Contains("~" + strCode + "~"))
                {
                    bPourMoi = true;
                    break;
                }
            }
            if (bPourMoi)
            {
                strLibelle     = dw.Libelle;
                image          = Resources._1346738948_task;
                bShouldDisplay = true;
            }
        }
        void m_recepteurWorkflow_OnReceiveNotification(IDonneeNotification donnee)
        {
            CDonneeNotificationWorkflow dw = donnee as CDonneeNotificationWorkflow;

            if (dw == null)
            {
                return;
            }
            string[] strCodesInteressants = CUtilSession.GetCodesAffectationsEtapeConcernant(CSc2iWin32DataClient.ContexteCourant);
            bool     bPourMoi             = false;

            foreach (string strCode in strCodesInteressants)
            {
                if (dw.CodesAffectations.Contains("~" + strCode + "~"))
                {
                    bPourMoi = true;
                    break;
                }
            }
            if (bPourMoi)
            {
                CSessionClient     session     = CSessionClient.GetSessionForIdSession(dw.IdSessionEnvoyeur);
                CSousSessionClient sousSession = session as CSousSessionClient;
                if (sousSession != null)
                {
                    session = sousSession.RootSession;
                }

                if (session != null &&
                    session.IdSession == CTimosApp.SessionClient.IdSession &&
                    dw.ExecutionAutomatique
                    )
                {
                    m_nIdEtapeToLaunch = dw.IdEtapeSource;
                }
                m_nNbClignotementsWorkflowsRestant += c_nNbClignotementsWorkflow;

                CDonneesActeurUtilisateur user = CUtilSession.GetUserForSession(CSc2iWin32DataClient.ContexteCourant);
                if (user != null)
                {
                    CListeObjetsDonnees lstPourActeur = user.Acteur.GetEtapeWorkflowsEnCours();
                    m_nNbEtapesEnCours = lstPourActeur.Count;
                    if (m_nNbEtapesEnCours > 0)
                    {
                        m_lblNbToDo.Text    = m_nNbEtapesEnCours.ToString();
                        m_lblNbToDo.Visible = true;
                    }
                    else
                    {
                        m_lblNbToDo.Text    = "0";
                        m_lblNbToDo.Visible = false;
                    }
                }
            }
        }
        //-----------------------------------------------------------------------------
        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);
        }