Exemple #1
0
        //-----------------------------------------------------------------------------------------------------
        private void m_menuStartStep_Click(object sender, EventArgs e)
        {
            CEtapeWorkflow etape = EtapeSelectionnee;
            CWorkflow      wkf   = m_stackWorkflows.Peek();

            using (CContexteDonnee ctx = new CContexteDonnee(wkf.ContexteDonnee.IdSession, true, false))
            {
                wkf = wkf.GetObjetInContexte(ctx) as CWorkflow;
                CTypeEtapeWorkflow typeEtape = TypeEtapeSelectionnee;
                if (etape != null)
                {
                    typeEtape = etape.TypeEtape;
                }

                CResultAErreurType <CEtapeWorkflow> resEtape = wkf.CreateOrGetEtapeInCurrentContexte(typeEtape);
                if (!resEtape)
                {
                    CFormAlerte.Afficher(resEtape.Erreur);
                    return;
                }
                etape = resEtape.DataType;



                etape = etape.GetObjetInContexte(ctx) as CEtapeWorkflow;
                etape.InternalSetInfosDemarrageInCurrentContext();
                CResultAErreur result = ctx.SaveAll(true);
                if (!result)
                {
                    CFormAlerte.Afficher(result.Erreur);
                }
                Refresh();
            }
        }
        //-------------------------------------------------------------
        private void EndEtape()
        {
            if (m_formulaire != null && m_formulaire.ModeEdition)
            {
                CFormAlerte.Afficher(I.T("Validate your modification before|20572"));
                return;
            }
            CResultAErreur result = CResultAErreur.True;

            using (CContexteDonnee ctx = new CContexteDonnee(m_etapeEnCours.ContexteDonnee.IdSession, true, false))
            {
                if (m_objetSecondaireEnCoursEdition != null)
                {
                    CObjetDonnee objetSecondaire = m_objetSecondaireEnCoursEdition.GetObjetInContexte(ctx);
                    result = m_panelFormulalire.AffecteValeursToElement(objetSecondaire);
                }
                if (result)
                {
                    m_etapeEnCours = m_etapeEnCours.GetObjetInContexte(ctx) as CEtapeWorkflow;
                    if (m_etapeEnCours.EtatCode == (int)EEtatEtapeWorkflow.Démarrée)
                    {
                        result = m_etapeEnCours.EndEtapeAndSaveIfOk();
                    }
                }
            }
            if (!result)
            {
                CFormAlerte.Afficher(result.Erreur);
                return;
            }
            else
            {
                Init();
            }
        }
Exemple #3
0
 //------------------------------------------------------------------------
 private void NoteErreurSurEtape(CEtapeWorkflow etape, string strMessage)
 {
     using (CContexteDonnee ctx = new CContexteDonnee(etape.ContexteDonnee.IdSession, true, false))
     {
         etape           = etape.GetObjetInContexte(ctx) as CEtapeWorkflow;
         etape.EtatCode  = (int)EEtatEtapeWorkflow.Erreur;
         etape.LastError = strMessage;
         etape.DateFin   = null;
         ctx.SaveAll(false);
     }
 }
Exemple #4
0
        //-----------------------------------------------------------------------------------------------------
        private void m_menuAnnulerEtape_Click(object sender, EventArgs e)
        {
            CEtapeWorkflow etape = EtapeSelectionnee;

            using (CContexteDonnee ctx = new CContexteDonnee(etape.ContexteDonnee.IdSession, true, false))
            {
                etape = etape.GetObjetInContexte(ctx) as CEtapeWorkflow;
                etape.CancelStep();
                CResultAErreur result = ctx.SaveAll(true);
                if (!result)
                {
                    CFormAlerte.Afficher(result.Erreur);
                }
                Refresh();
            }
        }
        //-------------------------------------------------------------------
        public CResultAErreur RunEvent(
            bool bAutoManagerHandlerTermine,
            CObjetDonneeAIdNumerique obj,
            CInfoDeclencheurProcess infoDeclencheur,
            IIndicateurProgression indicateur)
        {
            CResultAErreur          result  = CResultAErreur.True;
            CProcessEnExecutionInDb process = ProcessSource;

            if (ProcessSource != null)
            {
                result = process.RepriseProcess(IdActionDeProcessToExecute, indicateur);
            }
            else if (EtapeWorkflowATerminer != null)
            {
                using (CContexteDonnee contexte = new CContexteDonnee(ContexteDonnee.IdSession, true, false))
                {
                    CEtapeWorkflow etape = EtapeWorkflowATerminer.GetObjetInContexte(contexte) as CEtapeWorkflow;
                    if (etape != null)
                    {
                        result = etape.EndEtapeAndSaveIfOk();
                    }
                    if (!result)
                    {
                        //L'étape ne s'est pas terminée ? tant pis alors, c'est pas grave, elle se terminera par ailleurs
                        result = CResultAErreur.True;
                        return(result);
                    }
                }
            }
            //gestion du handler faite ailleurs
            if (!bAutoManagerHandlerTermine)
            {
                if (!result)
                {
                    result.EmpileErreur(I.T("@1 handler error|271", Libelle));
                }
                return(result);
            }
            EndHandler(result);
            return(result);
        }
Exemple #6
0
        //-----------------------------------------------------------------------------------------------------
        private void m_menuEndStep_Click(object sender, EventArgs e)
        {
            CEtapeWorkflow etape = EtapeSelectionnee;

            if (etape != null)
            {
                using (CContexteDonnee ctx = new CContexteDonnee(etape.ContexteDonnee.IdSession, true, false))
                {
                    etape = etape.GetObjetInContexte(ctx) as CEtapeWorkflow;
                    CResultAErreur result = etape.EndEtapeNoSave();
                    if (result)
                    {
                        result = ctx.SaveAll(true);
                    }
                    if (!result)
                    {
                        CFormAlerte.Afficher(result.Erreur);
                        return;
                    }
                }
            }
        }
        //-----------------------------------------------------------------------------
        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);
        }