/// //////////////////////////////////////////////////////// protected override CResultAErreur MyExecute(CContexteExecutionAction contexte) { CResultAErreur result = CResultAErreur.True; CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(Process); if (FormuleProjetParent == null) { result.EmpileErreur(I.T("Invalid project formula|20147")); return(result); } result = FormuleProjetParent.Eval(ctxEval); if (!result) { return(result); } CProjet projetParent = result.Data as CProjet; if (FormuleWorkflow == null) { result.EmpileErreur(I.T("Invalid workflow formula|20147")); return(result); } result = FormuleWorkflow.Eval(ctxEval); if (!result) { return(result); } CWorkflow workflow = result.Data as CWorkflow; if (workflow == null) { result.EmpileErreur(I.T("Invalid workflow|20149")); return(result); } CTypeEtapeWorkflow typeEtapeDebut = null; if (FormuleTypeEtapeDebut != null) { result = FormuleTypeEtapeDebut.Eval(ctxEval); if (!result) { result.EmpileErreur(I.T("Invalid Start step formula|20155")); return(result); } typeEtapeDebut = result.Data as CTypeEtapeWorkflow; } result = CGestionnaireProjetsDeWorkflow.CreateSqueletteProjetsInCurrentContext( workflow, typeEtapeDebut, projetParent); return(result); }
//-------------------------------------------------------------------------- private CResultAErreur StartOrRestartProjet(CEtapeWorkflow etape) { CResultAErreur result = CResultAErreur.True; CResultAErreurType <CProjet> resProjet = CGestionnaireProjetsDeWorkflow.AssureProjetRunnable(etape, this); if (!resProjet) { result.EmpileErreur(resProjet.Erreur); return(result); } CProjet projet = resProjet.DataType; if (projet == null) { return(result); } if (etape.DateDebut == null) { etape.DateDebut = DateTime.Now; } if (projet.ProjetsFils.Count == 0) { if (projet.DateDebutReel == null || GererIteration) { projet.DateDebutReel = etape.DateDebut.Value; projet.DateFinRelle = null; } else if (!projet.HasOptionLienEtape(EOptionLienProjetEtape.StepKeepDates)) { projet.DateDebutReel = etape.DateDebut.Value; projet.DateFinRelle = null; } } CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(etape); foreach (CAffectationsProprietes affectation in AffectationsCreationEtDemarrage) { bool bAppliquer = affectation.FormuleCondition == null || affectation.FormuleCondition is C2iExpressionVrai; if (affectation.FormuleCondition != null) { CResultAErreur res = affectation.FormuleCondition.Eval(ctxEval); if (res && res.Data != null && CUtilBool.BoolFromString(res.Data.ToString()) == true) { bAppliquer = true; } } if (bAppliquer) { affectation.AffecteProprietes(projet, etape, new CFournisseurPropDynStd()); } } System.Console.WriteLine("Démarrage projet " + projet.Libelle); return(result); }
//--------------------------------------------------- public override CResultAErreur EndEtapeNoSave(CEtapeWorkflow etape) { CResultAErreur result = CResultAErreur.True; CResultAErreurType <CProjet> resProjet = GetOrCreateProjetInCurrentContexte(etape, CGestionnaireProjetsDeWorkflow.FindProjetParent(etape), CGestionnaireProjetsDeWorkflow.FindPredecesseurs(etape)); if (!resProjet) { result.EmpileErreur(resProjet.Erreur); return(result); } CProjet projet = resProjet.DataType; if (projet == null) { return(result); } System.Console.WriteLine("Fin projet " + projet.Libelle); DateTime dt = etape.DateFin == null ?DateTime.Now:etape.DateFin.Value; if (projet.ProjetsFils.Count == 0) { if (!projet.HasOptionLienEtape(EOptionLienProjetEtape.StepKeepDates) || projet.DateFinRelle == null) { projet.DateFinRelle = dt; } } if (projet.HasOptionLienEtape(EOptionLienProjetEtape.ResetFlagOnEndStep)) { projet.OptionLienEtapeCode = (int)EOptionLienProjetEtape.Standard; } return(base.EndEtapeNoSave(etape)); }