public List <WfClientProcess> GetProcessesByResourceID(string resourceID, WfClientUser user, WfClientProcessInfoFilter filter)
        {
            resourceID.CheckStringIsNullOrEmpty("resourceID");

            OperationContext.Current.FillContextToOguServiceContext();

            WfProcessCollection processes = WfRuntime.GetProcessByResourceID(resourceID).SortByUserRelativity((IUser)user.ToOguObject());

            WfClientProcessConverter converter = new WfClientProcessConverter(filter);

            List <WfClientProcess> result = new List <WfClientProcess>();

            foreach (IWfProcess process in processes)
            {
                WfClientProcess client = null;

                converter.ServerToClient(process, ref client);

                client.AuthorizationInfo = WfClientProcessInfoBaseConverter.Instance.GetAuthorizationInfo(process, process.CurrentActivity, user);

                if ((filter & WfClientProcessInfoFilter.CurrentOpinion) == WfClientProcessInfoFilter.CurrentOpinion)
                {
                    client.FillCurrentOpinion(process.CurrentActivity, user);
                }

                result.Add(client);
            }

            return(result);
        }
        public void SimpleProcessWithMainStreamSerializationTest()
        {
            WfClientJsonConverterHelper.Instance.RegisterConverters();

            WfClientUser[] users = new WfClientUser[] { Consts.Users["Requestor"] };

            IWfProcess process = ProcessHelper.CreateFreeStepsProcessInstance(users.ToOguObjects <WfClientUser, IUser>().ToArray());

            WfClientProcess client = null;

            WfClientProcessConverter.InstanceAllInfo.ServerToClient(process, ref client);

            Assert.IsNotNull(client.InitialActivity);
            Assert.IsNotNull(client.CompletedActivity);
            Assert.IsNotNull(client.MainStream);
            Assert.IsTrue(client.ApplicationRuntimeParameters.Count > 0);

            string data = JSONSerializerExecute.Serialize(client);

            Console.WriteLine(data);

            WfClientProcess deserializedProcess = JSONSerializerExecute.Deserialize <WfClientProcess>(data);

            Assert.IsNotNull(deserializedProcess.InitialActivity);
            Assert.IsNotNull(deserializedProcess.CompletedActivity);
            Assert.IsNotNull(deserializedProcess.MainStream);
            Assert.IsTrue(deserializedProcess.ApplicationRuntimeParameters.Count > 0);

            Assert.AreEqual(deserializedProcess.InitialActivity.ID, deserializedProcess.CurrentActivity.ID);
        }
        public override object Deserialize(IDictionary <string, object> dictionary, Type type, JavaScriptSerializer serializer)
        {
            WfClientUserResourceDescriptor userResourceDesp = (WfClientUserResourceDescriptor)base.Deserialize(dictionary, type, serializer);
            WfClientUser user = JSONSerializerExecute.Deserialize <WfClientUser>(dictionary.GetValue("user", (object)null));

            userResourceDesp.User = user;

            return(userResourceDesp);
        }
        public WfClientProcessCollection GetProcessByResourceID(string resourceID, WfClientUser user, WfClientProcessInfoFilter filter)
        {
            List <WfClientProcess> processes = this.SingleCall(action => action.GetProcessesByResourceID(resourceID, user, filter));

            WfClientProcessCollection result = new WfClientProcessCollection();

            result.CopyFrom(processes);

            return(result);
        }
        public WfClientProcessInfo GetProcessInfoByID(string processID, WfClientUser user)
        {
            processID.CheckStringIsNullOrEmpty("processID");

            OperationContext.Current.FillContextToOguServiceContext();

            IWfProcess process = WfRuntime.GetProcessByProcessID(processID);

            return(process.ToClientProcessInfo(user).FillCurrentOpinion(process.CurrentActivity, user));
        }
        /// <summary>
        /// 替换某个活动中的办理人,无论该活动的状态。如果这个人有待办,待办也会被替换。
        /// </summary>
        /// <param name="activityID">需要替换的活动的ID</param>
        /// <param name="originalUser">被替换的人。如果这个属性为null,则替换掉这个活动中所有的指派人和候选人</param>
        /// <param name="targetUsers">替换成的人,如果为null,则不完成替换</param>
        /// <param name="runtimeContext">流转上下文信息</param>
        /// <returns></returns>
        public WfClientProcessInfo ReplaceAssignees(string activityID, WfClientUser originalUser, IEnumerable <WfClientUser> targetUsers, WfClientRuntimeContext runtimeContext)
        {
            List <WfClientUser> targetUsersList = _EmptyClientUserList;

            if (targetUsers != null)
            {
                targetUsersList = new List <WfClientUser>(targetUsers);
            }

            return(this.SingleCall(action => action.ReplaceAssignees(activityID, originalUser, targetUsersList, runtimeContext)));
        }
Beispiel #7
0
        public bool IsSameUser(WfClientUser user)
        {
            bool result = false;

            if (this.User != null && user != null)
            {
                result = string.Compare(this.User.ID, user.ID, true) == 0;
            }

            return(result);
        }
        public WfClientProcessInfo GetProcessInfoByActivityID(string activityID, WfClientUser user)
        {
            activityID.CheckStringIsNullOrEmpty("activityID");

            OperationContext.Current.FillContextToOguServiceContext();

            IWfProcess  process  = WfRuntime.GetProcessByActivityID(activityID);
            IWfActivity activity = process.Activities[activityID];

            return(process.ToClientProcessInfo(activity, user).FillCurrentOpinion(activity, user));
        }
        public WfClientProcessInfo ReplaceAssignees(string activityID, WfClientUser originalUser, List <WfClientUser> targetUsers, WfClientRuntimeContext runtimeContext)
        {
            OperationContext.Current.FillContextToOguServiceContext();

            IWfProcess  process        = WfRuntime.GetProcessByActivityID(activityID);
            IWfActivity targetActivity = process.Activities[activityID];

            ExecuteExecutor(process, runtimeContext,
                            (p) => new WfReplaceAssigneesExecutor(targetActivity, targetActivity, (IUser)originalUser.ToOguObject(), targetUsers.ToOguObjects <WfClientUser, IUser>()));

            return(process.ToClientProcessInfo(runtimeContext.Operator).FillCurrentOpinion(process.CurrentActivity, runtimeContext.Operator));
        }
Beispiel #10
0
        public static void Output(this WfClientUser user, string title)
        {
            if (user != null)
            {
                if (title.IsNotEmpty())
                {
                    Console.Write("{0}: ", title);
                }

                Console.WriteLine("User ID = {1}, User Name = {2}", title, user.ID, user.Name);
            }
        }
        private static WfProcessDescriptorInfo PrepareServerData()
        {
            WfClientUser[] users = new WfClientUser[] { Consts.Users["Requestor"] };

            IWfProcessDescriptor processDesp = ProcessHelper.CreateFreeStepsProcess(users.ToOguObjects <WfClientUser, IUser>().ToArray());

            WfSqlProcessDescriptorManager manager = new WfSqlProcessDescriptorManager();

            manager.SaveDescriptor(processDesp);
            WfProcessDescriptorInfo server = WfProcessDescriptorInfoAdapter.Instance.Load(processDesp.Key);

            return(server);
        }
        private static IWfProcess PrepareProcess()
        {
            WfClientUser[] users = new WfClientUser[] { Consts.Users["Requestor"] };

            IWfProcessDescriptor processDesp = ProcessHelper.CreateFreeStepsProcess(users.ToOguObjects <WfClientUser, IUser>().ToArray());

            WfProcessStartupParams startupParams = ProcessHelper.GetInstanceOfWfProcessStartupParams(processDesp);

            IWfProcess process = WfRuntime.StartWorkflow(startupParams);

            WfRuntime.PersistWorkflows();

            return(process);
        }
Beispiel #13
0
        private static void FillPersonInfo(WfClientOpinion opinion, WfClientUser user, WfClientUser delegateUser)
        {
            if (delegateUser == null)
            {
                delegateUser = user;
            }

            if (user != null)
            {
                opinion.IssuePersonID   = user.ID;
                opinion.IssuePersonName = user.DisplayName;

                opinion.AppendPersonID   = delegateUser.ID;
                opinion.AppendPersonName = delegateUser.DisplayName;
            }
        }
        /// <summary>
        /// 查找某个用户的委托人,如果没有找到,则返回自己
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public WfClientUser FindDelegator(WfClientUser user)
        {
            user.NullCheck("user");

            WfClientUser result = user;

            foreach (WfClientAssignee assignee in this)
            {
                if (assignee.User != null && string.Compare(user.ID, assignee.User.ID, true) == 0)
                {
                    if (assignee.Delegator != null)
                    {
                        result = assignee.Delegator;
                    }
                }
            }

            return(result);
        }
Beispiel #15
0
        /// <summary>
        /// 得到在当前活动的意见信息
        /// </summary>
        /// <param name="originalActivity"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public WfClientOpinion GetUserActivityOpinion(IWfActivity originalActivity, WfClientUser user)
        {
            WfClientOpinion opinion = null;

            if (originalActivity != null && user != null)
            {
                WhereSqlClauseBuilder builder = new WhereSqlClauseBuilder();

                builder.AppendItem("ACTIVITY_ID", originalActivity.ID);
                builder.AppendItem("ISSUE_PERSON_ID", user.ID);

                GenericOpinion serverOpinion = GenericOpinionAdapter.Instance.LoadByBuilder(builder).FirstOrDefault();

                if (serverOpinion != null)
                {
                    WfClientOpinionConverter.Instance.ServerToClient(serverOpinion, ref opinion);
                }
            }

            return(opinion);
        }
        public WfClientProcess GetProcessByID(string processID, WfClientUser user, WfClientProcessInfoFilter filter)
        {
            processID.CheckStringIsNullOrEmpty("processID");

            OperationContext.Current.FillContextToOguServiceContext();

            IWfProcess process = WfRuntime.GetProcessByProcessID(processID);

            WfClientProcess client = null;

            new WfClientProcessConverter(filter).ServerToClient(process, ref client);

            client.AuthorizationInfo = WfClientProcessInfoBaseConverter.Instance.GetAuthorizationInfo(process, process.CurrentActivity, user);

            if ((filter & WfClientProcessInfoFilter.CurrentOpinion) == WfClientProcessInfoFilter.CurrentOpinion)
            {
                client.FillCurrentOpinion(process.CurrentActivity, user);
            }

            return(client);
        }
        public void SimpleProcessServerInstanceToClientTest()
        {
            WfClientUser[] users = new WfClientUser[] { Consts.Users["Requestor"] };

            IWfProcessDescriptor processDesp = ProcessHelper.CreateFreeStepsProcess(users.ToOguObjects <WfClientUser, IUser>().ToArray());

            WfProcessStartupParams startupParams = ProcessHelper.GetInstanceOfWfProcessStartupParams(processDesp);

            IWfProcess process = WfRuntime.StartWorkflow(startupParams);

            process.Context["Context"] = "This is a context";

            WfClientProcess client = null;

            WfClientProcessConverter.Instance.ServerToClient(process, ref client);

            Console.WriteLine(client.InitialActivity.ID);
            Console.WriteLine(client.CompletedActivity.ID);
            Console.WriteLine(client.Descriptor.Url);

            Assert.AreEqual(startupParams.DefaultUrl, client.Descriptor.Url);
            Assert.AreEqual(process.Context["Context"], client.ProcessContext["Context"]);
        }
 public WfClientProcessCollection GetProcessByResourceID(string resourceID, WfClientUser user)
 {
     return(this.GetProcessByResourceID(resourceID, user, WfClientProcessInfoFilter.Default));
 }
 public WfClientProcessInfo GetProcessInfoByActivityID(string activityID, WfClientUser user)
 {
     return(this.SingleCall(action => action.GetProcessInfoByActivityID(activityID, user)));
 }
 public WfClientProcess GetProcessByActivityID(string activityID, WfClientUser user)
 {
     return(this.GetProcessByActivityID(activityID, user, WfClientProcessInfoFilter.Default));
 }
 public WfClientProcess GetProcessByID(string processID, WfClientUser user, WfClientProcessInfoFilter filter)
 {
     return(this.SingleCall(action => action.GetProcessByID(processID, user, filter)));
 }
Beispiel #22
0
 public WfClientRuntimeContext(WfClientUser opUser)
 {
     this.Operator = opUser;
 }
Beispiel #23
0
        public WfClientAuthorizationInfo GetAuthorizationInfo(IWfProcess process, IWfActivity originalActivity, WfClientUser user)
        {
            string userID             = user.IsNotNullOrEmpty() ? user.ID : string.Empty;
            string originalActivityID = originalActivity != null ? originalActivity.ID : string.Empty;

            return(GetAuthorizationInfo(process, originalActivityID, userID));
        }
Beispiel #24
0
        public static WfClientProcessInfo ToClientProcessInfo(this IWfProcess process, IWfActivity originalActivity, WfClientUser clientUser)
        {
            process.NullCheck("process");

            WfClientProcessInfo clientProcessInfo = null;

            PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration("ToClientProcessInfo", () =>
            {
                WfClientProcessInfoConverter.Instance.ServerToClient(process, ref clientProcessInfo);

                clientProcessInfo.AuthorizationInfo = WfClientProcessInfoBaseConverter.Instance.GetAuthorizationInfo(process, originalActivity, clientUser);
            });

            return(clientProcessInfo);
        }
Beispiel #25
0
 public static void Output(this WfClientUser user)
 {
     Output(user, string.Empty);
 }
        public List <WfClientProcessInfo> GetProcessesInfoByResourceID(string resourceID, WfClientUser user)
        {
            resourceID.CheckStringIsNullOrEmpty("resourceID");

            OperationContext.Current.FillContextToOguServiceContext();

            WfProcessCollection processes = WfRuntime.GetProcessByResourceID(resourceID).SortByUserRelativity((IUser)user.ToOguObject());

            List <WfClientProcessInfo> result = new List <WfClientProcessInfo>();

            processes.ForEach(process => result.Add(process.ToClientProcessInfo(user).FillCurrentOpinion(process.CurrentActivity, user)));

            return(result);
        }
Beispiel #27
0
 public WfClientUserResourceDescriptor(WfClientUser user)
 {
     this.User = user;
 }
Beispiel #28
0
        public static T FillCurrentOpinion <T>(this T processInfo, IWfActivity originalActivity, WfClientUser user) where T : WfClientProcessInfoBase
        {
            if (processInfo != null)
            {
                processInfo.CurrentOpinion = WfClientProcessInfoBaseConverter.Instance.GetUserActivityOpinion(originalActivity, user);
            }

            return(processInfo);
        }
Beispiel #29
0
 public static WfClientProcessInfo ToClientProcessInfo(this IWfProcess process, WfClientUser clientUser)
 {
     return(ToClientProcessInfo(process, process.CurrentActivity, clientUser));
 }
Beispiel #30
0
        /// <summary>
        /// 把当前环节的信息填充到意见当中
        /// </summary>
        /// <param name="opinion"></param>
        /// <param name="originalActivity"></param>
        /// <param name="user"></param>
        /// <param name="delegatedUser"></param>
        public void FillOpinionInfoByProcessByActivity(WfClientOpinion opinion, IWfActivity originalActivity, WfClientUser user, WfClientUser delegatedUser)
        {
            if (opinion != null && originalActivity != null)
            {
                if (opinion.ID.IsNullOrEmpty())
                {
                    opinion.ID = UuidHelper.NewUuidString();
                }

                opinion.ResourceID = originalActivity.Process.ResourceID;
                opinion.ProcessID  = originalActivity.Process.ID;
                opinion.ActivityID = originalActivity.ID;

                IWfActivity rootActivity = originalActivity.OpinionRootActivity;

                if (rootActivity.Process.MainStream != null && rootActivity.MainStreamActivityKey.IsNotEmpty())
                {
                    opinion.LevelName = rootActivity.MainStreamActivityKey;
                }
                else
                {
                    if (string.IsNullOrEmpty(rootActivity.Descriptor.AssociatedActivityKey))
                    {
                        opinion.LevelName = rootActivity.Descriptor.Key;
                    }
                    else
                    {
                        opinion.LevelName = rootActivity.Descriptor.AssociatedActivityKey;
                    }
                }

                if (rootActivity.Process.MainStream != null)
                {
                    opinion.LevelDesp = rootActivity.Process.MainStream.Activities[opinion.LevelName].Name;
                }
                else
                {
                    opinion.LevelDesp = rootActivity.Descriptor.Process.Activities[opinion.LevelName].Name;
                }

                if (user != null)
                {
                    opinion.IssuePersonID   = user.ID;
                    opinion.IssuePersonName = user.DisplayName;

                    if (originalActivity != null)
                    {
                        IUser delegator = originalActivity.Assignees.FindDelegator((IUser)user.ToOguObject());

                        opinion.IssuePersonID   = delegator.ID;
                        opinion.IssuePersonName = delegator.DisplayName;
                    }

                    if (delegatedUser == null)
                    {
                        delegatedUser = user;
                    }

                    opinion.AppendPersonID   = delegatedUser.ID;
                    opinion.AppendPersonName = delegatedUser.DisplayName;
                }
            }
        }