Пример #1
0
        //---------------------------------------------------
        public CWorkflow GetOrCreateWorkflowInCurrentContexte(CEtapeWorkflow etape)
        {
            CResultAErreur result = CResultAErreur.True;

            if (DbKeyTypeWorkflow == null)
            {
                return(null);
            }
            //Lance le démarrage du workflow
            if (etape.WorkflowLancé != null)
            {
                if (etape.WorkflowLancé.IdEtapeAppelante != etape.Id)
                {
                    etape.WorkflowLancé.EtapeAppelante = etape;//Pour pallier aux soucis d'id négatifs stockés parfois
                }
                return(etape.WorkflowLancé);
            }
            else
            {
                CTypeWorkflow typeWorkflow = new CTypeWorkflow(etape.ContexteDonnee);
                if (typeWorkflow.ReadIfExists(DbKeyTypeWorkflow))
                {
                    CWorkflow workflow = new CWorkflow(etape.ContexteDonnee);
                    workflow.CreateNewInCurrentContexte();
                    workflow.TypeWorkflow   = typeWorkflow;
                    workflow.Libelle        = etape.Libelle;
                    workflow.EtapeAppelante = etape;
                    etape.WorkflowLancé     = workflow;
                    return(workflow);
                }
            }
            return(null);
        }
        /// ///////////////////////////////////////////
        public override object Invoke(object objetAppelle, params object[] parametres)
        {
            CWorkflow workflow = objetAppelle as CWorkflow;

            if (workflow == null || parametres.Length == 0 || parametres[0] == null)
            {
                return(null);
            }
            string        strIdType   = parametres[0].ToString();
            CTypeWorkflow typeWorkfow = workflow.TypeWorkflow;

            if (typeWorkfow == null)
            {
                return(null);
            }
            CListeObjetsDonnees etapes = typeWorkfow.Etapes;

            etapes.Filtre = new CFiltreData(CObjetDonnee.c_champIdUniversel + "=@1",
                                            strIdType);
            if (etapes.Count == 0)
            {
                return(null);
            }
            CTypeEtapeWorkflow typeEtape = etapes[0] as CTypeEtapeWorkflow;
            CEtapeWorkflow     etape     = workflow.GetEtapeForType(typeEtape);

            if (etape != null)
            {
                return(CGestionnaireProjetsDeWorkflow.GetProjetDirectementAssocie(etape));
            }
            return(null);
        }
        //--------------------------------------------------------------------------
        public static CResultAErreur CreateSqueletteProjetsInCurrentContext(
            CWorkflow workflow,
            CTypeEtapeWorkflow typeEtapeDebut,
            CProjet projetParent)
        {
            CResultAErreur result = CResultAErreur.True;

            CTypeWorkflow typeWorkflow = workflow.TypeWorkflow;

            //Récupére le type d'étape de base
            CTypeEtapeWorkflow typeEtape = typeEtapeDebut;

            if (typeEtape == null)
            {
                typeEtape = typeWorkflow.EtapeDemarrageDefaut;
            }
            if (typeEtape == null)
            {
                return(result);
            }

            //règle de création : on ne suit que les liens systèmatiques (sans CodeRetour et sans formule)
            result = CreateProjets(workflow, typeEtape, projetParent);
            return(result);
        }
Пример #4
0
        //-------------------------------------------------------
        private void InitComboStartStep()
        {
            CTypeWorkflow typeWorkflow = m_txtSelectWorkflow.ElementSelectionne as CTypeWorkflow;

            if (typeWorkflow != null)
            {
                m_cmbStartStep.Init(typeWorkflow.Etapes, "Libelle", true);
                m_cmbStartStep.Enabled = true;
                if (m_keyLastIdTypeEtapeSel != null)
                {
                    CTypeEtapeWorkflow typeEtape = new CTypeEtapeWorkflow(CSc2iWin32DataClient.ContexteCourant);
                    if (typeEtape.ReadIfExists(m_keyLastIdTypeEtapeSel) && typeWorkflow.Equals(typeEtape.Workflow))
                    {
                        m_cmbStartStep.ElementSelectionne = typeEtape;
                    }
                    else
                    {
                        m_cmbStartStep.ElementSelectionne = null;
                    }
                }
                else
                {
                    m_cmbStartStep.ElementSelectionne = null;
                }
            }
            else
            {
                m_cmbStartStep.Enabled = false;
            }
        }
        //-------------------------------------------------------------------------
        private void m_linkTypeWorkflow_LinkClicked(object sender, EventArgs e)
        {
            CTypeWorkflow typeWorkflowParent = TypeEtape.Workflow;

            if (typeWorkflowParent != null)
            {
                CTimosApp.Navigateur.AffichePage(new CFormEditionTypeWorkflow(typeWorkflowParent));
            }
        }
Пример #6
0
        //-------------------------------------------------------------------
        public void AppliquerFiltre()
        {
            CFiltreData filtre = null;

            CActeur acteur = m_txtActeur.ElementSelectionne as CActeur;

            if (acteur != null)
            {
                CFiltreData filtreAss = new CFiltreData();
                string[]    strCodes  = acteur.GetListeCodesAffectationEtape();
                foreach (string strCode in strCodes)
                {
                    filtreAss.Filtre += CEtapeWorkflow.c_champAffectations + " like @" +
                                        (filtreAss.Parametres.Count + 1) + " or ";
                    filtreAss.Parametres.Add("%~" + strCode + "~%");
                }
                if (filtreAss.Filtre.Length > 0)
                {
                    filtreAss.Filtre = filtreAss.Filtre.Remove(filtreAss.Filtre.Length - 4, 4);
                    filtre           = CFiltreData.GetAndFiltre(filtre, filtreAss);
                }
            }
            CEtatEtapeWorkflow etat = m_cmbEtats.SelectedValue as CEtatEtapeWorkflow;

            if (etat != null)
            {
                CFiltreData filtreTmp = new CFiltreData(CEtapeWorkflow.c_champEtat + "=@1",
                                                        etat.CodeInt);
                filtre = CFiltreData.GetAndFiltre(filtreTmp, filtre);
            }

            CTypeWorkflow type = m_txtTypeWorkflow.ElementSelectionne as CTypeWorkflow;

            if (type != null)
            {
                filtre = CFiltreData.GetAndFiltre(filtre,
                                                  new CFiltreDataAvance(CEtapeWorkflow.c_nomTable,
                                                                        CTypeEtapeWorkflow.c_nomTable + "." +
                                                                        CTypeWorkflow.c_champId + "=@1", type.Id));
            }
            if (m_txtLabel.Text.Trim().Length > 0)
            {
                filtre = CFiltreData.GetAndFiltre(filtre,
                                                  new CFiltreDataAvance(CEtapeWorkflow.c_nomTable,
                                                                        "(" + CEtapeWorkflow.c_champLibelle + " like @1) or (" +
                                                                        CEtapeWorkflow.c_champLibelle + "=@2 and " +
                                                                        CTypeEtapeWorkflow.c_nomTable + "." +
                                                                        CTypeEtapeWorkflow.c_champLibelle + " like @1)",
                                                                        "%" + m_txtLabel.Text.Trim() + "%", ""));
            }


            Filtre = filtre;

            OnAppliqueFiltre(new object(), null);
        }
        //-------------------------------------------------------
        private void InitChamps()
        {
            if (m_blocWorkflow == null)
            {
                return;
            }
            m_txtSelectWorkflow.Init(typeof(CTypeWorkflow),
                                     "Libelle",
                                     false);
            if (m_blocWorkflow.DbKeyTypeWorkflow != null)
            {
                CTypeWorkflow wkf = new CTypeWorkflow(CSc2iWin32DataClient.ContexteCourant);
                if (wkf.ReadIfExists(m_blocWorkflow.DbKeyTypeWorkflow))
                {
                    m_txtSelectWorkflow.ElementSelectionne = wkf;
                }
            }
            m_txtSelectTypeProjet.Init(typeof(CTypeProjet),
                                       "Libelle",
                                       false);
            if (m_blocWorkflow.DbKeyTypeProjet != null)
            {
                CTypeProjet typeProjet = new CTypeProjet(CSc2iWin32DataClient.ContexteCourant);
                if (typeProjet.ReadIfExists(m_blocWorkflow.DbKeyTypeProjet))
                {
                    m_txtSelectTypeProjet.ElementSelectionne = typeProjet;
                }
            }
            m_cmbProjectField.Init(typeof(CChampCustom),
                                   CFiltreData.GetAndFiltre(CChampCustom.GetFiltreChampsForRole(CWorkflow.c_roleChampCustom),
                                                            new CFiltreData(
                                                                CChampCustom.c_champTypeObjetDonnee + "=@1",
                                                                typeof(CProjet).ToString())),
                                   "Nom",
                                   false);
            if (m_blocWorkflow.IdChampProjet != null)
            {
                CChampCustom champ = new CChampCustom(CSc2iWin32DataClient.ContexteCourant);
                if (champ.ReadIfExists(m_blocWorkflow.IdChampProjet.Value))
                {
                    m_cmbProjectField.ElementSelectionne = champ;
                }
            }

            m_listeAffectations.Clear();
            m_listeAffectations.AddRange(m_blocWorkflow.AffectationsCreationEtDemarrage);

            m_txtFormuleGanttId.Init(new CFournisseurPropDynStd(),
                                     typeof(CEtapeWorkflow));
            m_txtFormuleGanttId.Formule = m_blocWorkflow.FormuleGanttId;

            m_chkGererIterations.Checked = m_blocWorkflow.GererIteration;
        }
Пример #8
0
        //-------------------------------------------------------------------
        public void FillContexte(CContexteFormNavigable ctx)
        {
            CActeur acteur = m_txtActeur.ElementSelectionne as CActeur;

            ctx["FILTRE_ACTEUR"] = acteur != null ? (int?)acteur.Id : null;
            CEtatEtapeWorkflow etat = m_cmbEtats.SelectedValue as CEtatEtapeWorkflow;

            ctx["FILTRE_ETAT"] = etat;
            CTypeWorkflow type = m_txtTypeWorkflow.ElementSelectionne as CTypeWorkflow;

            ctx["FILTRE_TYPE_WKF"] = type != null ? (int?)type.Id : null;
            ctx["FILTRE_LABEL"]    = m_txtLabel.Text;
        }
Пример #9
0
        private void m_txtSelectTypeWorkflow_ElementSelectionneChanged(object sender, EventArgs e)
        {
            CTypeWorkflow tp = m_txtSelectTypeWorkflow.ElementSelectionne as CTypeWorkflow;

            if (tp != null && m_gestionnaireModeEdition.ModeEdition)
            {
                Workflow.TypeWorkflow = tp;
                RefreshChampsCustom();
                InvalidePage(m_pageWorkflow);
                if (m_tabControl.SelectedTab == m_pageWorkflow)
                {
                    InitPage(m_pageWorkflow);
                }
            }
        }
Пример #10
0
 //-------------------------------------------------------
 private void InitChamps()
 {
     m_txtSelectWorkflow.InitAvecFiltreDeBase(typeof(CTypeWorkflow),
                                              "Libelle",
                                              null, false);
     if (m_blocWorkflow.DbKeyTypeWorkflow != null)
     {
         CTypeWorkflow wkf = new CTypeWorkflow(CSc2iWin32DataClient.ContexteCourant);
         if (wkf.ReadIfExists(m_blocWorkflow.DbKeyTypeWorkflow))
         {
             m_txtSelectWorkflow.ElementSelectionne = wkf;
         }
     }
     m_keyLastIdTypeEtapeSel = m_blocWorkflow.DbKeyTypeEtapeDémarrage;
     m_txtWorkflowInit.Init(new CFournisseurGeneriqueProprietesDynamiques(), typeof(CEtapeWorkflow));
     m_txtWorkflowInit.Formule = m_blocWorkflow.FormuleInitialisationWorkflowLance;
     InitComboStartStep();
 }
Пример #11
0
        /// //////////////////////////////////////////////////
        public override CResultAErreur VerifieDonnees(sc2i.data.CObjetDonnee objet)
        {
            CResultAErreur result       = CResultAErreur.True;
            CTypeWorkflow  typeWorkflow = objet as CTypeWorkflow;

            if (typeWorkflow != null)
            {
                if (typeWorkflow.Libelle.Length == 0)
                {
                    result.EmpileErreur(I.T("Workflow type label should be set|20003"));
                }
                if (typeWorkflow.Etapes.Count > 0 && typeWorkflow.EtapeDemarrageDefaut == null)
                {
                    result.EmpileErreur(I.T("You have to select a start step for this workflow|20009"));
                }
            }
            return(result);
        }
        //-------------------------------------------------------
        private CResultAErreur MajChamps()
        {
            CResultAErreur result = CResultAErreur.True;
            CTypeWorkflow  wkf    = m_txtSelectWorkflow.ElementSelectionne as CTypeWorkflow;

            if (wkf != null)
            {
                m_blocWorkflow.DbKeyTypeWorkflow = wkf.DbKey;
            }
            else
            {
                m_blocWorkflow.DbKeyTypeWorkflow = null;
            }

            CTypeProjet typeProjet = m_txtSelectTypeProjet.ElementSelectionne as CTypeProjet;

            if (typeProjet != null)
            {
                m_blocWorkflow.DbKeyTypeProjet = typeProjet.DbKey;
            }
            else
            {
                m_blocWorkflow.DbKeyTypeProjet = null;
            }

            CChampCustom champ = m_cmbProjectField.ElementSelectionne as CChampCustom;

            if (champ != null)
            {
                m_blocWorkflow.IdChampProjet = champ.Id;
            }
            else
            {
                m_blocWorkflow.IdChampProjet = null;
            }

            m_blocWorkflow.AffectationsCreationEtDemarrage = m_listeAffectations;

            m_blocWorkflow.FormuleGanttId = m_txtFormuleGanttId.Formule;

            m_blocWorkflow.GererIteration = m_chkGererIterations.Checked;

            return(result);
        }
Пример #13
0
        //-------------------------------------------------------------------
        public void InitFromContexte(CContexteFormNavigable ctx)
        {
            int?nIdActeur = ctx["FILTRE_ACTEUR"] as int?;

            if (nIdActeur != null)
            {
                CActeur acteur = new CActeur(CSc2iWin32DataClient.ContexteCourant);
                if (acteur.ReadIfExists(nIdActeur.Value))
                {
                    m_txtActeur.ElementSelectionne = acteur;
                }
            }
            else
            {
                m_txtActeur.ElementSelectionne = null;
            }
            CEtatEtapeWorkflow etat = ctx["FILTRE_ETAT"] as CEtatEtapeWorkflow;

            if (etat != null)
            {
                m_cmbEtats.SelectedValue = etat;
            }
            else
            {
                m_cmbEtats.SelectedValue = null;
            }

            int?nIdType = ctx["FILTRE_TYPE_WKF"] as int?;

            if (nIdType != null)
            {
                CTypeWorkflow type = new CTypeWorkflow(CSc2iWin32DataClient.ContexteCourant);
                if (type.ReadIfExists(nIdType.Value))
                {
                    m_txtTypeWorkflow.ElementSelectionne = type;
                }
            }
            else
            {
                m_txtTypeWorkflow.ElementSelectionne = null;
            }
            m_txtLabel.Text = ctx["FILTRE_LABEL"] as string;
        }
Пример #14
0
        //-------------------------------------------------------
        private CResultAErreur MajChamps()
        {
            CResultAErreur result  = CResultAErreur.True;
            CTypeWorkflow  wkfType = m_txtSelectWorkflow.ElementSelectionne as CTypeWorkflow;

            if (wkfType != null)
            {
                m_blocWorkflow.DbKeyTypeWorkflow = wkfType.DbKey;
            }
            else
            {
                m_blocWorkflow.DbKeyTypeWorkflow = null;
            }

            CTypeEtapeWorkflow typeEtape = m_cmbStartStep.ElementSelectionne as CTypeEtapeWorkflow;

            if (typeEtape != null)
            {
                m_blocWorkflow.DbKeyTypeEtapeDémarrage = typeEtape.DbKey;
            }
            else
            {
                m_blocWorkflow.DbKeyTypeEtapeDémarrage = null;
            }

            if (m_txtWorkflowInit.Formule == null)
            {
                if (!m_txtWorkflowInit.ResultAnalyse)
                {
                    result.EmpileErreur(m_txtWorkflowInit.ResultAnalyse.Erreur);
                }
            }
            else
            {
                m_blocWorkflow.FormuleInitialisationWorkflowLance = m_txtWorkflowInit.Formule;
            }


            return(result);
        }
Пример #15
0
 //------------------------------------------------------------------
 private void m_panelWorkflow_DoubleClicSurElement(object sender, EventArgs e)
 {
     if (!LockEdition)
     {
         EditeCurrentEtape();
     }
     else
     {
         CWorkflowEtapeDessin etape = m_panelWorkflow.EtapeSelectionnee;
         if (etape == null)
         {
             return;
         }
         CBlocWorkflow         bloc         = etape.TypeEtape != null ? etape.TypeEtape.Bloc : null;
         CBlocWorkflowWorkflow blocWorkflow = bloc as CBlocWorkflowWorkflow;
         if (blocWorkflow != null && blocWorkflow.DbKeyTypeWorkflow != null)
         {
             CTypeWorkflow typeWorkflow = new CTypeWorkflow(CSc2iWin32DataClient.ContexteCourant);
             if (typeWorkflow.ReadIfExists(blocWorkflow.DbKeyTypeWorkflow))
             {
                 CFormNavigateur navigateur = CFormNavigateur.FindNavigateur(this);
                 if (navigateur != null)
                 {
                     CReferenceTypeForm refFrm = CFormFinder.GetRefFormToEdit(typeof(CTypeWorkflow));
                     if (refFrm != null)
                     {
                         CFormEditionStandard frm = refFrm.GetForm(typeWorkflow) as CFormEditionStandard;
                         if (frm != null)
                         {
                             navigateur.AffichePage(frm);
                         }
                     }
                 }
             }
         }
     }
 }
Пример #16
0
 //----------------------------------------------------------
 public CWorkflowDessin(CTypeWorkflow typeWorkflow)
     : this()
 {
     m_typeWorkflow = typeWorkflow;
 }
Пример #17
0
 //-------------------------------------------------------------------------
 public CFormEditionTypeWorkflow(CTypeWorkflow TypeWorkflow, CListeObjetsDonnees liste)
     : base(TypeWorkflow, liste)
 {
     // Cet appel est requis par le Concepteur Windows Form.
     InitializeComponent();
 }
Пример #18
0
        /// ////////////////////////////////////////////////////////////////////
        public CResultAErreur SerializeFiltre(C2iSerializer serializer)
        {
            int            nVersion = GetNumVersion();
            CResultAErreur result   = serializer.TraiteVersion(ref nVersion);

            if (!result)
            {
                return(result);
            }

            if (serializer.Mode == ModeSerialisation.Lecture)
            {
                InitCombos();
            }

            CActeur acteur    = m_txtActeur.ElementSelectionne as CActeur;
            int?    nIdActeur = acteur != null ? (int?)acteur.Id : null;

            serializer.TraiteIntNullable(ref nIdActeur);
            if (nIdActeur != null && serializer.Mode == ModeSerialisation.Lecture)
            {
                acteur = new CActeur(CSc2iWin32DataClient.ContexteCourant);
                if (acteur.ReadIfExists(nIdActeur.Value))
                {
                    m_txtActeur.ElementSelectionne = acteur;
                }
            }

            CEtatEtapeWorkflow etat = m_cmbEtats.SelectedValue as CEtatEtapeWorkflow;
            int?nEtat = etat != null?(int?)etat.CodeInt:null;

            serializer.TraiteIntNullable(ref nEtat);
            if (serializer.Mode == ModeSerialisation.Lecture && nEtat != null)
            {
                etat = new CEtatEtapeWorkflow((EEtatEtapeWorkflow)nEtat.Value);
                m_cmbEtats.SelectedValue = etat;
            }

            CTypeWorkflow type    = m_txtTypeWorkflow.ElementSelectionne as CTypeWorkflow;
            int?          nIdType = type != null ? (int?)type.Id : null;

            serializer.TraiteIntNullable(ref nIdType);
            if (nIdType != null && serializer.Mode == ModeSerialisation.Lecture)
            {
                type = new CTypeWorkflow(CSc2iWin32DataClient.ContexteCourant);
                if (type.ReadIfExists(nIdType.Value))
                {
                    m_txtTypeWorkflow.ElementSelectionne = type;
                }
            }

            string strText = m_txtLabel.Text;

            serializer.TraiteString(ref strText);
            if (serializer.Mode == ModeSerialisation.Lecture)
            {
                m_txtLabel.Text = strText;
            }

            return(result);
        }
Пример #19
0
 //-------------------------------------------------------------------------
 public CFormEditionTypeWorkflow(CTypeWorkflow TypeWorkflow)
     : base(TypeWorkflow)
 {
     // Cet appel est requis par le Concepteur Windows Form.
     InitializeComponent();
 }
Пример #20
0
        //-------------------------------------------------------------------
        private void m_menuEditWorkflow_Click(object sender, EventArgs e)
        {
            CWorkflowEtapeDessin etape = EtapeSelectionnee;

            if (etape == null)
            {
                return;
            }
            CBlocWorkflowWorkflow blocwkf = etape != null && etape.TypeEtape != null ?
                                            etape.TypeEtape.Bloc as CBlocWorkflowWorkflow : null;

            if (blocwkf != null)
            {
                CReferenceTypeForm refFrm = CFormFinder.GetRefFormToEdit(typeof(CTypeWorkflow));
                if (refFrm != null)
                {
                    CTypeWorkflow typeWorkflow = null;
                    if (blocwkf.DbKeyTypeWorkflow == null)
                    {
                        if (!LockEdition)
                        {
                            typeWorkflow = new CTypeWorkflow(CSc2iWin32DataClient.ContexteCourant);
                            typeWorkflow.CreateNew();
                            typeWorkflow.Libelle = blocwkf.TypeEtape.Libelle;
                        }
                    }
                    else
                    {
                        typeWorkflow = new CTypeWorkflow(CSc2iWin32DataClient.ContexteCourant);
                        if (!typeWorkflow.ReadIfExists(blocwkf.DbKeyTypeWorkflow))
                        {
                            typeWorkflow = null;
                        }
                    }
                    if (typeWorkflow != null)
                    {
                        CFormNavigateur navigateur = null;
                        if (LockEdition)
                        {
                            Form frm = FindForm();
                            if (frm != null)
                            {
                                Control ctrl = frm.Parent;
                                while (ctrl != null && ctrl.Parent != null && !(ctrl is CFormNavigateur))
                                {
                                    ctrl = ctrl.Parent;
                                }
                                if (typeof(CFormNavigateur).IsAssignableFrom(ctrl.GetType()))
                                {
                                    navigateur = (CFormNavigateur)ctrl;
                                }
                            }
                        }
                        CFormEditionStandard frmEdition = refFrm.GetForm(typeWorkflow) as CFormEditionStandard;
                        if (navigateur == null && frmEdition != null)
                        {
                            CFormNavigateurPopup.Show(frmEdition);
                            if (!LockEdition && typeWorkflow.IsValide() && typeWorkflow.Id >= 0)
                            {
                                blocwkf.DbKeyTypeWorkflow = typeWorkflow.DbKey;
                                etape.TypeEtape.Bloc      = blocwkf;
                            }
                        }
                        else
                        {
                            navigateur.AffichePage(frmEdition);
                        }
                    }
                }
            }
        }