コード例 #1
0
        /// ////////////////////////////////////////////////////////
        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);
        }
コード例 #2
0
ファイル: CBlocWorkflowProjet.cs プロジェクト: ykebaili/Timos
        //--------------------------------------------------------------------------
        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);
        }
コード例 #3
0
ファイル: CBlocWorkflowProjet.cs プロジェクト: ykebaili/Timos
        //---------------------------------------------------
        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));
        }