//------------------------------------------------------------------- //Retourne vrai si le handler doit déclencher son évenement public bool ShoulDeclenche(CObjetDonneeAIdNumerique obj, ref CInfoDeclencheurProcess infoDeclencheur) { CParametreDeclencheurEvenement parametre = ParametreDeclencheurSiSurModification; if (parametre == null) { return(false); } return(parametre.ShouldDeclenche(obj, false, false, ref infoDeclencheur)); }
public static CResultAErreurType <CHandlerEvenement> CreateHandlerOnObject( CContexteDonnee ctxDonnee, CObjetDonneeAIdNumerique objetCible, CParametreDeclencheurEvenement parametreDeclencheur, string strLibelle, string strCode) { bool bShouldCreate = true; CResultAErreurType <CHandlerEvenement> result = new CResultAErreurType <CHandlerEvenement>(); result.Result = true; //Vérifie que le handler n'existe pas déjà CHandlerEvenement handler = new CHandlerEvenement(ctxDonnee); if (!handler.ReadIfExists( new CFiltreData( CHandlerEvenement.c_champTypeCible + "=@1 and " + CHandlerEvenement.c_champIdCible + "=@2 and " + CHandlerEvenement.c_champCode + "=@3", objetCible.GetType().ToString(), objetCible.Id, strCode))) { handler = null; } //Programme le handler if (handler == null) { handler = new CHandlerEvenement(ctxDonnee); handler.CreateNewInCurrentContexte(); } handler.Libelle = strLibelle; handler.Code = strCode; handler.TypeEvenement = parametreDeclencheur.TypeEvenement; handler.FormuleCondition = parametreDeclencheur.FormuleConditionDeclenchement; handler.ProprieteSurveillee = parametreDeclencheur.ProprieteASurveiller; handler.FormuleValeurAvant = parametreDeclencheur.FormuleValeurAvant; handler.FormuleValeurApres = parametreDeclencheur.FormuleValeurApres; handler.ElementSurveille = objetCible; handler.DateHeure = null; handler.ContextesException = parametreDeclencheur.ContextesException; handler.HideProgress = parametreDeclencheur.HideProgress; //Si date, évalue la formule de date if (parametreDeclencheur.TypeEvenement == TypeEvenement.Date) { object valeur = null; if (parametreDeclencheur.ProprieteASurveiller != null) { valeur = CParametreDeclencheurEvenement.GetValeur(objetCible, parametreDeclencheur.ProprieteASurveiller, DataRowVersion.Current); } if (valeur is CDateTimeEx) { valeur = ((CDateTimeEx)valeur).DateTimeValue; } if (valeur is DateTime? && valeur != null) { valeur = ((DateTime?)valeur).Value; } if (valeur is DateTime) { CObjetForTestValeurChampCustomDateTime objetEval = new CObjetForTestValeurChampCustomDateTime((DateTime)valeur); CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(objetEval); contexteEval.AttacheObjet(typeof(CContexteDonnee), ctxDonnee); if (parametreDeclencheur.FormuleDateProgramme == null) { result.EmpileErreur(I.T("Impossible to evaluate the date formula for the event release @1|149", strLibelle)); return(result); } CResultAErreur resTmp = parametreDeclencheur.FormuleDateProgramme.Eval(contexteEval); if (!resTmp) { result.EmpileErreur(resTmp.Erreur); } } else { result.EmpileErreur(I.T("The date value is incorrect|148")); return(result); } if (!result || !(result.Data is DateTime)) { result.EmpileErreur(I.T("Date formula is incorrect in the @1 release|150", strLibelle)); return(result); } handler.DateHeure = new CDateTimeEx((DateTime)result.Data); } result.DataType = handler; return(result); }
/// //////////////////////////////////////////////////////// protected override CResultAErreur ExecuteAction(CContexteExecutionAction contexte) { CResultAErreur result = CResultAErreur.True; CLienAction lienEvenement = null, lienStd = null; //Trouve le lien sortant evenement foreach (CLienAction lien in GetLiensSortantHorsErreur()) { if (lien is CLienEvenement) { lienEvenement = lien; } else { lienStd = lien; } } if (lienEvenement != null) { //Evalue l'élément cible object obj = null; obj = Process.GetValeurChamp(IdVariableElement); if (obj != null && obj.Equals(Process)) { obj = contexte.ProcessEnExecution; } if (obj != null) { if (!(obj is CObjetDonneeAIdNumerique)) { result.EmpileErreur(I.T("The supervised element by the event @1 isn't correct|147", Libelle)); return(result); } CHandlerEvenement handler = new CHandlerEvenement(contexte.ContexteDonnee); bool bShouldCreate = true; if (TypeDeGestionDuCodeEvenement != TypeGestionCode.PasDeGestionCode) { //Vérifie que le handler n'existe pas déjà CHandlerEvenement handlerExistant = new CHandlerEvenement(contexte.ContexteDonnee); if (handlerExistant.ReadIfExists( new CFiltreData( CHandlerEvenement.c_champTypeCible + "=@1 and " + CHandlerEvenement.c_champIdCible + "=@2 and " + CHandlerEvenement.c_champCode + "=@3", obj.GetType().ToString(), ((CObjetDonneeAIdNumerique)obj).Id, ParametreDeclencheur.Code))) { switch (TypeDeGestionDuCodeEvenement) { case TypeGestionCode.NePasCreerSiExiste: bShouldCreate = false; break; case TypeGestionCode.RemplacerSiExiste: handler = handlerExistant; bShouldCreate = true; break; } } } if (bShouldCreate) { int nIdActionArrivee = lienEvenement.IdActionArrivee; //Programme le handler if (handler == null) { handler = new CHandlerEvenement(contexte.ContexteDonnee); handler.CreateNewInCurrentContexte(); } handler.Libelle = LibelleEvenement; handler.Code = ParametreDeclencheur.Code; handler.TypeEvenement = ParametreDeclencheur.TypeEvenement; handler.FormuleCondition = ParametreDeclencheur.FormuleConditionDeclenchement; handler.ProprieteSurveillee = ParametreDeclencheur.ProprieteASurveiller; handler.FormuleValeurAvant = ParametreDeclencheur.FormuleValeurAvant; handler.FormuleValeurApres = ParametreDeclencheur.FormuleValeurApres; handler.ElementSurveille = (CObjetDonneeAIdNumerique)obj; handler.DateHeure = null; handler.ContextesException = ParametreDeclencheur.ContextesException; handler.HideProgress = ParametreDeclencheur.HideProgress; //Si date, évalue la formule de date if (ParametreDeclencheur.TypeEvenement == TypeEvenement.Date) { object valeur = null; if (ParametreDeclencheur.ProprieteASurveiller != null) { valeur = CParametreDeclencheurEvenement.GetValeur((CObjetDonnee)obj, ParametreDeclencheur.ProprieteASurveiller, DataRowVersion.Current); } if (valeur is CDateTimeEx) { valeur = ((CDateTimeEx)valeur).DateTimeValue; } if (valeur is DateTime? && valeur != null) { valeur = ((DateTime?)valeur).Value; } if (valeur is DateTime) { CObjetForTestValeurChampCustomDateTime objetEval = new CObjetForTestValeurChampCustomDateTime((DateTime)valeur); CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(objetEval); contexteEval.AttacheObjet(typeof(CContexteDonnee), contexte.ContexteDonnee); if (ParametreDeclencheur.FormuleDateProgramme == null) { result.EmpileErreur(I.T("Impossible to evaluate the date formula for the event release @1|149", Libelle)); return(result); } result = ParametreDeclencheur.FormuleDateProgramme.Eval(contexteEval); } else { result.EmpileErreur(I.T("The date value is incorrect|148")); return(result); } if (!result || !(result.Data is DateTime)) { result.EmpileErreur(I.T("Date formula is incorrect in the @1 release|150", Libelle)); return(result); } handler.DateHeure = new CDateTimeEx((DateTime)result.Data); } handler.ProcessSource = contexte.ProcessEnExecution; handler.IdActionDeProcessToExecute = nIdActionArrivee; } } } result.Data = lienStd; return(result); }