Example #1
0
        /// <summary>
        /// Start Workflow.
        /// </summary>
        /// <param name="AD_Workflow_ID">AD_Workflow_ID </param>
        /// <returns>true if started</returns>
        private bool StartWorkflow(int AD_Workflow_ID)
        {
            //Remote process not implemented
            //Only local process is implemented
            //log.Fine(AD_Workflow_ID + " - " + _pi.ToString());
            bool started = false;

            //	Run locally
            if (!started)
            {
                MWorkflow  WF        = new MWorkflow(_ctx, AD_Workflow_ID, null);
                MWFProcess wfProcess = null;
                if (_pi.IsBatch())
                {
                    wfProcess = WF.Start(_pi);          //	may return null
                }
                else
                {
                    wfProcess = WF.StartWait(_pi);      //	may return null
                }
                started = wfProcess != null;
            }

            return(started);
        }
Example #2
0
        /// <summary>
        /// Run Workflow (and wait) on Server
        /// @ejb.interface-method view-type="both"
        /// </summary>
        /// <param name="ctx"></param>
        /// <param name="pi"></param>
        /// <param name="AD_Workflow_ID"></param>
        /// <returns></returns>
        public ProcessInfo Workflow(Ctx ctx, ProcessInfo pi, int AD_Workflow_ID)
        {
            log.Info("[" + _no + "] " + AD_Workflow_ID);
            _workflowCount++;
            MWorkflow  wf        = MWorkflow.Get(ctx, AD_Workflow_ID);
            MWFProcess wfProcess = null;

            if (pi.IsBatch())
            {
                wfProcess = wf.Start(pi);       //	may return null
            }
            else
            {
                wfProcess = wf.StartWait(pi);   //	may return null
            }
            log.Fine(pi.ToString());
            return(pi);
        }
Example #3
0
        /// <summary>
        /// Assign/UnAssign workflow from group to role
        /// </summary>
        /// <param name="AD_Group_ID"></param>
        /// <param name="AD_Role_ID"></param>
        /// <param name="grantAccess"></param>
        private void ProvideWorkflowAccessToRole(int AD_Group_ID, int AD_Role_ID, bool grantAccess)
        {
            string                 sql                    = "SELECT AD_Workflow_ID from AD_Group_Workflow WHERE IsActive='Y' AND AD_GroupInfo_ID=" + AD_Group_ID;
            DataSet                ds                     = DB.ExecuteDataset(sql);
            List <int>             groupWindowIDs         = new List <int>();
            Dictionary <int, bool> roleWindowIDsDictinary = new Dictionary <int, bool>();
            StringBuilder          winIDs                 = new StringBuilder();

            if (ds != null && ds.Tables[0].Rows.Count > 0)
            {
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    if (ds.Tables[0].Rows[i]["AD_Workflow_ID"] != null && ds.Tables[0].Rows[i]["AD_Workflow_ID"] != DBNull.Value)
                    {
                        if (winIDs.Length > 0)
                        {
                            winIDs.Append(",");
                        }
                        winIDs.Append(ds.Tables[0].Rows[i]["AD_Workflow_ID"].ToString());
                        groupWindowIDs.Add(Convert.ToInt32(ds.Tables[0].Rows[i]["AD_Workflow_ID"]));
                    }
                }

                groupWindowIDs.Sort();

                sql = "SELECT AD_Workflow_ID,IsReadWrite FROM AD_workflow_Access WHERE AD_Role_ID=" + AD_Role_ID + " AND AD_Workflow_ID IN(" + winIDs.ToString() + ")";
                ds  = DB.ExecuteDataset(sql);
                if (ds != null && ds.Tables[0].Rows.Count > 0)
                {
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        roleWindowIDsDictinary[Convert.ToInt32(ds.Tables[0].Rows[i]["AD_Workflow_ID"])] = ds.Tables[0].Rows[i]["IsReadWrite"].ToString() == "Y" ? true : false;
                    }
                }

                for (int i = 0; i < groupWindowIDs.Count(); i++)
                {
                    MWorkflow       wind    = new MWorkflow(ctx, groupWindowIDs[i], null);
                    MWorkflowAccess wAccess = new MWorkflowAccess(wind, AD_Role_ID);
                    if (roleWindowIDsDictinary.ContainsKey(groupWindowIDs[i]))
                    {
                        if (roleWindowIDsDictinary[groupWindowIDs[i]] != grantAccess)
                        {
                            //wAccess.SetIsReadWrite(grantAccess);
                            //wAccess.Save();
                            if (grantAccess)
                            {
                                sql = "UPDATE AD_Workflow_Access Set IsReadWrite='Y',IsActive='Y' WHERE AD_Workflow_ID=" + groupWindowIDs[i] + " AND AD_Role_ID=" + AD_Role_ID;
                            }
                            else
                            {
                                sql = "UPDATE AD_Workflow_Access Set IsReadWrite='N',IsActive='N' WHERE AD_Workflow_ID=" + groupWindowIDs[i] + " AND AD_Role_ID=" + AD_Role_ID;
                            }
                            DB.ExecuteQuery(sql, null, null);
                        }
                    }
                    else
                    {
                        wAccess.SetAD_Client_ID(ctx.GetAD_Client_ID());
                        wAccess.SetAD_Org_ID(ctx.GetAD_Org_ID());
                        wAccess.SetAD_Role_ID(AD_Role_ID);
                        wAccess.SetAD_Workflow_ID(groupWindowIDs[i]);
                        wAccess.SetIsReadWrite(grantAccess);
                        wAccess.Save();
                    }
                }
            }
        }