//------------------------------------------------------------- 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(); } }
//------------------------------------------------------------ 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(); } } }
/// //////////////////////////////////////////////////////// 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); }
//------------------------------------------ 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); } } } }
/// //////////////////////////////////////////////////////// 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); }