private void UpdateListeVariables()
        {
            m_bListeVariablesRemplie     = false;
            m_variableEnCoursEdition     = null;
            m_txtFormuleVariable.Visible = false;
            if (!(m_cmbProcess.SelectedValue is CProcessInDb))
            {
                m_wndListeVariables.Enabled  = false;
                m_txtFormuleVariable.Visible = false;
                return;
            }
            m_wndListeVariables.Enabled  = true;
            m_txtFormuleVariable.Visible = true;

            CProcessInDb processInDB = (CProcessInDb)m_cmbProcess.SelectedValue;
            CProcess     process     = processInDB.Process;

            if (process == null)
            {
                m_wndListeVariables.Enabled  = false;
                m_txtFormuleVariable.Visible = false;
                return;
            }
            ArrayList lst = new ArrayList(process.ListeVariables);

            m_wndListeVariables.Remplir(lst, false);
            m_bListeVariablesRemplie = true;
        }
Exemplo n.º 2
0
 //-------------------------------------------------------------------
 private void m_btnExecuter_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
 {
     if (m_panelListe.ElementSelectionne != null)
     {
         CProcessInDb process = (CProcessInDb)m_panelListe.ElementSelectionne;
         if (CFormAlerte.Afficher(I.T("Execute Action '@1' ?|990", process.Libelle),
                                  EFormAlerteType.Question) == DialogResult.Yes)
         {
             CResultAErreur result = CFormExecuteProcess.StartProcess(
                 process.Process,
                 null,
                 process.ContexteDonnee.IdSession,
                 process.ContexteDonnee.IdVersionDeTravail,
                 false
                 );
             if (!result)
             {
                 CFormAlerte.Afficher(result.Erreur);
             }
             else
             {
                 CFormAlerte.Afficher(I.T("Execution complete|991"));
             }
         }
     }
 }
        //-------------------------------------------------------
        private void InitChamps()
        {
            CFiltreData filtre = new CFiltreData(CProcessInDb.c_champTypeCible + "=@1",
                                                 typeof(CEtapeWorkflow).ToString());

            m_txtSelectProcess.Init(typeof(CProcessInDb),
                                    filtre,
                                    "Libelle",
                                    true);
            if (m_blocProcess.DbKeyProcess != null)
            {
                CProcessInDb process = new CProcessInDb(CContexteDonneeSysteme.GetInstance());
                if (process.ReadIfExists(m_blocProcess.DbKeyProcess))
                {
                    m_txtSelectProcess.ElementSelectionne = process;
                }
            }
            m_process = m_blocProcess.Process;
            m_txtInstructions.Text   = m_blocProcess.Instructions;
            m_chkManualStart.Checked = m_blocProcess.DemarrageManuel;
            CParametresInitialisationEtape parametres = m_blocProcess.TypeEtape != null ? m_blocProcess.TypeEtape.ParametresInitialisation : new CParametresInitialisationEtape();

            m_panelAffectations.Init(parametres);
            m_chkUtiliserSortieProcessCommeCodeRetour.Checked = m_blocProcess.UtiliserLaValeurDeSortieDeProcessCommeCodeRetour;

            UpdateVisuProcess();
        }
        /// //////////////////////////////////////////
        private void UpdatePointsEntree()
        {
            m_panelPointEntree.Visible = false;
            m_cmbPointEntree.TextNull  = I.T("Default|20012");
            m_cmbPointEntree.Fill(new CActionPointEntree[0], "Libelle", true);
            if (!(m_cmbProcess.SelectedValue is CProcessInDb))
            {
                m_cmbPointEntree.SelectedValue = null;
                return;
            }
            CProcessInDb processInDB = (CProcessInDb)m_cmbProcess.SelectedValue;
            CProcess     process     = processInDB.Process;

            if (process == null)
            {
                return;
            }
            CActionPointEntree[] entrees = process.PointsEntreeAlternatifs;

            m_cmbPointEntree.Fill(entrees, "Libelle", true);
            if (entrees.Length == 0)
            {
                m_panelPointEntree.Visible     = false;
                m_cmbPointEntree.SelectedValue = null;
            }
            else
            {
                m_panelPointEntree.Visible     = true;
                m_cmbPointEntree.SelectedValue = process.GetActionFromId(ActionLancerProcess.IdPointEntree);
            }
        }
 public CNoeudRecherche_ProcessInDbc(CProcessInDb processInDb)
 {
     if (processInDb != null)
     {
         m_nIdProcessInDb = processInDb.Id;
         m_strLibelle     = I.T("Process @1|20025", processInDb.Libelle);
     }
 }
Exemplo n.º 6
0
        //-------------------------------------------------------------
        public CResultAErreur StartProcess(CEtapeWorkflow etape)
        {
            CResultAErreur result  = CResultAErreur.True;
            CProcess       process = m_process;

            if (process == null)
            {
                if (m_dbKeyProcess != null)
                {
                    CProcessInDb processInDb = new CProcessInDb(etape.ContexteDonnee);
                    if (processInDb.ReadIfExists(m_dbKeyProcess))
                    {
                        process = processInDb.Process;
                    }
                }
            }
            if (process != null)
            {
                if (process.Libelle.Trim().Length == 0 && etape != null)
                {
                    process.Libelle = I.T("Step @1|20109", etape.Libelle);
                }
                result = CProcessEnExecutionInDb.StartProcess(process, new CInfoDeclencheurProcess(TypeEvenement.Specifique),
                                                              new CReferenceObjetDonnee(etape),
                                                              etape.ContexteDonnee.IdSession,
                                                              null,
                                                              null);
                if (result)
                {
                    etape.Refresh();//Relit l'étape car elle a pu être modifiée par le process
                    if (m_bUtiliserSortieDeProcessCommeCodeRetour && (result.Data is string || result.Data is string[]))
                    {
                        if (result.Data is string)
                        {
                            etape.CodesRetour = new string[] { (string)result.Data }
                        }
                        ;
                        if (result.Data is string[])
                        {
                            etape.CodesRetour = (string[])result.Data;
                        }
                    }
                    result = EndAndSaveIfOk(etape);
                }
            }
            return(result);
        }
    }
 /////////////////////////////////////////////////////////////////////////////////
 private void m_selectionneurProcess_ElementSelectionneChanged(object sender, EventArgs e)
 {
     if (m_selectionneurProcess.ElementSelectionne != null)
     {
         m_selectionneurEvenementManuel.ElementSelectionne = null;
         CProcessInDb process = m_selectionneurProcess.ElementSelectionne as CProcessInDb;
         if (process != null)
         {
             InitListeFormulesParametres(process.Process, m_actionEditee as CActionSur2iLinkExecuterProcess);
         }
         else
         {
             InitListeFormulesParametres(null, null);
         }
     }
 }
        //-------------------------------------------------------
        private CResultAErreur MajChamps()
        {
            CResultAErreur result = CResultAErreur.True;
            //m_blocFormulaire.Instructions = m_txtInstructions.Text;
            CProcessInDb process = m_txtSelectProcess.ElementSelectionne as CProcessInDb;

            if (process != null)
            {
                m_blocProcess.DbKeyProcess = process.DbKey;
            }
            else
            {
                m_blocProcess.DbKeyProcess = null;
            }
            CResultAErreurType <CParametresInitialisationEtape> resParam = m_panelAffectations.MajChamps();

            if (resParam != null)
            {
                if (m_blocProcess.TypeEtape != null)
                {
                    m_blocProcess.TypeEtape.ParametresInitialisation = resParam.DataType;
                }
            }
            else
            {
                result.EmpileErreur(resParam.Erreur);
            }
            m_blocProcess.DemarrageManuel = m_chkManualStart.Checked;
            m_blocProcess.Instructions    = m_txtInstructions.Text;

            if (m_blocProcess.DbKeyProcess == null)
            {
                m_process             = m_processEditor.Process;
                m_blocProcess.Process = m_process;
            }
            else
            {
                m_blocProcess.Process = null;
            }
            m_blocProcess.UtiliserLaValeurDeSortieDeProcessCommeCodeRetour = m_chkUtiliserSortieProcessCommeCodeRetour.Checked;

            return(result);
        }
        /// //////////////////////////////////////////
        protected override void InitChamps()
        {
            base.InitChamps();
            m_wndAideFormule.FournisseurProprietes = ObjetEdite.Process;
            m_wndAideFormule.ObjetInterroge        = typeof(CProcess);

            m_txtFormuleVariable.Init(m_wndAideFormule.FournisseurProprietes, m_wndAideFormule.ObjetInterroge);

            CListeObjetsDonnees liste = new CListeObjetsDonnees(CSc2iWin32DataClient.ContexteCourant, typeof(CProcessInDb));

            m_cmbProcess.ListDonnees       = liste;
            m_cmbProcess.ProprieteAffichee = "Libelle";
            CProcessInDb processInDB = new CProcessInDb(CSc2iWin32DataClient.ContexteCourant);

            m_tableIdVariableToFormule.Clear();
            CProcess processALancer = null;

            if (processInDB.ReadIfExists(ActionLancerProcess.DbKeyProcess))
            {
                m_cmbProcess.SelectedValue = processInDB;
                processALancer             = processInDB.Process;
                if (processALancer != null)
                {
                    foreach (IVariableDynamique variable in processALancer.ListeVariables)
                    {
                        m_tableIdVariableToFormule[variable.IdVariable] = ActionLancerProcess.GetExpressionForVariableProcess(variable.IdVariable);
                    }
                }
            }
            else
            {
                m_cmbProcess.SelectedValue = null;
            }

            UpdateListeVariables();

            m_chkAsynchrone.Checked     = ActionLancerProcess.ModeAsynchrone;
            m_chkSansTrace.Checked      = ActionLancerProcess.SansTrace;
            m_chkContexteSepare.Checked = ActionLancerProcess.LancerDansUnProcessSepare;

            UpdatePointsEntree();
        }
        /// //////////////////////////////////////////
        protected override sc2i.common.CResultAErreur MAJ_Champs()
        {
            CResultAErreur result = base.MAJ_Champs();

            OnChangeVariable();

            if (!(m_cmbProcess.SelectedValue is CProcessInDb))
            {
                result.EmpileErreur(I.T("Select an action|30014"));
            }

            CProcessInDb processInDB = (CProcessInDb )m_cmbProcess.SelectedValue;

            ActionLancerProcess.DbKeyProcess = processInDB.DbKey;

            ActionLancerProcess.ClearExpressionsVariables();
            foreach (string strIdVariable in m_tableIdVariableToFormule.Keys)
            {
                C2iExpression exp = (C2iExpression)m_tableIdVariableToFormule[strIdVariable];
                if (exp != null)
                {
                    ActionLancerProcess.SetExpressionForVariableProcess(strIdVariable, exp);
                }
            }

            ActionLancerProcess.ModeAsynchrone            = m_chkAsynchrone.Checked;
            ActionLancerProcess.SansTrace                 = m_chkSansTrace.Checked;
            ActionLancerProcess.LancerDansUnProcessSepare = m_chkContexteSepare.Checked ||
                                                            !processInDB.Process.PeutEtreExecuteSurLePosteClient;

            CActionPointEntree actionEntree = m_cmbPointEntree.SelectedValue as CActionPointEntree;

            if (actionEntree != null)
            {
                ActionLancerProcess.IdPointEntree = actionEntree.IdObjetProcess;
            }
            else
            {
                ActionLancerProcess.IdPointEntree = -1;
            }
            return(result);
        }
Exemplo n.º 11
0
        /// //////////////////////////////////////////////////
        public override CResultAErreur VerifieDonnees(CObjetDonnee objet)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                CProcessInDb process = (CProcessInDb)objet;
                if (process.Libelle.Trim() == "")
                {
                    result.EmpileErreur(I.T("The Action label could not be empty|113"));
                }
                if (!CObjetDonneeAIdNumerique.IsUnique(process, CProcessInDb.c_champLibelle, process.Libelle))
                {
                    result.EmpileErreur(I.T("An Action with the same label already exist|115"));
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
        //----------------------------------------------------------------
        private void UpdateVisuProcess()
        {
            CProcessInDb prc = m_txtSelectProcess.ElementSelectionne as CProcessInDb;

            if (prc == null)
            {
                if (m_process == null)
                {
                    m_process = new CProcess(m_blocProcess.TypeEtape.ContexteDonnee);
                }
                m_process.TypeCible     = typeof(CEtapeWorkflow);
                m_processEditor.Process = m_process;
                if (!m_tab.TabPages.Contains(m_pageProcess))
                {
                    m_tab.TabPages.Insert(0, m_pageProcess);
                }
            }
            else
            if (m_tab.TabPages.Contains(m_pageProcess))
            {
                m_tab.TabPages.Remove(m_pageProcess);
            }
        }
        //-----------------------------------------------------------------------------------------------------
        public void InitChamps(CActionSur2iLink action, CObjetPourSousProprietes objetPourSousProprietes)
        {
            m_actionEditee = action as CActionSur2iLinkExecuterProcess;
            if (m_actionEditee == null)
            {
                Visible = false;
                return;
            }
            Visible = true;

            m_objetPourSousProprietes = objetPourSousProprietes;
            CObjetPourSousProprietes            objetPourFiltreActions = m_objetPourSousProprietes;
            CDefinitionMultiSourceForExpression multi = m_objetPourSousProprietes.ElementAVariableInstance as CDefinitionMultiSourceForExpression;

            if (multi != null)
            {
                objetPourFiltreActions = multi.DefinitionObjetPrincipal;
            }
            CFiltreData filtre = null;

            if (objetPourFiltreActions == null || objetPourFiltreActions.TypeAnalyse == null)
            {
                filtre = new CFiltreData(CProcessInDb.c_champTypeCible + "=@1", "");
            }
            else
            {
                filtre = new CFiltreData(CProcessInDb.c_champTypeCible + "=@1 or " +
                                         CProcessInDb.c_champTypeCible + "=@2 or " +
                                         CProcessInDb.c_champTypeCible + "=@3",
                                         "",
                                         objetPourFiltreActions.TypeAnalyse.ToString(),
                                         typeof(CObjetDonneeAIdNumerique).ToString());
            }

            m_selectionneurProcess.InitAvecFiltreDeBase <CProcessInDb>("Libelle", filtre, true);
            CProcessInDb process = new CProcessInDb(CSc2iWin32DataClient.ContexteCourant);
            CProcess     processPourParametres = null;

            if (process.ReadIfExists(((CActionSur2iLinkExecuterProcess)m_actionEditee).IdProcessInDb))
            {
                m_selectionneurProcess.ElementSelectionne = process;
                processPourParametres = process.Process;
            }


            if (objetPourFiltreActions != null && objetPourFiltreActions.TypeAnalyse != null)
            {
                m_panelEvenementManuel.Visible = true;
                CFiltreData filtreDeBase = new CFiltreData(
                    CEvenement.c_champTypeEvenement + "=@1 and " +
                    CEvenement.c_champTypeCible + "=@2",
                    (int)TypeEvenement.Manuel,
                    objetPourFiltreActions.TypeAnalyse.ToString());

                m_selectionneurEvenementManuel.InitAvecFiltreDeBase <CEvenement>(
                    "Libelle",
                    filtreDeBase, true);

                CEvenement evt = new CEvenement(CSc2iWin32DataClient.ContexteCourant);
                if (evt.ReadIfExists(((CActionSur2iLinkExecuterProcess)m_actionEditee).IdEvenement))
                {
                    m_selectionneurEvenementManuel.ElementSelectionne = evt;
                    processPourParametres = null;
                }
            }
            else
            {
                m_panelEvenementManuel.Visible = false;
                m_selectionneurEvenementManuel.ElementSelectionne = null;
            }
            m_chkHideProgress.Checked = ((CActionSur2iLinkExecuterProcess)m_actionEditee).MasquerProgressProcess;
            InitListeFormulesParametres(processPourParametres, m_actionEditee);
        }
Exemplo n.º 14
0
        /// //////////////////////////////////////////////////////////////////
        protected static CResultAErreur ExecuteActionProcess(CActionSur2iLinkExecuterProcess action, object objetCible)
        {
            CResultAErreur result  = CResultAErreur.True;
            CProcessInDb   process = new CProcessInDb(CSc2iWin32DataClient.ContexteCourant);

            if (process.ReadIfExists(action.IdProcessInDb))
            {
                CProcess processToExecute = process.Process;
                result = AffecteVariablesToProcess(action, processToExecute, objetCible);
                if (!result)
                {
                    return(result);
                }
                CInfoDeclencheurProcess infoDecl = new CInfoDeclencheurProcess(TypeEvenement.Manuel);
                CReferenceObjetDonnee   refObj   = null;
                object cibleProcess = objetCible;
                if (cibleProcess is CDefinitionMultiSourceForExpression)
                {
                    cibleProcess = ((CDefinitionMultiSourceForExpression)cibleProcess).ObjetPrincipal;
                }
                if (cibleProcess != null && process.TypeCible != null)
                {
                    if (cibleProcess.GetType().IsArray)
                    {
                        ArrayList lstRefs = new ArrayList();
                        foreach (object cible in (Array)cibleProcess)
                        {
                            if (process.TypeCible.IsAssignableFrom(cible.GetType()) && cible is CObjetDonnee)
                            {
                                lstRefs.Add(new CReferenceObjetDonnee((CObjetDonnee)cible));
                            }
                        }
                        if (lstRefs.Count == 0)
                        {
                            result.EmpileErreur(I.T("No element selected for requested action|30085"));
                        }
                        else
                        {
                            result = CFormExecuteProcess.StartProcessMultiples(processToExecute,
                                                                               (CReferenceObjetDonnee[])lstRefs.ToArray(typeof(CReferenceObjetDonnee)),
                                                                               CTimosApp.SessionClient.IdSession,
                                                                               CSc2iWin32DataClient.ContexteCourant.IdVersionDeTravail,
                                                                               action.MasquerProgressProcess);
                            return(result);
                        }
                    }
                    else
                    {
                        if (process.TypeCible.IsAssignableFrom(cibleProcess.GetType()) && cibleProcess is CObjetDonnee)
                        {
                            refObj = new CReferenceObjetDonnee((CObjetDonnee)cibleProcess);
                        }
                    }
                }
                result = CFormExecuteProcess.StartProcess(processToExecute,
                                                          refObj,
                                                          CTimosApp.SessionClient.IdSession,
                                                          CSc2iWin32DataClient.ContexteCourant.IdVersionDeTravail,
                                                          action.MasquerProgressProcess);
            }
            else
            {
                CEvenement evt = new CEvenement(CSc2iWin32DataClient.ContexteCourant);
                CInfoDeclencheurProcess infoDecl = new CInfoDeclencheurProcess(TypeEvenement.Manuel);
                object cibleProcess = objetCible;
                if (cibleProcess is CDefinitionMultiSourceForExpression)
                {
                    cibleProcess = ((CDefinitionMultiSourceForExpression)cibleProcess).ObjetPrincipal;
                }
                if (evt.ReadIfExists(action.IdEvenement))
                {
                    if (cibleProcess == null)
                    {
                        result.EmpileErreur(I.T("Impossible to execute the requested event|30086"));
                        return(result);
                    }
                    if (cibleProcess.GetType().IsArray)
                    {
                        ArrayList lstRefs = new ArrayList();
                        foreach (object cible in (Array)cibleProcess)
                        {
                            if (!(cible is CObjetDonneeAIdNumerique) || !evt.ShouldDeclenche((CObjetDonneeAIdNumerique)cible, ref infoDecl))
                            {
                                result.EmpileErreur(I.T("The requested action cannot be executed on at least one of the requested elements|30087"));
                                return(result);
                            }
                            lstRefs.Add(cible);
                        }
                        if (lstRefs.Count == 0)
                        {
                            result.EmpileErreur(I.T("No element selected for execution|30088"));
                            return(result);
                        }
                        result = CFormExecuteProcess.RunEventMultiple(
                            evt,
                            (CObjetDonneeAIdNumeriqueAuto[] )lstRefs.ToArray(typeof(CObjetDonneeAIdNumeriqueAuto)),
                            action.MasquerProgressProcess);
                    }
                    else
                    {
                        if (!evt.ShouldDeclenche((CObjetDonneeAIdNumerique)cibleProcess, ref infoDecl))
                        {
                            result.EmpileErreur(I.T("Impossible to trigger the requested event on this object|30089"));
                            return(result);
                        }
                        result = CFormExecuteProcess.RunEvent(evt, (CObjetDonneeAIdNumerique)cibleProcess, action.MasquerProgressProcess);
                    }
                }
                else
                {
                    result.EmpileErreur(I.T("The requested action does not exist|30090"));
                }
            }
            return(result);
        }
Exemplo n.º 15
0
 //-------------------------------------------------------------------------
 public CFormEditionProcess(CProcessInDb espece, CListeObjetsDonnees liste)
     : base(espece, liste)
 {
     InitializeComponent();
 }
Exemplo n.º 16
0
 //-------------------------------------------------------------------------
 public CFormEditionProcess(CProcessInDb process)
     : base(process)
 {
     InitializeComponent();
 }
Exemplo n.º 17
0
        /* les parametres sont passés dans le table de paramètres :
         * Id de la variable, suivi de sa valeur( en texte ),...
         *
         */
        public string StartAction(int nIdAction, string[] strParametres)
        {
            DataSet ds = new DataSet();

            if (!AssureSession())
            {
                return("ERROR : " + I.T("Session error|30002"));
            }
            if ((strParametres.Length % 2) != 0)
            {
                return("ERROR : " + I.T("The parameters are not passed correctly|30003"));
            }

            using (CContexteDonnee contexte = new CContexteDonnee(m_session.IdSession, true, false))
            {
                CProcessInDb processInDb = new CProcessInDb(contexte);
                if (!processInDb.ReadIfExists(nIdAction))
                {
                    return("ERROR : " + I.T("The action @1 does not exist|30004", nIdAction.ToString()));
                }

                CProcess process = processInDb.Process;
                #region Affectation des variables du process
                for (int nVariable = 0; nVariable < strParametres.Length; nVariable += 2)
                {
                    string             strVariable = strParametres[nVariable];
                    IVariableDynamique variable    = null;
                    try
                    {
                        variable = process.GetVariable(strVariable);
                    }
                    catch
                    {
                        foreach (CVariableDynamique varTest in process.ListeVariables)
                        {
                            if (varTest.Nom.ToUpper() == strVariable.ToUpper())
                            {
                                variable = varTest;
                                break;
                            }
                        }
                        if (variable == null)
                        {
                            return("ERROR : " + I.T("@1 is not a valid variable id|30005", strVariable));
                        }
                    }
                    if (!(variable is CVariableDynamiqueSaisie))
                    {
                        return("ERROR : " + I.T("The variable @1 is not valid or does not exist|30006", strVariable));
                    }

                    try
                    {
                        object valeur = ((CVariableDynamiqueSaisie)variable).TypeDonnee2i.StringToType(strParametres[nVariable + 1], null);
                        process.SetValeurChamp(variable, valeur);
                    }
                    catch
                    {
                        return("ERROR : " + I.T("Error in affectation of variable @1|30007", variable.Nom));
                    }
                }
                #endregion

                //Note : le service web ne sait pas lancer un process dans une version
                CResultAErreur result = CProcessEnExecutionInDb.StartProcess(process, new CInfoDeclencheurProcess(TypeEvenement.Manuel), m_session.IdSession, null, null);
                if (!result)
                {
                    return("ERROR : " + result.Erreur.ToString());
                }
                if (result.Data != null)
                {
                    return(result.Data.ToString());
                }
                return(null);
            }
        }
Exemplo n.º 18
0
        //---------------------------------------------------------------------------------------
        public CActionWeb(DataSet ds, CProcessInDb processDb, bool bIsGlobale)
        {
            DataTable dt = ds.Tables[c_nomTable];

            if (dt == null)
            {
                return;
            }

            DataRow row = dt.NewRow();

            int    nId             = -1;
            string strLibelle      = "";
            string strInstructions = "";
            bool   bHasForm        = false;

            // Forecer toutes les valeurs par défaut à chaine vide
            foreach (DataColumn col in dt.Columns)
            {
                if (col.DataType == typeof(string))
                {
                    if (col.ColumnName.Contains("Label"))
                    {
                        row[col] = "hidden";
                    }
                    else
                    {
                        row[col] = "";
                    }
                }
            }

            if (processDb != null)
            {
                nId             = processDb.Id;
                strLibelle      = processDb.Libelle;
                strInstructions = processDb.Description;

                int nIndexTextVar = 1;
                int nIndexIntVar  = 1;
                int nIndexDateVar = 1;
                int nIndexBoolVar = 1;

                // Remplissage des variables
                CProcess process = processDb.Process;
                if (process != null)
                {
                    CActionFormulaire actionFormulaire = null;
                    foreach (CAction action in process.ListeActions)
                    {
                        if (action is CActionFormulaire)
                        {
                            // On trouve le premier bloc Formulaire
                            actionFormulaire = (CActionFormulaire)action;
                            break;
                        }
                    }


                    if (actionFormulaire != null)
                    {
                        bHasForm = true;
                        C2iWndFenetre fenetre   = actionFormulaire.Formulaire;
                        ArrayList     lstChilds = fenetre.AllChilds();

                        List <C2iWndVariable> lstWndVariables = new List <C2iWndVariable>();
                        foreach (object objWnd in lstChilds)
                        {
                            if (objWnd is C2iWndVariable)
                            {
                                lstWndVariables.Add((C2iWndVariable)objWnd);
                            }
                        }
                        lstWndVariables = lstWndVariables.OrderBy(v => v.WebNumOrder).ToList();

                        foreach (C2iWndVariable wndVariable in lstWndVariables)
                        {
                            CVariableDynamique variable = wndVariable.Variable as CVariableDynamique;
                            if (wndVariable.WebLabel != "" && variable != null && variable is CVariableDynamiqueSaisie)
                            {
                                CVariableDynamiqueSaisie variableSaisie = (CVariableDynamiqueSaisie)variable;
                                bool          bIsChoixParmis            = variableSaisie.IsChoixParmis();
                                StringBuilder sbValeurs = new StringBuilder();
                                if (bIsChoixParmis)
                                {
                                    foreach (CValeurVariableDynamiqueSaisie val in variableSaisie.Valeurs)
                                    {
                                        sbValeurs.Append(val.Value + "#" + val.Display + "#");
                                    }
                                    sbValeurs.Remove(sbValeurs.Length - 1, 1);
                                }
                                //string valeurs = sbValeurs.ToString();

                                switch (variableSaisie.TypeDonnee2i.TypeDonnee)
                                {
                                case TypeDonnee.tEntier:
                                    if (nIndexIntVar <= 3)
                                    {
                                        row["IdVarInt" + nIndexIntVar]      = variable.IdVariable;
                                        row["LabelVarInt" + nIndexIntVar]   = wndVariable.WebLabel;
                                        row["ValeursVarInt" + nIndexIntVar] = sbValeurs.ToString();
                                        nIndexIntVar++;
                                    }
                                    break;

                                case TypeDonnee.tDouble:
                                    if (nIndexTextVar <= 9)
                                    {
                                        row["IdVarText" + nIndexTextVar]      = variable.IdVariable;
                                        row["LabelVarText" + nIndexTextVar]   = wndVariable.WebLabel;
                                        row["ValeursVarText" + nIndexTextVar] = sbValeurs.ToString();
                                        nIndexTextVar++;
                                    }
                                    break;

                                case TypeDonnee.tString:
                                    if (nIndexTextVar <= 9)
                                    {
                                        row["IdVarText" + nIndexTextVar]      = variable.IdVariable;
                                        row["LabelVarText" + nIndexTextVar]   = wndVariable.WebLabel;
                                        row["ValeursVarText" + nIndexTextVar] = sbValeurs.ToString();
                                        nIndexTextVar++;
                                    }
                                    break;

                                case TypeDonnee.tDate:
                                    if (nIndexDateVar <= 3)
                                    {
                                        row["IdVarDate" + nIndexDateVar]    = variable.IdVariable;
                                        row["LabelVarDate" + nIndexDateVar] = wndVariable.WebLabel;
                                        nIndexDateVar++;
                                    }
                                    break;

                                case TypeDonnee.tBool:
                                    if (nIndexBoolVar <= 3)
                                    {
                                        row["IdVarBool" + nIndexBoolVar]    = variable.IdVariable;
                                        row["LabelVarBool" + nIndexBoolVar] = wndVariable.WebLabel;
                                        nIndexBoolVar++;
                                    }
                                    break;

                                case TypeDonnee.tObjetDonneeAIdNumeriqueAuto:
                                    break;

                                default:
                                    break;
                                }
                            }
                        }
                    }
                    else
                    {
                        // C'est un process sans formulaire
                        bHasForm = false;
                    }
                }
            }

            row[c_champId]           = nId;
            row[c_champLibelle]      = strLibelle;
            row[c_champInstructions] = strInstructions;
            row[c_champIsGlobale]    = bIsGlobale;
            row[c_champHasForm]      = bHasForm;

            m_row = row;
            dt.Rows.Add(row);
        }
Exemplo n.º 19
0
        //-----------------------------------------------------------
        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);
        }