Esempio n. 1
0
        /// <summary>
        /// Create a proxy for a workflow for embedding within another workflow
        /// </summary>
        /// <param name="workflow"></param>
        public static WorkflowProxy CreateWorkflowProxy(Workflow workflow)
        {
            var proxy = new WorkflowProxy()
            {
                Name = workflow.Name
            };

            proxy.WorkflowToProxy = workflow;

            foreach (var arg in workflow.InputArguments)
            {
                proxy.InputArguments.Add(CloneArgument(arg));
            }

            foreach (var arg in workflow.OutputArguments)
            {
                proxy.OutputArguments.Add(CloneArgument(arg));
            }

            foreach (var exitPoint in workflow.ExitPoints)
            {
                var newEp = Entity.Create <ExitPoint>();
                newEp.Name               = exitPoint.Name;
                newEp.Description        = exitPoint.Description;
                newEp.IsDefaultExitPoint = exitPoint.IsDefaultExitPoint;
                proxy.ExitPoints.Add(newEp);
            }

            return(proxy);
        }
Esempio n. 2
0
        public dynamic GetTaskDetail(string instanceId, string tokenId)
        {
            string            pageDesc    = "";
            string            pageValue   = "";
            var               proxy       = new WorkflowProxy();
            List <Transition> transitions = proxy.GetTransitions(instanceId, tokenId);
            VariableInstance  page        = proxy.GetCurrentTaskSetPage(instanceId, tokenId);

            if (page != null)
            {
                //获取当前流程实例的所有变量,查找和当前节点的pageName相同的变量,取出变量值,该值就是表单的数据
                VariableInstance vars = proxy.GetVariable(instanceId, page.Value.ToString());
                pageValue = vars == null ? pageValue : vars.Value.ToString();

                //var shortName = Path.GetFileName(page.Value.ToString());
                var pageName = page.Value.ToString();
                //获取page desc
                var firstOrDefault = stAnswerRepo.Entities.FirstOrDefault(m => m.TemplateName == pageName);
                if (firstOrDefault != null)
                {
                    pageDesc = firstOrDefault.TemplateDesc;
                }
            }

            return(new { Transitions = transitions, Page = page.Value, PageDesc = pageDesc, PageData = pageValue });
        }
Esempio n. 3
0
 public void TestGetData()
 {
     using (var client = new WorkflowProxy(realWorldEndpoint))
     {
         Assert.Equal("abcaaa", client.Instance.GetData("abc"));
     }
 }
Esempio n. 4
0
        public void BeginExam(BeginExamModel data)
        {
            var proxy = new WorkflowProxy();

            string processName = data.ProcessName;

            //获取下一步的NodeName,用于获取该Node对应的Team和用户列表
            string nodeName = proxy.GetFirstNodeName(processName);

            //获取node对应的用户
            List <User> users = teamRepo.GetAllUsersByNodeName(processName, nodeName);

            foreach (User user in users)
            {
                var processInstance = new ProcessInstance
                {
                    ProcessName = processName,
                    Actor       = user.UserID,
                    ActorName   = user.UserName
                };

                var taskUser = new TaskUser();
                taskUser.UserId   = user.UserID;
                taskUser.UserName = user.UserName;
                taskUser.UserRole = "Student";
                processInstance.IncludeActors.Add(taskUser);
                processInstance = proxy.CreateProcessInstance(processInstance);
                LogHelper.Instanse.WriteInfo(
                    string.Format("发起流程,用户-{0},InstanceID-{1}", taskUser.UserId, processInstance.InstanceID));
            }
        }
Esempio n. 5
0
        public string GetCurrentTokenImage(string instanceId, string tokenId)
        {
            var proxy     = new WorkflowProxy();
            var imageData = proxy.GetCurrentTokenPictureToByte(instanceId, tokenId);

            return(Convert.ToBase64String(imageData));
        }
Esempio n. 6
0
        public string GetProcessImage(string processName)
        {
            var proxy     = new WorkflowProxy();
            var imageData = proxy.GetProcessPictureToByte(processName);

            return(Convert.ToBase64String(imageData));
        }
Esempio n. 7
0
        public void BeginExam(BeginExamModel data)
        {
            var proxy = new WorkflowProxy();

            string processName = data.ProcessName;

            //获取下一步的NodeName,用于获取该Node对应的Team和用户列表
            string nodeName = proxy.GetFirstNodeName(processName);

            //获取node对应的用户
            List<User> users = teamRepo.GetAllUsersByNodeName(processName, nodeName);

            foreach (User user in users)
            {
                var processInstance = new ProcessInstance
                {
                    ProcessName = processName,
                    Actor = user.UserID,
                    ActorName = user.UserName
                };

                var taskUser = new TaskUser();
                taskUser.UserId = user.UserID;
                taskUser.UserName = user.UserName;
                taskUser.UserRole = "Student";
                processInstance.IncludeActors.Add(taskUser);
                processInstance = proxy.CreateProcessInstance(processInstance);
                LogHelper.Instanse.WriteInfo(
                    string.Format("发起流程,用户-{0},InstanceID-{1}", taskUser.UserId, processInstance.InstanceID));
            }
        }
Esempio n. 8
0
        public List <dynamic> GetExportProcess()
        {
            List <dynamic> result      = new List <dynamic>();
            var            proxy       = new WorkflowProxy();
            var            processList = processInfoRepo.Entities.ToList();

            foreach (var p in processList)
            {
                var tasks = proxy.GetProcessAllTask(p.ProcessName);
                foreach (var task in tasks)
                {
                    result.Add(new
                    {
                        p.ProcessName,
                        NodeName = task,
                        TeamName = "",
                        p.Category,
                        p.DifficultyLevel,
                        p.Description,
                        p.InDate,
                        p.InUser,
                        LastEditDate = p.LastEditDate.Value,
                        p.LastEditUser
                    });
                }
            }

            return(result);
        }
Esempio n. 9
0
        public void ProxyCallingItself_bug_17649()
        {
            using (new WorkflowRunContext {
                RunTriggersInCurrentThread = true
            })
            {
                // Inner Workflow
                var wf = new Workflow
                {
                    Name = "ProxyCallingItself_bug_17649 " + DateTime.Now
                };

                var isInnerArg = new BoolArgument()
                {
                    Name = "Is Inner"
                }.As <ActivityArgument>();
                wf.InputArguments.Add(isInnerArg);

                wf.AddDefaultExitPoint();

                var decision = new DecisionActivity()
                {
                    Name = "Is Inner"
                };
                var decisionAs = decision.As <WfActivity>();
                ActivityTestHelper.AddExpressionToActivityArgument(wf, decisionAs, "DecisionArgument", "[Is Inner]", false);

                wf.FirstActivity = decisionAs;
                wf.ContainedActivities.Add(decisionAs);

                WorkflowProxy innerProxy   = ActivityTestHelper.CreateWorkflowProxy(wf);
                var           innerProxyAs = innerProxy.As <WfActivity>();

                wf.ContainedActivities.Add(innerProxyAs);

                ActivityTestHelper.AddMissingExpressionParametersToWorkflow(wf);

                ActivityTestHelper.AddExpressionToActivityArgument(wf, innerProxyAs, "Is Inner", "true", false);

                ActivityTestHelper.AddTransition(wf, decisionAs, innerProxyAs, "No");
                ActivityTestHelper.AddTermination(wf, innerProxyAs);
                ActivityTestHelper.AddTermination(wf, decisionAs, "Yes");

                wf.Save();
                ToDelete.Add(wf.Id);

                wf.Validate();


                var input = new Dictionary <string, object>()
                {
                    { "Is Inner", true }
                };
                var run = (RunWorkflow(wf, input));

                Assert.AreEqual(WorkflowRunState_Enumeration.WorkflowRunCompleted, run.WorkflowRunStatus_Enum, "Finished without errors");
            }
        }
Esempio n. 10
0
        public dynamic GetUserTasks(UserTaskQueryFilter filter)
        {
            var           proxy      = new WorkflowProxy();
            QueryTaskView queryTasks =
                proxy.GetUnProcessTaskByUser(filter.UserId,
                                             filter.PageInfo.PageIndex,
                                             filter.PageInfo.PageSize);

            return(queryTasks);
        }
Esempio n. 11
0
        public dynamic GetAllProcess()
        {
            var proxy      = new WorkflowProxy();
            var allProcess = proxy.GetAllProcessDefinitions();

            var result = allProcess.Select(p => new ProcessWithNodeModel
            {
                ProcessName = p.ProcessName,
                Tasks       = proxy.GetProcessAllTask(p.ProcessName)
            }).ToList();

            return(new { AllProcess = result, Teams = teamRepo.Entities.Select(m => m.TeamName).ToList() });
        }
Esempio n. 12
0
        public dynamic GetAllProcess()
        {
            var proxy = new WorkflowProxy();
            var allProcess = proxy.GetAllProcessDefinitions();

            var result = allProcess.Select(p => new ProcessWithNodeModel
            {
                ProcessName = p.ProcessName,
                Tasks = proxy.GetProcessAllTask(p.ProcessName)
            }).ToList();

            return new { AllProcess = result, Teams = teamRepo.Entities.Select(m => m.TeamName).ToList() };
        }
Esempio n. 13
0
        public dynamic GetUnFinishProcess(QueryFilter filter)
        {
            var proxy = new WorkflowProxy();
            QueryInstanceView queryProcesses =
                proxy.GetFinishedProcess(filter.PageInfo.PageIndex,
                                         filter.PageInfo.PageSize);

            if (queryProcesses != null)
            {
                return(new { queryProcesses.TotalCount, Processes = queryProcesses.Historys });
            }

            return(queryProcesses);
        }
Esempio n. 14
0
 protected void Page_Load(object sender, EventArgs e)
 {
     Response.ClearContent();
     Response.ContentType = "image/png";
     byte[] binaries = WorkflowProxy.GetWorkflowDefinitionGraphic(0);
     if (binaries != null && binaries.Length != 0)
     {
         Response.AddHeader("Content-Length", binaries.Length.ToString());
         Response.BinaryWrite(binaries);
     }
     else
     {
         Response.AddHeader("Content-Length", "0");
     }
     Response.Flush();
     Response.End();
 }
Esempio n. 15
0
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.ClearContent();
        Response.ContentType = "image/png";
        Guid processId = new Guid(Request["processid"]);

        byte[] binaries = WorkflowProxy.GetWorkflowGraphic(processId);
        if (binaries != null && binaries.Length != 0)
        {
            Response.AddHeader("Content-Length", binaries.Length.ToString());
            Response.BinaryWrite(binaries);
        }
        else
        {
            Response.AddHeader("Content-Length", "0");
        }
        Response.Flush();
        Response.End();
    }
Esempio n. 16
0
 public void TerminateAllUnFinishProcess()
 {
     var proxy = new WorkflowProxy();
     proxy.SetFinishProcess();
 }
Esempio n. 17
0
        public void TerminateAllUnFinishProcess()
        {
            var proxy = new WorkflowProxy();

            proxy.SetFinishProcess();
        }
Esempio n. 18
0
        /// <summary>
        /// </summary>
        /// <param name="instanceid">流程ID</param>
        /// <param name="tokenid">节点ID</param>
        /// <param name="transitionName">按钮名称(离开当前节点的TransitionName)</param>
        public void Process(ProcessModel data)
        {
            var proxy = new WorkflowProxy();

            var processInstance = new ProcessInstance();

            processInstance.InstanceID = data.InstanceId;
            processInstance.TokenID    = data.TokenId;
            processInstance.RouterName = data.TransitionName;

            var item = new VariableInstance();

            if (processInstance.RouterName == "到是否参加社会保险")
            {
                int flag = 0;
                if (!string.IsNullOrWhiteSpace(data.TemplateData))
                {
                    dynamic jsonObj      = Newtonsoft.Json.JsonConvert.DeserializeObject <object>(data.TemplateData);
                    string  idCardNumber = jsonObj.ShenFenZhengHaoMa;
                    if (socialSpRepo.Entities.Any(m => m.IDCardNumber == idCardNumber))
                    {
                        flag = 1;
                    }
                    else
                    {
                        flag = 0;
                        socialSpRepo.Insert(new SocialSecurityPersonnel()
                        {
                            IDCardNumber = idCardNumber
                        });
                    }
                }
                item.VariableName = "flag";
                item.Value        = flag;
                processInstance.Variables.Add(item);
            }

            //将表单数据保存至流程的变量中,以便在审核环节能够读出表单的数据(变量值不能超过2000)
            if (!string.IsNullOrWhiteSpace(data.TemplateData))
            {
                VariableInstance pageUrl = proxy.GetCurrentTaskSetPage(processInstance.InstanceID, processInstance.TokenID);
                item              = new VariableInstance();
                item.Value        = data.TemplateData;
                item.VariableName = pageUrl.Value.ToString();
                processInstance.Variables.Add(item);
            }

            //获取下一个节点名并启动流程
            string userId = "";
            var    list   = proxy.GetTransitionNextNodeRoles(data.DefineName, data.TokenName, data.TransitionName);

            if (list != null && list.Count > 0)
            {
                string nodeName    = list[0];
                User   choosenUser = teamRepo.GetNextUserByNodeName(data.DefineName, nodeName);
                //var choosenUser = GetRandomUserId(users);
                if (choosenUser == null)
                {
                    throw new BusinessException("找不到下一步处理人");
                }

                assignedUserRepo.Insert(new AssignedUser
                {
                    InDate      = DateTime.Now,
                    InstanceID  = data.InstanceId,
                    UserID      = choosenUser.UserID,
                    Nodename    = nodeName,
                    ProcessName = data.DefineName,
                    InUser      = data.User.UserID
                });

                var user = new TaskUser {
                    UserId = choosenUser.UserID, UserName = choosenUser.UserName
                };
                userId = choosenUser.UserID;
                processInstance.IncludeActors.Add(user);
            }
            proxy.ProcessExecuter(processInstance);

            LogHelper.Instanse.WriteInfo(
                string.Format("InstanceID:-{0},TokenID:-{1},推给了-{2}",
                              processInstance.InstanceID, processInstance.TokenID, userId));

            if (!string.IsNullOrEmpty(data.TemplateData))
            {
                userAnswerRepo.Insert(new UserAnwser()
                {
                    TemplateData = data.TemplateData,
                    TemplateName = data.TemplateName,
                    InDate       = DateTime.Now,
                    ProcessName  = data.DefineName,
                    NodeName     = data.TokenName,
                    UserID       = data.User.UserID,
                    InstanceID   = data.InstanceId,
                    TokenID      = data.TokenId
                });
            }
        }
Esempio n. 19
0
        public dynamic GetTaskDetail(string instanceId, string tokenId)
        {
            string pageDesc = "";
            string pageValue = "";
            var proxy = new WorkflowProxy();
            List<Transition> transitions = proxy.GetTransitions(instanceId, tokenId);
            VariableInstance page = proxy.GetCurrentTaskSetPage(instanceId, tokenId);
            if (page != null)
            {
                //获取当前流程实例的所有变量,查找和当前节点的pageName相同的变量,取出变量值,该值就是表单的数据
                VariableInstance vars = proxy.GetVariable(instanceId, page.Value.ToString());
                pageValue = vars == null ? pageValue : vars.Value.ToString();

                //var shortName = Path.GetFileName(page.Value.ToString());
                var pageName = page.Value.ToString();
                //获取page desc
                var firstOrDefault = stAnswerRepo.Entities.FirstOrDefault(m => m.TemplateName == pageName);
                if (firstOrDefault != null)
                {
                    pageDesc = firstOrDefault.TemplateDesc;
                }
            }

            return new { Transitions = transitions, Page = page.Value, PageDesc = pageDesc, PageData = pageValue };
        }
Esempio n. 20
0
        public dynamic GetUnFinishProcess(QueryFilter filter)
        {
            var proxy = new WorkflowProxy();
            QueryInstanceView queryProcesses =
                proxy.GetFinishedProcess(filter.PageInfo.PageIndex,
                    filter.PageInfo.PageSize);

            if (queryProcesses != null)
            {
                return new { queryProcesses.TotalCount, Processes = queryProcesses.Historys };
            }

            return queryProcesses;
        }
Esempio n. 21
0
 public bool SetProxyWorkflow(WorkflowProxy wfp, eStoreType storeType)
 {
     throw new NotImplementedException();
 }
Esempio n. 22
0
        public dynamic GetUserTasks(UserTaskQueryFilter filter)
        {
            var proxy = new WorkflowProxy();
            QueryTaskView queryTasks =
                proxy.GetUnProcessTaskByUser(filter.UserId,
                    filter.PageInfo.PageIndex,
                    filter.PageInfo.PageSize);

            return queryTasks;
        }
Esempio n. 23
0
 public string GetProcessImage(string processName)
 {
     var proxy = new WorkflowProxy();
     var imageData = proxy.GetProcessPictureToByte(processName);
     return Convert.ToBase64String(imageData);
 }
Esempio n. 24
0
 public string GetCurrentTokenImage(string instanceId, string tokenId)
 {
     var proxy = new WorkflowProxy();
     var imageData = proxy.GetCurrentTokenPictureToByte(instanceId, tokenId);
     return Convert.ToBase64String(imageData);
 }
Esempio n. 25
0
        public List<dynamic> GetExportProcess()
        {
            List<dynamic> result = new List<dynamic>();
            var proxy = new WorkflowProxy();
            var processList = processInfoRepo.Entities.ToList();

            foreach (var p in processList)
            {
                var tasks = proxy.GetProcessAllTask(p.ProcessName);
                foreach (var task in tasks)
                {
                    result.Add(new
                    {
                        p.ProcessName,
                        NodeName = task,
                        TeamName = "",
                        p.Category,
                        p.DifficultyLevel,
                        p.Description,
                        p.InDate,
                        p.InUser,
                        LastEditDate = p.LastEditDate.Value,
                        p.LastEditUser
                    });
                }
            }

            return result;
        }
Esempio n. 26
0
        /// <summary>
        /// </summary>
        /// <param name="instanceid">流程ID</param>
        /// <param name="tokenid">节点ID</param>
        /// <param name="transitionName">按钮名称(离开当前节点的TransitionName)</param>
        public void Process(ProcessModel data)
        {
            var proxy = new WorkflowProxy();

            var processInstance = new ProcessInstance();
            processInstance.InstanceID = data.InstanceId;
            processInstance.TokenID = data.TokenId;
            processInstance.RouterName = data.TransitionName;

            var item = new VariableInstance();
            if (processInstance.RouterName == "到是否参加社会保险")
            {
                int flag = 0;
                if (!string.IsNullOrWhiteSpace(data.TemplateData))
                {
                    dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject<object>(data.TemplateData);
                    string idCardNumber = jsonObj.ShenFenZhengHaoMa;
                    if (socialSpRepo.Entities.Any(m => m.IDCardNumber == idCardNumber))
                    {
                        flag = 1;
                    }
                    else
                    {
                        flag = 0;
                        socialSpRepo.Insert(new SocialSecurityPersonnel()
                        {
                            IDCardNumber = idCardNumber
                        });
                    }
                }
                item.VariableName = "flag";
                item.Value = flag;
                processInstance.Variables.Add(item);
            }

            //将表单数据保存至流程的变量中,以便在审核环节能够读出表单的数据(变量值不能超过2000)
            if (!string.IsNullOrWhiteSpace(data.TemplateData))
            {
                VariableInstance pageUrl = proxy.GetCurrentTaskSetPage(processInstance.InstanceID, processInstance.TokenID);
                item = new VariableInstance();
                item.Value = data.TemplateData;
                item.VariableName = pageUrl.Value.ToString();
                processInstance.Variables.Add(item);
            }

            //获取下一个节点名并启动流程
            string userId = "";
            var list = proxy.GetTransitionNextNodeRoles(data.DefineName, data.TokenName, data.TransitionName);
            if (list != null && list.Count > 0)
            {

                string nodeName = list[0];
                User choosenUser = teamRepo.GetNextUserByNodeName(data.DefineName, nodeName);
                //var choosenUser = GetRandomUserId(users);
                if (choosenUser == null)
                {
                    throw new BusinessException("找不到下一步处理人");
                }

                assignedUserRepo.Insert(new AssignedUser
                {
                    InDate = DateTime.Now,
                    InstanceID = data.InstanceId,
                    UserID = choosenUser.UserID,
                    Nodename = nodeName,
                    ProcessName = data.DefineName,
                    InUser = data.User.UserID
                });

                var user = new TaskUser { UserId = choosenUser.UserID, UserName = choosenUser.UserName };
                userId = choosenUser.UserID;
                processInstance.IncludeActors.Add(user);
            }
            proxy.ProcessExecuter(processInstance);

            LogHelper.Instanse.WriteInfo(
                string.Format("InstanceID:-{0},TokenID:-{1},推给了-{2}",
                    processInstance.InstanceID, processInstance.TokenID, userId));

            if (!string.IsNullOrEmpty(data.TemplateData))
            {
                userAnswerRepo.Insert(new UserAnwser()
                {
                    TemplateData = data.TemplateData,
                    TemplateName = data.TemplateName,
                    InDate = DateTime.Now,
                    ProcessName = data.DefineName,
                    NodeName = data.TokenName,
                    UserID = data.User.UserID,
                    InstanceID = data.InstanceId,
                    TokenID = data.TokenId
                });
            }
        }