public WfClientProcessCurrentInfo ServerToClient(WfProcessCurrentInfo server, ref WfClientProcessCurrentInfo client)
        {
            server.NullCheck("server");

            if (client == null)
            {
                client = new WfClientProcessCurrentInfo();
            }

            client.InstanceID = server.InstanceID;
            client.ResourceID = server.ResourceID;

            client.ApplicationName   = server.ApplicationName;
            client.ProgramName       = server.ProgramName;
            client.ProcessName       = server.ProcessName;
            client.DescriptorKey     = server.DescriptorKey;
            client.OwnerActivityID   = server.OwnerActivityID;
            client.OwnerTemplateKey  = server.OwnerTemplateKey;
            client.CurrentActivityID = server.CurrentActivityID;

            client.Sequence  = server.Sequence;
            client.Committed = server.Committed;

            client.CreateTime = server.CreateTime;
            client.StartTime  = server.StartTime;
            client.EndTime    = server.EndTime;
            client.Creator    = (WfClientUser)server.Creator.ToClientOguObject();
            client.Department = (WfClientOrganization)server.Department.ToClientOguObject();
            client.Status     = server.Status.ToClientProcessStatus();
            client.UpdateTag  = server.UpdateTag;

            return(client);
        }
        public WfProcessCurrentInfo ClientToServer(WfClientProcessCurrentInfo client, ref WfProcessCurrentInfo server)
        {
            client.NullCheck("client");

            if (server == null)
            {
                server = new WfProcessCurrentInfo();
            }

            server.InstanceID = client.InstanceID;
            server.ResourceID = client.ResourceID;

            server.ApplicationName = client.ApplicationName;
            server.ProgramName     = client.ProgramName;

            server.DescriptorKey     = client.DescriptorKey;
            server.OwnerActivityID   = client.OwnerActivityID;
            server.OwnerTemplateKey  = client.OwnerTemplateKey;
            server.CurrentActivityID = client.CurrentActivityID;

            server.Sequence  = client.Sequence;
            server.Committed = client.Committed;

            server.CreateTime = client.CreateTime;
            server.StartTime  = client.StartTime;
            server.EndTime    = client.EndTime;
            server.Creator    = (IUser)client.Creator.ToOguObject();
            server.Department = (IOrganization)client.Department.ToOguObject();
            server.Status     = client.Status.ToProcessStatus();
            server.UpdateTag  = client.UpdateTag;

            return(server);
        }
Beispiel #3
0
        public static void AreSame(this WfClientProcessCurrentInfo client, WfProcessCurrentInfo server)
        {
            AssertStringEqual(client.InstanceID, server.InstanceID);
            AssertStringEqual(client.ResourceID, server.ResourceID);

            AssertStringEqual(client.ApplicationName, server.ApplicationName);
            AssertStringEqual(client.ProgramName, server.ProgramName);
            AssertStringEqual(client.ProcessName, server.ProcessName);
            AssertStringEqual(client.DescriptorKey, server.DescriptorKey);
            AssertStringEqual(client.OwnerActivityID, server.OwnerActivityID);
            AssertStringEqual(client.OwnerTemplateKey, server.OwnerTemplateKey);
            AssertStringEqual(client.CurrentActivityID, server.CurrentActivityID);

            Assert.AreEqual(client.Sequence, server.Sequence);
            Assert.AreEqual(client.Committed, server.Committed);

            Assert.AreEqual(client.CreateTime, server.CreateTime);
            Assert.AreEqual(client.StartTime, server.StartTime);
            Assert.AreEqual(client.EndTime, server.EndTime);

            client.Creator.AreSame(server.Creator);
            client.Department.AreSame(server.Department);

            Assert.AreEqual(client.Status, server.Status.ToClientProcessStatus());
            Assert.AreEqual(client.UpdateTag, server.UpdateTag);
        }
        private string GetStatusText(WfProcessCurrentInfo atp, UserIMAddressCollection extendInfo)
        {
            string result = DefaultStatusText;

            switch (DisplayMode)
            {
            case WfStatusDisplayMode.ProcessStatus:
                result = HttpUtility.HtmlEncode(EnumItemDescriptionAttribute.GetDescription(atp.Status));
                break;

            case WfStatusDisplayMode.CurrentUsers:
                if (EnableUserPresence == false)
                {
                    result = GetAllAssigneesStatusHtmlWithoutPresence(atp);
                }
                else
                {
                    result = GetAllAssigneesStatusHtmlWithPresence(atp, IsHtmlRender, extendInfo, this.ClientID);
                }

                break;
            }

            return(result);
        }
        private Control CreateStatusDisplayControl(WfProcessCurrentInfo atp, UserIMAddressCollection extendInfo)
        {
            HtmlGenericControl Container = new HtmlGenericControl("span");

            HtmlGenericControl firstLine = new HtmlGenericControl("span");

            Container.Controls.Add(firstLine);

            HtmlAnchor statusAnchor = new HtmlAnchor();

            firstLine.Controls.Add(statusAnchor);

            statusAnchor.InnerHtml = GetStatusText(atp, extendInfo);
            statusAnchor.HRef      = "#";

            string deptName = atp.Department.DisplayName;

            statusAnchor.Title = GetAllAssigneesStatusText(atp);
            statusAnchor.Attributes["onclick"] = "onWfStatusLinkClick()";

            HtmlGenericControl seperator = new HtmlGenericControl("span");

            firstLine.Controls.Add(seperator);

            seperator.InnerHtml = " ";

            PageRenderMode mode = WebUtility.GetRequestPageRenderMode();

            if (mode.IsHtmlRender)
            {
                HtmlAnchor traceAnchor = new HtmlAnchor();
                firstLine.Controls.Add(traceAnchor);

                HtmlImage logo = new HtmlImage();
                traceAnchor.Controls.Add(logo);

                logo.Style["border"] = "none";

                logo.Alt = Translator.Translate(Define.DefaultCulture, "流程跟踪...");

                logo.Style["vertical-align"] = "middle";
                logo.Src = GetImageByStatus(atp.Status);

                InitTraceControlEntry(traceAnchor, atp.ResourceID, atp.InstanceID);
            }

            HtmlGenericControl secondLine = new HtmlGenericControl("div");

            Container.Controls.Add(secondLine);

            secondLine.Controls.Add(CreateDetailControl(atp, extendInfo));

            secondLine.Style["display"] = "none";

            return(Container);
        }
        public void ProcessCurrentInfoToClientTest()
        {
            IWfProcess process = PrepareProcess();

            WfProcessCurrentInfo server = WfProcessCurrentInfoAdapter.Instance.LoadByProcessID(process.ID).FirstOrDefault();

            WfClientProcessCurrentInfo client = null;

            WfClientProcessCurrentInfoConverter.Instance.ServerToClient(server, ref client);

            client.AreSame(server);
        }
        private static string GetAllAssigneesStatusText(WfProcessCurrentInfo atp)
        {
            StringBuilder strB = new StringBuilder();

            foreach (var assignee in atp.Assignees)
            {
                strB.AppendFormat("{0}({1})",
                                  assignee.User.DisplayName,
                                  GetUserTopOUName(assignee.User));
            }

            return(strB.ToString());
        }
        private static string GetAllAssigneesStatusHtmlWithoutPresence(WfProcessCurrentInfo atp)
        {
            HtmlGenericControl span = new HtmlGenericControl("span");

            foreach (var assignee in atp.Assignees)
            {
                span.InnerHtml = string.Format("{0}({1})",
                                               HttpUtility.HtmlEncode(assignee.User.DisplayName),
                                               HttpUtility.HtmlEncode(assignee.User.TopOU.DisplayName));
            }

            return(WebControlUtility.GetControlHtml(span));
        }
        private Control CreateDetailControl(WfProcessCurrentInfo atp, UserIMAddressCollection extendInfo)
        {
            HtmlGenericControl subContainer = new HtmlGenericControl("div");

            HtmlGenericControl divActivtity = new HtmlGenericControl("div");

            subContainer.Controls.Add(divActivtity);

            HtmlGenericControl divUserInfo = new HtmlGenericControl("div");

            subContainer.Controls.Add(divUserInfo);

            divUserInfo.InnerHtml = GetAllAssigneesStatusHtmlWithPresence(atp, IsHtmlRender, extendInfo, this.ClientID + "_DETAIL");

            return(subContainer);
        }
        public void ProcessCurrentInfoSerializationTest()
        {
            WfClientJsonConverterHelper.Instance.RegisterConverters();

            IWfProcess process = PrepareProcess();

            WfProcessCurrentInfo server = WfProcessCurrentInfoAdapter.Instance.LoadByProcessID(process.ID).FirstOrDefault();

            WfClientProcessCurrentInfo client = null;

            WfClientProcessCurrentInfoConverter.Instance.ServerToClient(server, ref client);

            string data = JSONSerializerExecute.Serialize(client);

            Console.WriteLine(data);

            WfClientProcessCurrentInfo deserialized = JSONSerializerExecute.Deserialize <WfClientProcessCurrentInfo>(data);

            client.AreSame(deserialized);
        }
        private void RenderStatus(WfProcessCurrentInfoCollection atpc, UserIMAddressCollection extendInfo, HtmlTextWriter writer)
        {
            WfProcessCurrentInfo atp = null;

            if (this.ProcessID.IsNotEmpty())
            {
                atp = atpc.Find(a => string.Compare(a.InstanceID, this.ProcessID, true) == 0);
            }
            else
            {
                if (this.ResourceID.IsNotEmpty())
                {
                    atp = atpc.Find(a => string.Compare(a.ResourceID, this.ResourceID, true) == 0);
                }
            }

            if (atp != null)
            {
                writer.Write(WebControlUtility.GetControlHtml(CreateStatusDisplayControl(atp, extendInfo)));
            }
        }
Beispiel #12
0
        private static string GetAllAssigneesStatusHtmlWithPresence(WfProcessCurrentInfo atp, bool showStatusImage, UserIMAddressCollection extendInfo, string idPrefix)
        {
            HtmlGenericControl span = new HtmlGenericControl("span");

            int i = 0;

            foreach (var assignee in atp.Assignees)
            {
                //span.InnerHtml +=
                //    UserPresence.GetUsersPresenceHtml(assignee.User.ID, assignee.User.DisplayName.IsNullOrEmpty() ? assignee.User.Name : assignee.User.DisplayName,
                //                                      idPrefix + "_img_" + i, showStatusImage, false, true, StatusImageType.Ball, "", extendInfo);

                //string topOUName = GetUserTopOUName(assignee.User);

                //if (topOUName.IsNotEmpty())
                //    span.InnerHtml += string.Format("({0})", HttpUtility.HtmlEncode(topOUName));

                i++;
            }

            return(GetControlHtml(span));
        }
        private string GetStatusText(WfProcessCurrentInfo atp, UserIMAddressCollection extendInfo)
        {
            string result = DefaultStatusText;

            switch (DisplayMode)
            {
                case WfStatusDisplayMode.ProcessStatus:
                    result = HttpUtility.HtmlEncode(EnumItemDescriptionAttribute.GetDescription(atp.Status));
                    break;
                case WfStatusDisplayMode.CurrentUsers:
                    if (EnableUserPresence == false)
                        result = GetAllAssigneesStatusHtmlWithoutPresence(atp);
                    else
                        result = GetAllAssigneesStatusHtmlWithPresence(atp, IsHtmlRender, extendInfo, this.ClientID);

                    break;
            }

            return result;
        }
        public static void AreSame(this WfClientProcessCurrentInfo client, WfProcessCurrentInfo server)
        {
            AssertStringEqual(client.InstanceID, server.InstanceID);
            AssertStringEqual(client.ResourceID, server.ResourceID);

            AssertStringEqual(client.ApplicationName, server.ApplicationName);
            AssertStringEqual(client.ProgramName, server.ProgramName);
            AssertStringEqual(client.ProcessName, server.ProcessName);
            AssertStringEqual(client.DescriptorKey, server.DescriptorKey);
            AssertStringEqual(client.OwnerActivityID, server.OwnerActivityID);
            AssertStringEqual(client.OwnerTemplateKey, server.OwnerTemplateKey);
            AssertStringEqual(client.CurrentActivityID, server.CurrentActivityID);

            Assert.AreEqual(client.Sequence, server.Sequence);
            Assert.AreEqual(client.Committed, server.Committed);

            Assert.AreEqual(client.CreateTime, server.CreateTime);
            Assert.AreEqual(client.StartTime, server.StartTime);
            Assert.AreEqual(client.EndTime, server.EndTime);

            client.Creator.AreSame(server.Creator);
            client.Department.AreSame(server.Department);

            Assert.AreEqual(client.Status, server.Status.ToClientProcessStatus());
            Assert.AreEqual(client.UpdateTag, server.UpdateTag);
        }
        private static string GetAllAssigneesStatusText(WfProcessCurrentInfo atp)
        {
            StringBuilder strB = new StringBuilder();

            foreach (var assignee in atp.Assignees)
            {
                strB.AppendFormat("{0}({1})",
                    assignee.User.DisplayName,
                    GetUserTopOUName(assignee.User));
            }

            return strB.ToString();
        }
        private static string GetAllAssigneesStatusHtmlWithoutPresence(WfProcessCurrentInfo atp)
        {
            HtmlGenericControl span = new HtmlGenericControl("span");

            foreach (var assignee in atp.Assignees)
            {
                span.InnerHtml = string.Format("{0}({1})",
                    HttpUtility.HtmlEncode(assignee.User.DisplayName),
                    HttpUtility.HtmlEncode(assignee.User.TopOU.DisplayName));
            }

            return WebControlUtility.GetControlHtml(span);
        }
        private static string GetAllAssigneesStatusHtmlWithPresence(WfProcessCurrentInfo atp, bool showStatusImage, UserIMAddressCollection extendInfo, string idPrefix)
        {
            HtmlGenericControl span = new HtmlGenericControl("span");

            int i = 0;
            foreach (var assignee in atp.Assignees)
            {
                span.InnerHtml +=
                    UserPresence.GetUsersPresenceHtml(assignee.User.ID, assignee.User.DisplayName.IsNullOrEmpty() ? assignee.User.Name : assignee.User.DisplayName,
                                                      idPrefix + "_img_" + i, showStatusImage, false, true, StatusImageType.Ball, "", extendInfo);

                string topOUName = GetUserTopOUName(assignee.User);

                if (topOUName.IsNotEmpty())
                    span.InnerHtml += string.Format("({0})", HttpUtility.HtmlEncode(topOUName));

                i++;
            }

            return WebControlUtility.GetControlHtml(span);
        }
        private Control CreateStatusDisplayControl(WfProcessCurrentInfo atp, UserIMAddressCollection extendInfo)
        {
            HtmlGenericControl Container = new HtmlGenericControl("span");

            HtmlGenericControl firstLine = new HtmlGenericControl("span");
            Container.Controls.Add(firstLine);

            HtmlAnchor statusAnchor = new HtmlAnchor();
            firstLine.Controls.Add(statusAnchor);

            statusAnchor.InnerHtml = GetStatusText(atp, extendInfo);
            statusAnchor.HRef = "#";

            string deptName = atp.Department.DisplayName;

            statusAnchor.Title = GetAllAssigneesStatusText(atp);
            statusAnchor.Attributes["onclick"] = "onWfStatusLinkClick()";

            HtmlGenericControl seperator = new HtmlGenericControl("span");
            firstLine.Controls.Add(seperator);

            seperator.InnerHtml = "&nbsp;";

            PageRenderMode mode = WebUtility.GetRequestPageRenderMode();

            if (mode.IsHtmlRender)
            {
                HtmlAnchor traceAnchor = new HtmlAnchor();
                firstLine.Controls.Add(traceAnchor);

                HtmlImage logo = new HtmlImage();
                traceAnchor.Controls.Add(logo);

                logo.Style["border"] = "none";

                logo.Alt = Translator.Translate(Define.DefaultCulture, "流程跟踪...");

                logo.Style["vertical-align"] = "middle";
                logo.Src = GetImageByStatus(atp.Status);

                InitTraceControlEntry(traceAnchor, atp.ResourceID, atp.InstanceID);
            }

            HtmlGenericControl secondLine = new HtmlGenericControl("div");
            Container.Controls.Add(secondLine);

            secondLine.Controls.Add(CreateDetailControl(atp, extendInfo));

            secondLine.Style["display"] = "none";

            return Container;
        }
        private Control CreateDetailControl(WfProcessCurrentInfo atp, UserIMAddressCollection extendInfo)
        {
            HtmlGenericControl subContainer = new HtmlGenericControl("div");

            HtmlGenericControl divActivtity = new HtmlGenericControl("div");
            subContainer.Controls.Add(divActivtity);

            HtmlGenericControl divUserInfo = new HtmlGenericControl("div");
            subContainer.Controls.Add(divUserInfo);

            divUserInfo.InnerHtml = GetAllAssigneesStatusHtmlWithPresence(atp, IsHtmlRender, extendInfo, this.ClientID + "_DETAIL");

            return subContainer;
        }