public async Task <ActionResult> RunReturn(long processId) { var result = new JsonModel { statusCode = 300, message = "删除失败,记录不存在!", closeCurrent = false }; if (processId < 1) { return(Json(result)); } var processInstanceQuery = WfProcessInstanceRepository.QueryEnable() .Where(m => m.WfProcessId == processId); foreach (var wfProcessInstance in processInstanceQuery) { wfProcessInstance.ProcessState = WfProcessState.Canceled; } var activityInstanceQuery = WfActivityInstanceRepository.QueryEnable() .Where(m => m.ProcessId == processId); foreach (var activityInstance in activityInstanceQuery) { activityInstance.ActivityState = WfActivityState.Withdrawed; } await WfProcessRepository.SaveChangesAsync(); result.statusCode = 200; return(Json(result)); }
private async Task CompleteProcess(WfProcessInstance processInstance) { processInstance.ProcessState = WfProcessState.Completed; processInstance.CurrActivityName = "结束"; //TODO:更新数据源的状态 var src = await GetSourceAsync(processInstance.TableSource, processInstance.SourceId); src.CommonStatus = CommonStatus.Enabled; await WfProcessInstanceRepository.SaveAsync(processInstance); }
public IPagedList <WfActivityInstance> GetMyTaskList(int pageSize = 30, int pageCurrent = 1) { var userId = $"[{User.UserInfo.UserId}]"; var queryProcess = WfProcessInstanceRepository.AdminQueryEnable() .Where(m => m.ProcessState == WfProcessState.Running); var queryActivity = WfActivityInstanceRepository .AdminQueryEnable() .Where(m => m.ActivityState == WfActivityState.Running && m.ActivityType == WfActivityType.Task && !string.IsNullOrEmpty(m.AssignToUserIds) && m.AssignToUserIds.Contains(userId)); queryActivity = queryActivity.Join( queryProcess, act => act.ProcessInstanceId, pro => pro.Id, (act, pro) => act); var list = queryActivity .OrderByDescending(m => m.Id) .ToPagedList(pageCurrent, pageSize); return(list); }
public async Task <JsonModel> StartProcess(long processId, long sourceId, string condition, string nextStepId, string assignToUserIds, string assignToUserNames) { var result = new JsonModel(); //创建流程实例 var process = await GetProcessById(processId); if (result == null) { result.statusCode = 300; result.message = "流程不存在!processId:" + processId; return(result); } var processInstance = new WfProcessInstance() { CommonStatus = CommonStatus.Enabled, ProcessName = process.Name, ProcessState = WfProcessState.Running, SourceId = sourceId, TableSource = process.TableSource, WfProcessId = process.Id, Conditions = condition }; await WfProcessInstanceRepository.SaveAsync(processInstance); //创建流程节点 var firstAct = process.GetFirstActivity(); if (firstAct == null) { result.statusCode = 300; result.message = $"流程 {process.Name}的第一个节点找不到!"; return(result); } WfActivityInstance firstActInstance = CreateActivityInstance(process, processInstance, firstAct, WfActivityState.Completed, User.UserInfo.UserId, User.UserInfo.RealName); firstActInstance.DealTime = DateTime.Now; firstActInstance.DealUserId = User.UserInfo.UserId; firstActInstance.DealUserName = User.UserInfo.RealName; await WfActivityInstanceRepository.SaveAsync(firstActInstance); //创建下一步节点 var nextAct = process.GetActivity(nextStepId); if (nextAct == null) { result.statusCode = 300; result.message = $"流程 {process.Name}的节点 {nextStepId} 找不到!"; return(result); } var nextActInstance = CreateActivityInstance(process, processInstance, nextAct, WfActivityState.Running, assignToUserIds, assignToUserNames); nextActInstance.PreActInstanceId = firstActInstance.Id; await WfActivityInstanceRepository.SaveAsync(nextActInstance); processInstance.CurrActivityName = nextActInstance.ActivityName; await WfProcessInstanceRepository.SaveAsync(processInstance); return(result); }
public IPagedList <WfProcessInstance> GetApplyList(bool isOwn, string name, string title, DateTime?startTime, DateTime?endTime, WfProcessState?state, string activityName, string orderField, string orderDirection, int pageSize = 30, int pageCurrent = 1) { return(WfProcessInstanceRepository.GetApplyPagedList(isOwn, name, title, startTime, endTime, state, activityName, orderField, orderDirection, pageCurrent, pageSize)); }
public Task <WfProcessInstance> GetProcessInstanceAsync(long id) { return(WfProcessInstanceRepository.GetEnableByIdAsync(id)); }
public async Task <ActionResult> CheckIsRun(long processId) { var isRun = await WfProcessInstanceRepository.IsRunAsync(processId); return(Json(isRun)); }