//-------------------------------------------------------------
        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();
            }
        }
Esempio n. 2
0
 //------------------------------------------------------------
 public static void ShowDependances(CObjetDonnee objet)
 {
     using (CFormDependancesObjet frm = new CFormDependancesObjet())
     {
         using (CContexteDonnee contexte = new CContexteDonnee(objet.ContexteDonnee.IdSession, true, false))
         {
             objet = objet.GetObjetInContexte(contexte);
             frm.m_arbre.Init(objet);
             frm.ShowDialog();
         }
     }
 }
Esempio n. 3
0
        /// ////////////////////////////////////////////////////////
        public CResultAErreur SetValeurChamp(string strIdVariable, object valeur)
        {
            bool bVariableIsMine = ProcessParent == null;;

            if (!bVariableIsMine)
            {
                foreach (CVariableDynamique variable in m_listeVariables)
                {
                    if (variable.IdVariable == strIdVariable)
                    {
                        bVariableIsMine = true;
                        break;
                    }
                }
                if (!bVariableIsMine && ProcessParent != null)
                {
                    return(ProcessParent.SetValeurChamp(strIdVariable, valeur));
                }
            }
            object valeurCorrigee = valeur;

            if (valeur != null && strIdVariable == c_strIdVariableElement &&
                m_bSurTableauDeCible && !(valeur.GetType().IsArray) &&
                !typeof(IList).IsAssignableFrom(valeur.GetType()))
            {
                ArrayList lst = new ArrayList();
                lst.Add(valeur);
                valeurCorrigee = lst.ToArray();
            }
            CObjetDonnee objDonnee = valeurCorrigee as CObjetDonnee;

            if (objDonnee != null && ContexteDonnee != null)
            {
                valeurCorrigee = objDonnee.GetObjetInContexte(ContexteDonnee);
            }
            m_tableValeursChamps[strIdVariable] = valeurCorrigee;


            return(CResultAErreur.True);
        }
Esempio n. 4
0
        //------------------------------------------
        void toolStripPourcentage_OnValideSaisie(object sender, EventArgs e)
        {
            CToolStripPourcentage pct = sender as CToolStripPourcentage;
            CBesoin besoin            = pct != null?pct.Tag  as CBesoin:null;

            if (besoin != null && pct.Value != null)
            {
                if (CFormAlerte.Afficher(I.T("Change repartition for '@1' uses '@2'% of '@3' cost ?|20687",
                                             besoin.LibelleComplet,
                                             pct.Value.Value.ToString("0.##"),
                                             m_satisfaction.Libelle),
                                         EFormAlerteBoutons.OuiNon,
                                         EFormAlerteType.Question) == DialogResult.Yes)
                {
                    if (!m_bIsEnEdition)
                    {
                        using (CContexteDonnee ctx = new CContexteDonnee(m_satisfaction.ContexteDonnee.IdSession, true, false))
                        {
                            besoin = besoin.GetObjetInContexte(ctx) as CBesoin;
                            CObjetDonnee satObj = m_satisfaction as CObjetDonnee;
                            if (satObj != null)
                            {
                                satObj = satObj.GetObjetInContexte(ctx);
                                ISatisfactionBesoin satInContexte = satObj as ISatisfactionBesoin;
                                CUtilSatisfaction.SetPourcentageFor(besoin, satInContexte, pct.Value.Value);
                            }
                            CResultAErreur result = ctx.SaveAll(false);
                            if (!result)
                            {
                                CFormAlerte.Afficher(result.Erreur);
                            }
                        }
                    }
                    else
                    {
                        CUtilSatisfaction.SetPourcentageFor(besoin, m_satisfaction, pct.Value.Value);
                    }
                }
            }
        }
Esempio n. 5
0
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur MyExecute(CContexteExecutionAction contexte)
        {
            CResultAErreur result      = CResultAErreur.False;
            CProcessInDb   processInDB = new CProcessInDb(contexte.ContexteDonnee);

            if (!processInDB.ReadIfExists(m_dbKeyProcess))
            {
                result.EmpileErreur(I.T("The @1 action doesn't exist|194", m_dbKeyProcess.ToString()));
                result.EmpileErreur(I.T("Error in an action execution from an action|195"));
                return(result);
            }

            string strOldContextuel = contexte.ContexteDonnee.IdModificationContextuelle;

            CContexteDonnee contexteDonneeSousAction = contexte.ContexteDonnee;

            if (ModeAsynchrone || LancerDansUnProcessSepare)
            {
                contexteDonneeSousAction = new CContexteDonnee(contexte.IdSession, true, true);
            }

            //Si synchrone, s'execute dans le même contexte de données
            if (!ModeAsynchrone)
            {
                CProcessEnExecutionInDb processEnExec = new CProcessEnExecutionInDb(contexteDonneeSousAction);

                processEnExec.CreateNewInCurrentContexte();

                CProcess process = processInDB.Process;
                process.ContexteDonnee = contexteDonneeSousAction;

                object elementCible = contexte.ObjetCible;

                //Remplit les variables du process
                foreach (string strIdVariable in m_mapVariablesProcessToFormule.Keys)
                {
                    IVariableDynamique variable = process.GetVariable(strIdVariable);
                    //Evalue la formule
                    C2iExpression expression = (C2iExpression)m_mapVariablesProcessToFormule[strIdVariable];
                    CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(Process);
                    contexteEval.AttacheObjet(typeof(CContexteDonnee), contexte.ContexteDonnee);
                    result = expression.Eval(contexteEval);
                    if (!result)
                    {
                        result.EmpileErreur(I.T("Error during the variables assignment in sub action|197"));
                        result.EmpileErreur(I.T("@1 variable error|196", variable.Nom));
                        return(result);
                    }
                    CObjetDonnee objDonnee = result.Data as CObjetDonnee;
                    if (objDonnee != null)
                    {
                        result.Data = objDonnee.GetObjetInContexte(contexteDonneeSousAction);
                    }
                    process.SetValeurChamp(variable.IdVariable, result.Data);
                    if (variable.IdVariable == CProcess.c_strIdVariableElement && result.Data is CObjetDonneeAIdNumerique)
                    {
                        elementCible = result.Data;
                    }
                }

                if (elementCible is CObjetDonneeAIdNumerique)
                {
                    processEnExec.ElementLie = (CObjetDonneeAIdNumerique)elementCible;
                }
                else
                {
                    processEnExec.ElementLie = null;
                }
                processEnExec.Libelle = process.Libelle;

                CBrancheProcess branche = new CBrancheProcess(process);
                branche.IsModeAsynchrone = ModeAsynchrone;
                //TESTDBKEYOK
                branche.KeyUtilisateur          = contexte.Branche.KeyUtilisateur;
                branche.ConfigurationImpression = contexte.Branche.ConfigurationImpression;

                CContexteExecutionAction contexteExecution = new CContexteExecutionAction(
                    processEnExec,
                    branche,
                    elementCible,
                    ModeAsynchrone ? null : contexteDonneeSousAction, contexte.IndicateurProgression);

                CAction pointEntree = null;
                if (IdPointEntree >= 0)
                {
                    pointEntree = process.GetActionFromId(IdPointEntree);
                    if (pointEntree == null)
                    {
                        result.EmpileErreur(I.T("Can not find entry point|20018"));
                        return(result);
                    }
                }
                else
                {
                    pointEntree = process.GetActionDebut();
                }

                if (!ModeAsynchrone)
                {
                    contexteExecution.SauvegardeContexteExterne = !m_bLancerDansContexteSepare;

                    result = branche.ExecuteAction(pointEntree, contexteExecution, elementCible, true);
                    foreach (CContexteExecutionAction.CParametreServiceALancerALaFin s in contexteExecution.ServicesALancerALaFin)
                    {
                        contexte.AddServiceALancerALaFin(s);
                    }
                    contexteExecution.ClearServicesALancerALaFin();
                    if (m_bSansTrace)
                    {
                        processEnExec.Table.Rows.Remove(processEnExec.Row.Row);
                    }
                    if (VariableResultat != null && process.VariableDeRetour != null)
                    {
                        object valeur = process.GetValeurChamp(process.VariableDeRetour);
                        if (valeur != null)
                        {
                            valeur = valeur.ToString();
                        }
                        Process.SetValeurChamp(VariableResultat.IdVariable, valeur.ToString());
                    }
                }
                else
                {
                    //Ouvre une nouvelle session pour éxecuter le process
                    CSessionProcessServeurSuivi sessionAsync = new CSessionProcessServeurSuivi();
                    result = sessionAsync.OpenSession(new CAuthentificationSessionProcess(),
                                                      I.T("Process @1|198", processInDB.Libelle),
                                                      CSessionClient.GetSessionForIdSession(contexte.IdSession));
                    if (!result)
                    {
                        return(result);
                    }
                    contexteExecution.ChangeIdSession(sessionAsync.IdSession);
                    contexteExecution.HasSessionPropre = true;
                    m_brancheToExecute         = branche;
                    m_actionToExecute          = pointEntree;
                    m_elementCible             = elementCible;
                    m_contexteExecutionProcess = contexteExecution;
                    Thread th = new Thread(new ThreadStart(DemarreProcess));
                    th.Start();
                    return(result);
                }
            }
            contexte.ContexteDonnee.IdModificationContextuelle = strOldContextuel;
            return(result);
        }