Beispiel #1
0
        /// <summary>
        /// 生成全文数据对象
        /// </summary>
        /// <returns></returns>
        public override AppCommonInfo ToAppCommonInfo(string content)
        {
            AppCommonInfo commonInfo = new AppCommonInfo();

            if (Data is IBusinessObject)
            {
                IBusinessObject wob = Data as IBusinessObject;
                //commonInfo.ResourceID = wob.ID;
                commonInfo.Subject = wob.Subject;
            }

            if (DeluxePrincipal.IsAuthenticated)
            {
                commonInfo.Creator    = DeluxeIdentity.CurrentUser;
                commonInfo.TopOU      = DeluxeIdentity.CurrentUser.TopOU;
                commonInfo.Department = DeluxeIdentity.CurrentUser.TopOU;
            }

            commonInfo.Content = content;

            if (WfClientContext.Current.OriginalActivity != null)
            {
                commonInfo.ResourceID      = WfClientContext.Current.OriginalActivity.Process.SearchID;
                commonInfo.TopOU           = WfClientContext.Current.User.TopOU;
                commonInfo.Department      = WfClientContext.Current.User.Parent;
                commonInfo.ApplicationName = WfClientContext.Current.OriginalActivity.Process.Descriptor.ApplicationName;
                commonInfo.ProgramName     = WfClientContext.Current.OriginalActivity.Process.Descriptor.ProgramName;
                //commonInfo.Url = string.Format("{0}?resourceID={1}",
                //    WfClientContext.Current.EntryUri.ToString(),
                //    commonInfo.ResourceID);
                commonInfo.Url = string.Format("{0}?resourceID={1}&processID={2}",
                                               WfClientContext.Current.EntryUri.ToString(),
                                               WfClientContext.Current.OriginalActivity.Process.ResourceID,
                                               WfClientContext.Current.OriginalActivity.Process.ID);


                if (WfClientContext.Current.OriginalActivity.Process.OwnerDepartment != null)
                {
                    commonInfo.DraftDepartmentName = WfClientContext.Current.OriginalActivity.Process.OwnerDepartment.GetDepartmentDescription();
                }

                commonInfo.Content += " " + commonInfo.DraftDepartmentName;

                commonInfo.SyncProcessStatus(WfClientContext.Current.OriginalActivity.Process.ApprovalRootProcess);
            }

            return(commonInfo);
        }
        public void AppCommonInfoAdapterTest()
        {
            AppCommonInfoAdapter.Instance.ClearAll();
            AppCommonInfo info = new AppCommonInfo();
            info.ResourceID = "resource1";
            info.Subject = "测试";
            info.CreateTime = DateTime.Now;
            IUser user = (IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object;
            info.Creator = user;

            AppCommonInfoAdapter.Instance.Update(info);
            AppCommonInfo commonInfo = AppCommonInfoAdapter.Instance.Load("resource1");

            AppCommonInfoCollection coll = AppCommonInfoAdapter.Instance.Load(builder => builder.AppendItem("RESOURCE_ID", "resource1"));

            Assert.AreEqual(commonInfo.ResourceID, coll[0].ResourceID);
        }
Beispiel #3
0
        public void AppCommonInfoAdapterTest()
        {
            AppCommonInfoAdapter.Instance.ClearAll();
            AppCommonInfo info = new AppCommonInfo();

            info.ResourceID = "resource1";
            info.Subject    = "测试";
            info.CreateTime = DateTime.Now;
            IUser user = (IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object;

            info.Creator = user;

            AppCommonInfoAdapter.Instance.Update(info);
            AppCommonInfo commonInfo = AppCommonInfoAdapter.Instance.Load("resource1");

            AppCommonInfoCollection coll = AppCommonInfoAdapter.Instance.Load(builder => builder.AppendItem("RESOURCE_ID", "resource1"));

            Assert.AreEqual(commonInfo.ResourceID, coll[0].ResourceID);
        }
Beispiel #4
0
        private static string GetProcessUrl(IWfProcess process)
        {
            string result = string.Empty;

            if (process.CurrentActivity != null)
            {
                UserTaskCollection tasks = UserTaskAdapter.Instance.LoadUserTasks(
                    builder => builder.AppendItem("ACTIVITY_ID", process.CurrentActivity.ID));

                if (tasks.Count > 0)
                {
                    result = tasks[0].NormalizedUrl;
                }
            }

            if (result.IsNullOrEmpty())
            {
                string infoID = process.ResourceID;

                if (AppCommonInfoAdapter.Instance.Exists(infoID) == false)
                {
                    infoID = process.ID;
                }

                if (AppCommonInfoAdapter.Instance.Exists(infoID))
                {
                    AppCommonInfo commonInfo = AppCommonInfoAdapter.Instance.Load(infoID);

                    NameValueCollection uriParams = UriHelper.GetUriParamsCollection(commonInfo.Url);

                    uriParams["processID"] = process.ID;

                    result = UriHelper.CombineUrlParams(commonInfo.Url, uriParams);
                }
            }

            if (result.IsNotEmpty())
            {
                result = UserTask.GetNormalizedUrl(process.Descriptor.ApplicationName, process.Descriptor.ProgramName, result);
            }

            return(result);
        }
        /// <summary>
        /// 从AppCommonInfo中获取,先查ProcessID,再查ResourceID
        /// </summary>
        /// <param name="process"></param>
        /// <returns></returns>
        private static string GetUrlFromAppCommonInfo(IWfProcess process)
        {
            string result = string.Empty;

            string infoID = process.ResourceID;

            if (AppCommonInfoAdapter.Instance.Exists(infoID) == false)
            {
                infoID = process.ID;
            }

            if (AppCommonInfoAdapter.Instance.Exists(infoID))
            {
                AppCommonInfo commonInfo = AppCommonInfoAdapter.Instance.Load(infoID);

                result = commonInfo.Url;
            }

            return(result);
        }
Beispiel #6
0
        /// <summary>
        /// 表单分页查询
        /// </summary>
        /// <param name="startRowIndex"></param>
        /// <param name="maximumRows"></param>
        /// <param name="where"></param>
        /// <param name="orderBy"></param>
        /// <param name="totalCount"></param>
        /// <returns></returns>
        public AppCommonInfoCollection GetFormQueryWithCount(int startRowIndex, int maximumRows, string where, string orderBy, ref int totalCount)
        {
            if (string.IsNullOrEmpty(where))
                where = "1 = 1";

            if (string.IsNullOrEmpty(orderBy))
                orderBy = "CREATE_TIME DESC";

            if (RolesDefineConfig.GetConfig().IsCurrentUserInRoles("ProcessAdmin") == false)
            {
                ConnectiveSqlClauseCollection cscc = WfAclAdapter.Instance.GetAclQueryConditionsByUser(string.Empty);

                string resourceIDList = string.Format("SELECT RESOURCE_ID FROM WF.ACL WHERE {0}", cscc.ToSqlString(TSqlBuilder.Instance));

                where = string.Format("{0} AND ACI.RESOURCE_ID IN ({1})", where, resourceIDList);
            }

            //LDM 加上ACI.PROGRAM_NAME as [PROGRAM_NAME1],
            //兼容远洋地产的查询(表单工作程序里没有对 APPLICATIONFORM_INFO 表插入数据行)
            string strSelect = @" ACI.APPLICATION_NAME,ACI.[PROGRAM_NAME] as [PROGRAM_NAME_MCS],ACI.RESOURCE_ID,ACI.[SUBJECT],ACI.[EMERGENCY]," +
                               "  ACI.URL,ACI.CREATOR_ID, ACI.CREATOR_NAME,ACI.CREATE_TIME,ACI.DRAFT_DEPARTMENT_NAME";

            string strfrom = @" WF.APPLICATIONS_COMMON_INFO as ACI (nolock)";
           

            QueryCondition qc = new QueryCondition(
                       startRowIndex,
                       maximumRows,
                       strSelect,
                       strfrom,
                       orderBy,
                       where
                       );
            CommonAdapter commonAdapter = new CommonAdapter(ConnectionDefine.SearchConnectionName);
            DataSet ds = commonAdapter.SplitPageQuery(qc, totalCount < 0);

            AppCommonInfoCollection FormQueryEntitys = new AppCommonInfoCollection();

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                AppCommonInfo entity = new AppCommonInfo();

                ORMapping.DataRowToObject(row, entity);
                FormQueryEntitys.Add(entity);
            }

            if (ds.Tables.Count > 1)
                totalCount = (int)ds.Tables[1].Rows[0][0];

            HttpContext.Current.Items["UserFormQueryEntityCount"] = totalCount;

            //当页码超出索引的,返回最大页
            if (FormQueryEntitys.Count == 0 && totalCount > 0)
            {
                int newStartRowIndex = (totalCount - 1) / maximumRows * maximumRows;

                totalCount = -1;

                FormQueryEntitys = GetFormQueryWithCount(newStartRowIndex, maximumRows, where, orderBy, ref totalCount);
            }

            return FormQueryEntitys;
        }
Beispiel #7
0
        /// <summary>
        /// 表单分页查询
        /// </summary>
        /// <param name="startRowIndex"></param>
        /// <param name="maximumRows"></param>
        /// <param name="where"></param>
        /// <param name="orderBy"></param>
        /// <param name="totalCount"></param>
        /// <returns></returns>
        public AppCommonInfoCollection GetFormQueryWithCount(int startRowIndex, int maximumRows, string where, string orderBy, ref int totalCount)
        {
            if (string.IsNullOrEmpty(where))
            {
                where = "1 = 1";
            }

            if (string.IsNullOrEmpty(orderBy))
            {
                orderBy = "CREATE_TIME DESC";
            }

            if (RolesDefineConfig.GetConfig().IsCurrentUserInRoles("ProcessAdmin") == false)
            {
                ConnectiveSqlClauseCollection cscc = WfAclAdapter.Instance.GetAclQueryConditionsByUser(string.Empty);

                string resourceIDList = string.Format("SELECT RESOURCE_ID FROM WF.ACL WHERE {0}", cscc.ToSqlString(TSqlBuilder.Instance));

                where = string.Format("{0} AND ACI.RESOURCE_ID IN ({1})", where, resourceIDList);
            }

            //LDM 加上ACI.PROGRAM_NAME as [PROGRAM_NAME1],
            //兼容远洋地产的查询(表单工作程序里没有对 APPLICATIONFORM_INFO 表插入数据行)
            string strSelect = @" ACI.APPLICATION_NAME,ACI.[PROGRAM_NAME] as [PROGRAM_NAME_MCS],ACI.RESOURCE_ID,ACI.[SUBJECT],ACI.[EMERGENCY]," +
                               "  ACI.URL,ACI.CREATOR_ID, ACI.CREATOR_NAME,ACI.CREATE_TIME,ACI.DRAFT_DEPARTMENT_NAME";

            string strfrom = @" WF.APPLICATIONS_COMMON_INFO as ACI (nolock)";


            QueryCondition qc = new QueryCondition(
                startRowIndex,
                maximumRows,
                strSelect,
                strfrom,
                orderBy,
                where
                );
            CommonAdapter commonAdapter = new CommonAdapter(ConnectionDefine.SearchConnectionName);
            DataSet       ds            = commonAdapter.SplitPageQuery(qc, totalCount < 0);

            AppCommonInfoCollection FormQueryEntitys = new AppCommonInfoCollection();

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                AppCommonInfo entity = new AppCommonInfo();

                ORMapping.DataRowToObject(row, entity);
                FormQueryEntitys.Add(entity);
            }

            if (ds.Tables.Count > 1)
            {
                totalCount = (int)ds.Tables[1].Rows[0][0];
            }

            HttpContext.Current.Items["UserFormQueryEntityCount"] = totalCount;

            //当页码超出索引的,返回最大页
            if (FormQueryEntitys.Count == 0 && totalCount > 0)
            {
                int newStartRowIndex = (totalCount - 1) / maximumRows * maximumRows;

                totalCount = -1;

                FormQueryEntitys = GetFormQueryWithCount(newStartRowIndex, maximumRows, where, orderBy, ref totalCount);
            }

            return(FormQueryEntitys);
        }