/// <summary> /// Le data du result contient un CDonneeSession /// </summary> /// <returns></returns> private static CResultAErreur GetSession() { CResultAErreur result = CResultAErreur.True; lock (typeof(CLanceurProcessCommandLine)) { foreach (CDonneeSessionProcess donneeSession in m_poolSessions) { if (!donneeSession.IsUsed) { donneeSession.StartUsing(); result.Data = donneeSession; return(result); } } CSessionProcessServeurSuivi session = new CSessionProcessServeurSuivi(); result = session.OpenSession(new CAuthentificationSessionProcess(), "TimosProcess", ETypeApplicationCliente.Service); if (!result) { result.Data = (int)EErreurs.ErrorWhileOpeningSession; return(result); } CDonneeSessionProcess newDonneeSession = new CDonneeSessionProcess(session); newDonneeSession.StartUsing(); m_poolSessions.Add(newDonneeSession); result.Data = newDonneeSession; return(result); } }
//----------------------------------------------------------- public static CResultAErreur RunProcess(int nIdProcess, Dictionary <string, string> valeursParametres) { AssureTimerNettoyage(); CResultAErreur result = GetSession(); if (!result) { return(result); } CDonneeSessionProcess donneeSession = result.Data as CDonneeSessionProcess; result = CResultAErreur.True; try { CSessionClient session = donneeSession.SessionClient; using (CContexteDonnee contexte = new CContexteDonnee(session.IdSession, true, false)) { CProcessInDb processInDb = new CProcessInDb(contexte); if (!processInDb.ReadIfExists(nIdProcess)) { result.EmpileErreur(I.T("The process @1 doesn't exist|30008", nIdProcess.ToString())); result.Data = (int)EErreurs.ProcessDoesntExists; return(result); } CProcess process = processInDb.Process; foreach (KeyValuePair <string, string> parametre in valeursParametres) { string strParametre = parametre.Key; string strValeur = parametre.Value; bool bTrouvee = false; foreach (IVariableDynamique variable in process.ListeVariables) { if (strParametre.ToUpper() == variable.Nom.ToUpper()) { if (!variable.TypeDonnee.TypeDotNetNatif.IsValueType && variable.TypeDonnee.TypeDotNetNatif != typeof(string)) { result.EmpileErreur(I.T("Variable @1 cannot be set by TimosProcess. Only simple values can be used|30009", variable.Nom)); result.Data = (int)EErreurs.InvalidVariableValueOnlySimpleValuesAreAccepted; return(result); } try { object valeur = CUtilTexte.FromUniversalString(strValeur, variable.TypeDonnee.TypeDotNetNatif); } catch { } process.SetValeurChamp(variable.IdVariable, strValeur); bTrouvee = true; break; } } if (!bTrouvee) { result = ShowHelp(process); result.EmpileErreur(I.T("Unknown variable @1|30010", strParametre)); result.Data = (int)EErreurs.UnknownVariable; return(result); } } result = CProcessEnExecutionInDb.StartProcess(process, new CInfoDeclencheurProcess(TypeEvenement.Manuel), session.IdSession, null, null); if (!result) { result.Data = (int)EErreurs.ErrorWhileRunningProcess; return(result); } if (result.Data != null) { try { result.Data = Convert.ToInt32(result.Data); } catch { } return(result); } else { result.Data = 0; } } } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); result.Data = (int)EErreurs.ErrorWhileRunningProcess; return(result); } finally { lock (typeof(CLanceurProcessCommandLine)) { donneeSession.EndUsing(); } } return(result); }