/// <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); }
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 }); }
public void TestGetData() { using (var client = new WorkflowProxy(realWorldEndpoint)) { Assert.Equal("abcaaa", client.Instance.GetData("abc")); } }
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)); } }
public string GetCurrentTokenImage(string instanceId, string tokenId) { var proxy = new WorkflowProxy(); var imageData = proxy.GetCurrentTokenPictureToByte(instanceId, tokenId); return(Convert.ToBase64String(imageData)); }
public string GetProcessImage(string processName) { var proxy = new WorkflowProxy(); var imageData = proxy.GetProcessPictureToByte(processName); return(Convert.ToBase64String(imageData)); }
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)); } }
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); }
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"); } }
public dynamic GetUserTasks(UserTaskQueryFilter filter) { var proxy = new WorkflowProxy(); QueryTaskView queryTasks = proxy.GetUnProcessTaskByUser(filter.UserId, filter.PageInfo.PageIndex, filter.PageInfo.PageSize); return(queryTasks); }
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() }); }
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() }; }
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); }
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(); }
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(); }
public void TerminateAllUnFinishProcess() { var proxy = new WorkflowProxy(); proxy.SetFinishProcess(); }
/// <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 }); } }
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 }; }
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; }
public bool SetProxyWorkflow(WorkflowProxy wfp, eStoreType storeType) { throw new NotImplementedException(); }
public dynamic GetUserTasks(UserTaskQueryFilter filter) { var proxy = new WorkflowProxy(); QueryTaskView queryTasks = proxy.GetUnProcessTaskByUser(filter.UserId, filter.PageInfo.PageIndex, filter.PageInfo.PageSize); return queryTasks; }
public string GetProcessImage(string processName) { var proxy = new WorkflowProxy(); var imageData = proxy.GetProcessPictureToByte(processName); return Convert.ToBase64String(imageData); }
public string GetCurrentTokenImage(string instanceId, string tokenId) { var proxy = new WorkflowProxy(); var imageData = proxy.GetCurrentTokenPictureToByte(instanceId, tokenId); return Convert.ToBase64String(imageData); }
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; }
/// <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 }); } }