public IActionResult Get([FromRoute] string entityname, [FromQuery] Guid transitionType, [FromQuery] Guid workFlowId) { try { var stopwatch = StopwatchLogger.Start(_log); _log.Info("Called WorkFlowStepController Get {0}=", JsonConvert.SerializeObject(entityname)); var entityId = _iMetadataManager.GetEntityContextByEntityName(entityname); var retVal = WorkFlowHelper.GetAllSteps(entityId); var itsSavedInnerSteps = _managerWorkFlowInnerSteps.GetWorkFlowInnerStep_ByStepTransactionType(TenantCode, transitionType, workFlowId); if (retVal.Count > 0) { retVal = (from retV in retVal where retV.Id != transitionType select retV).ToList(); } List <WorkFlowResource> filteredInnerSteps = new List <WorkFlowResource>(); foreach (var retV in retVal) { var checkExistance = (from itsSavedInnerStep in itsSavedInnerSteps where itsSavedInnerStep.TransitionType.Id == retV.Id select itsSavedInnerStep).ToList(); if (checkExistance.Count == 0) { filteredInnerSteps.Add(retV); } } stopwatch.StopAndLog("End WorkFlowStepController Get"); return(Ok(filteredInnerSteps)); } catch (Exception ex) { _log.Error(ExceptionFormatter.SerializeToString(ex)); return(StatusCode((int)HttpStatusCode.InternalServerError, ApiConstant.CustomErrorMessage)); } }
private string getProcessInfo() { string formData = Request.Form["formData"]; string formId = Request.Form["formId"]; return(WorkFlowHelper.GetApprover(formId, formData)); }
/// <summary> /// 增加单据中下一审批节点名称 /// </summary> /// <param name="pageResult"></param> /// <param name="BizType"> 审批流业务类型</param> /// <returns></returns> public PagedResult <GHSubjectModel> AddNextApproveName(PagedResult <GHSubjectModel> pageResult, string BizType) { var approveListId = GetApproveList(pageResult); if (approveListId.Count == 0) { foreach (var item in pageResult.Results) { item.FNextApprove = "无"; } return(pageResult); } var Next_approve = WorkFlowHelper.GetFlowInfoByBizList(BizType, approveListId); foreach (var item in pageResult.Results) { if (item.FApproveStatus == "2") { for (var i = 0; i < Next_approve.Count; i++) { if (Next_approve[i]["pk1"].ToString() == item.PhId.ToString() && Next_approve[i]["flow_status_name"].ToString() == "运行中") { item.FNextApprove = Next_approve[i]["curnodes"].ToString(); break; } } } else { item.FNextApprove = "无"; } } return(pageResult); }
public IActionResult Get([FromRoute] Guid workFlowOperationId, [FromQuery] string entityName) { try { var stopwatch = StopwatchLogger.Start(_log); _log.Info("Called WorkFlowProcessTaskController Get by workFlowOperationId{0}=", JsonConvert.SerializeObject(workFlowOperationId)); var tasks = _managerWorkFlowProcessTask.GetWorkFlowProcessTask_ByInnerStepId(TenantCode, workFlowOperationId); if (tasks.Count > 0) { var entityId = _iMetadataManager.GetEntityContextByEntityName(entityName); var itsProcessorTasks = WorkFlowHelper.GetProcessorTitleByOperationModule(entityId); foreach (var workFlowProcessTask in tasks) { var task = (from itsProcessorTask in itsProcessorTasks where itsProcessorTask.Id == workFlowProcessTask.ProcessCode select itsProcessorTask).ToList(); if (task.Count > 0) { workFlowProcessTask.ProcessName = task[0].Key; } } } stopwatch.StopAndLog("End WorkFlowProcessTaskController Get by innerStepId"); return(Ok(tasks)); } catch (Exception ex) { _log.Error(ExceptionFormatter.SerializeToString(ex)); return(StatusCode((int)HttpStatusCode.InternalServerError, ApiConstant.CustomErrorMessage)); } }
private string GetDetail() { string formName = Request.Form["formName"]; string docId = Request.Form["docId"]; string type = Request.Form["type"]; return(WorkFlowHelper.GetDocumentDetail(formName, docId, ((UserInfo)Session["user"]).userId.ToString(), type)); }
private string Back() { string formName = Request.Form["formName"]; string docId = Request.Form["docId"]; UserInfo user = (UserInfo)Session["user"]; return(WorkFlowHelper.BackDocument(formName, docId, user.userId.ToString())); }
private string findRemoteUrl() { string type = Request.Form["type"]; string value = Request.Form["value"]; string relatedType = Request.Form["relatedType"]; string relatedValue = Request.Form["relatedValue"]; return(WorkFlowHelper.find(type, value, relatedType, relatedValue)); }
private string submitProcess() { string defaultProcessJson = Request.Form["DefaultProcessJson"]; string conditionItem = Request.Form["ConditionItem"]; string conditionJson = Request.Form["ConditionJson"]; string formId = Request.Form["FormId"]; string processName = Request.Form["ProcessName"]; return(WorkFlowHelper.submitProcess(defaultProcessJson, conditionItem, conditionJson, formId, processName)); }
private string Approve() { string formName = Request.Form["formName"]; string docId = Request.Form["docId"]; string result = Request.Form["result"]; string opinion = Request.Form["opinion"]; string hospitalCode = Request.Form["hospitalCode"]; string agentCode = Request.Form["agentCode"]; UserInfo user = (UserInfo)Session["user"]; return(WorkFlowHelper.Approving(formName, docId, user.userId.ToString(), result, opinion, hospitalCode, agentCode)); }
private string GetData() { string formName = Request.Form["formName"]; UserInfo user = (UserInfo)Session["user"]; JObject res = new JObject(); res.Add("toBeSubmitedByMe", WorkFlowHelper.getFormDataOverall(user.userId.ToString(), 1)); res.Add("toBeApprovedByMe", WorkFlowHelper.getFormDataOverall(user.userId.ToString(), 2)); res.Add("submitedByMe", WorkFlowHelper.getFormDataOverall(user.userId.ToString(), 3)); res.Add("hasApprovedByMe", WorkFlowHelper.getFormDataOverall(user.userId.ToString(), 4)); res.Add("relatedToMe", WorkFlowHelper.getFormDataOverall(user.userId.ToString(), 5)); return(res.ToString()); }
public IActionResult Get(string operationName, string entityName) { try { var stopwatch = StopwatchLogger.Start(_log); _log.Info("Called WorkFlowProcessTaskController Get {0}=", JsonConvert.SerializeObject(operationName)); var entityId = _iMetadataManager.GetEntityContextByEntityName(entityName); var retVal = WorkFlowHelper.GetProcessorTitleByOperation(operationName, entityId); stopwatch.StopAndLog("End WorkFlowProcessTaskController Get"); return(Ok(retVal)); } catch (Exception ex) { _log.Error(ExceptionFormatter.SerializeToString(ex)); return(StatusCode((int)HttpStatusCode.InternalServerError, ApiConstant.CustomErrorMessage)); } }
WorkFlowProcessMessage IWorkFlowProcess.OperationProcess(Guid?typeName, dynamic data) { try { WorkFlowProcessMessage result = null; var type = typeof(IOperation); var myType = WorkFlowHelper.GetOperationType(typeName.Value); if (myType != null) { var myObject = Activator.CreateInstance(myType); MethodInfo executeMethod = type.GetMethod("Execute"); result = (WorkFlowProcessMessage)executeMethod.Invoke(myObject, new object[] { data }); if (!result.Success) { if (result.WarningMessage != null) { throw new CustomWorkflowException <WorkFlowMessage>(result.WarningMessage.Code); } if (result.ErrorMessage != null) { throw new CustomWorkflowException <WorkFlowMessage>(result.ErrorMessage.Code); } } } return(result); } catch (CustomWorkflowException <WorkFlowMessage> ) { throw; } catch (System.Exception ex) { if (ex.InnerException != null) { throw ex.InnerException; } _log.Error("IWorkFlowProcess.OperationProcess with ProcessContext {0} having System.Exception message {1}", typeName, ex.Message); throw; } }
List <WorkFlowInnerStepInfo> IManagerWorkFlow.GetNextPossibleSteps(Guid tenantId, string entityName, string subTypeName, Guid currentTransitionTypeId) { var entityId = iMetadataManager.GetEntityContextByEntityName(entityName); var subTypeCode = iMetadataManager.GetSubTypeId(entityName, subTypeName); var workFlow = _reviewWorkFlow.GetWorkFlow(tenantId, entityId, subTypeCode); if (workFlow == null) { throw new CustomWorkflowException <WorkFlowMessage>(WorkFlowMessage.NoOperationActivity); } var itsCurrentStep = _managerWorkFlowStep.GetWorkFlowSteps(tenantId, workFlow.WorkFlowId).FirstOrDefault(x => x.TransitionType.Id == currentTransitionTypeId); var innerSteps = _managerWorkFlowInnerStep.GetWorkFlowInnerStep(tenantId, workFlow.WorkFlowId).Where(x => x.WorkFlowStepId == itsCurrentStep.WorkFlowStepId).ToList(); foreach (var innerStep in innerSteps) { innerStep.TransitionType.Name = WorkFlowHelper.GetKeyByContext(entityId, innerStep.TransitionType.Id); } return(innerSteps); }
protected override void OnSaving() { WorkFlowHelper.CreateWorkFlowProcess(this); base.OnSaving(); }
public static void Init(IConfiguration configuration) { RedisHelper.Init(configuration); RedisHelper.CloseWrite = _close; ServerId = configuration.GetAppSettings <int>("ServerId"); IsAnalysis = configuration.GetAppSettings <bool>("Analysis"); ApiDb = new DataBase(configuration.GetConnectionString("ApiDb")) { CloseWrite = _close }; _loads = new Dictionary <string, Action> { //{PermissionHelper.TableName, PermissionHelper.LoadConfig}, { "ReadDB", LoadDateBase }, { PermissionHelper.TableName, PermissionHelper.LoadConfig }, { PermissionGroupHelper.TableName, PermissionGroupHelper.LoadConfig }, { NpcProxyLinkServerHelper.TableName, NpcProxyLinkServerHelper.LoadConfig }, }; foreach (var action in _loads.Values) { action(); } GateUrl = configuration.GetAppSettings <string>("GateUrl"); ErpUrl = configuration.GetAppSettings <string>("ErpUrl"); GlobalConfig.LoadGlobalConfig(); AccountInfoHelper.Init(configuration); WorkFlowHelper.Init(); OldWorkFlowHelper.Init(); //HMaterialHelper.MaterialChange3(); //return; if (ServerId == 1) { HKanBanHelper.Init(); } else if (ServerId == 2) { HNotifyHelper.Init(); HWarningHelper.Init(); HOpScheduleHelper.Init(); //HFlowCardHelper.Init(); //SimulateHelper.Init(); HScheduleHelper.Init(); TimerHelper.Init(); //HMaterialHelper.Init(); } else if (ServerId == 3) { AnalysisHelper.Init(); HKanBanHelper.Init(); } if (!RedisHelper.Exists(IsSetProcessDataKey)) { RedisHelper.SetForever(IsSetProcessDataKey, 1); } if (!RedisHelper.Exists(IsSetDataIgnoreKey)) { RedisHelper.SetForever(IsSetDataIgnoreKey, 0); } _loads.Add(HWarningHelper.RedisReloadKey, HWarningHelper.NeedReload); _loads.Add(HOpScheduleHelper.RedisReloadKey, HOpScheduleHelper.NeedReload); Log.InfoFormat("ServerConfig Done"); }
private string showFormFiled() { string formId = Request.Form["formId"]; return(WorkFlowHelper.showFormFiled(formId)); }
private string getProcessTree() { string formId = Request.Form["formId"]; return(WorkFlowHelper.GetTreeJson(formId)); }
private string showProcessData() { string formId = Request.Form["formId"]; return(WorkFlowHelper.getFormProcessOther(formId)); }
List <WorkFlowInfo> IManagerWorkFlowSecurity.GetWorkFlowsByUserCode(Guid tenantId, Guid userId, bool isSuperAdmin) { var workFlowSteps = _managerWorkFlowStep.GetWorkFlowStepsByUserId(tenantId, userId, isSuperAdmin); var workFlows = _managerWorkFlow.GetWorkFlowsByIds(tenantId, workFlowSteps.Select(p => p.WorkFlowId).Distinct().ToList()); var workFlowOperations = _managerOperation.GetWorkFlowOperationsByWorkFlowIds(tenantId, workFlows.Select(p => p.WorkFlowId).ToList()); var workFlowInnerSteps = _managerInnerStep.GetWorkFlowInnerStep_ByStepIds(tenantId, workFlowSteps.Select(p => p.WorkFlowStepId).ToList()); var operationOrTransactionIds = new List <Guid>(); operationOrTransactionIds.AddRange(workFlowOperations.Select(p => p.WorkFlowOperationId).ToList()); operationOrTransactionIds.AddRange(workFlowInnerSteps.Select(p => p.InnerStepId).ToList()); var workFlowProcess = _managerWorkFlowProcess.GetWorkFlowProcessByOperationOrTransitionIds(tenantId, operationOrTransactionIds); var processTasks = _managerWorkFlowProcessTask.GetWorkFlowProcessTask_ByProcessIds(tenantId, workFlowProcess.Select(proc => proc.WorkFlowProcessId).ToList()); var workFlowRoles = _managerWorkFlowRole.GetWorkFlowRolesByStepIds(tenantId, workFlowSteps.Select(p => p.WorkFlowStepId).ToList()); foreach (var workFlow in workFlows) { //get its operations workFlow.Operations = (from workFlowOperation in workFlowOperations where workFlowOperation.WorkFlowId == workFlow.WorkFlowId select workFlowOperation).ToList(); //set process to operation foreach (var operation in workFlow.Operations) { operation.WorkFlowProcess = (from workFlowPro in workFlowProcess where workFlowPro.OperationOrTransactionId == operation.WorkFlowOperationId && workFlowPro.WorkFlowId == workFlow.WorkFlowId select workFlowPro).ToList(); foreach (var process in operation.WorkFlowProcess) { process.WorkFlowProcessTasks = new List <WorkFlowProcessTaskInfo>(); if (process.ProcessType == (int)WorkFlowProcessType.PreProcess) { process.WorkFlowProcessTasks.AddRange((from allProcessTask in processTasks where process.WorkFlowProcessId == allProcessTask.WorkFlowProcessId && process.WorkFlowId == workFlow.WorkFlowId orderby allProcessTask.SequenceCode select allProcessTask).ToList()); } if (process.ProcessType == (int)WorkFlowProcessType.Process) { process.WorkFlowProcessTasks.AddRange((from allProcessTask in processTasks where process.WorkFlowProcessId == allProcessTask.WorkFlowProcessId && process.WorkFlowId == workFlow.WorkFlowId orderby allProcessTask.SequenceCode select allProcessTask).ToList()); } if (process.ProcessType == (int)WorkFlowProcessType.PostProcess) { process.WorkFlowProcessTasks.AddRange((from allProcessTask in processTasks where process.WorkFlowProcessId == allProcessTask.WorkFlowProcessId && process.WorkFlowId == workFlow.WorkFlowId orderby allProcessTask.SequenceCode select allProcessTask).ToList()); } } } //get its steps workFlow.Steps = new List <WorkFlowStepInfo>(); var allSteps = WorkFlowHelper.GetAllSteps(workFlow.EntityId); var itsWorkFlowSteps = (from workFlowStep in workFlowSteps where workFlowStep.WorkFlowId == workFlow.WorkFlowId select workFlowStep).ToList(); foreach (var itsWorkFlowStep in itsWorkFlowSteps) { //filter its role itsWorkFlowStep.Roles = (from workFlowRole in workFlowRoles where workFlowRole.WorkFlowStepId == itsWorkFlowStep.WorkFlowStepId && workFlowRole.WorkFlowId == workFlow.WorkFlowId select workFlowRole).ToList(); var filteredStep = (from allStep in allSteps where itsWorkFlowStep.TransitionType.Id == allStep.Id select allStep).FirstOrDefault(); itsWorkFlowStep.TransitionType.Name = filteredStep.Value; //filter its inner steps var itsInnerSteps = (from workFlowInnerStep in workFlowInnerSteps where workFlowInnerStep.WorkFlowStepId == itsWorkFlowStep.WorkFlowStepId && workFlowInnerStep.WorkFlowId == workFlow.WorkFlowId select workFlowInnerStep).ToList(); if (itsInnerSteps.Count > 0) { //filter Inner step process foreach (var itsInnerStep in itsInnerSteps) { itsInnerStep.WorkFlowProcess = (from workFlowPro in workFlowProcess where workFlowPro.OperationOrTransactionId == itsInnerStep.InnerStepId && workFlowPro.WorkFlowId == workFlow.WorkFlowId select workFlowPro).ToList(); foreach (var process in itsInnerStep.WorkFlowProcess) { process.WorkFlowProcessTasks = new List <WorkFlowProcessTaskInfo>(); if (process.ProcessType == (int)WorkFlowProcessType.PreProcess) { process.WorkFlowProcessTasks.AddRange((from allProcessTask in processTasks where process.WorkFlowProcessId == allProcessTask.WorkFlowProcessId && process.WorkFlowId == workFlow.WorkFlowId orderby allProcessTask.SequenceCode select allProcessTask).ToList()); } if (process.ProcessType == (int)WorkFlowProcessType.Process) { process.WorkFlowProcessTasks.AddRange((from allProcessTask in processTasks where process.WorkFlowProcessId == allProcessTask.WorkFlowProcessId && process.WorkFlowId == workFlow.WorkFlowId orderby allProcessTask.SequenceCode select allProcessTask).ToList()); } if (process.ProcessType == (int)WorkFlowProcessType.PostProcess) { process.WorkFlowProcessTasks.AddRange((from allProcessTask in processTasks where process.WorkFlowProcessId == allProcessTask.WorkFlowProcessId && process.WorkFlowId == workFlow.WorkFlowId orderby allProcessTask.SequenceCode select allProcessTask).ToList()); } } } itsWorkFlowStep.InnerSteps = new List <WorkFlowInnerStepInfo>(itsInnerSteps); } workFlow.Steps.Add(itsWorkFlowStep); } } foreach (var workFlow in workFlows) { workFlow.EntityId = iMetadataManager.GetEntityNameByEntityContext(workFlow.EntityId); var subTypes = iMetadataManager.GetSubTypesDetails(workFlow.EntityId); foreach (var subType in subTypes) { if (subType.Key == workFlow.SubTypeCode) { workFlow.SubTypeCode = subType.Value; } } } return(workFlows); }
static void ProcessOnce(int i) { var wfApp = WorkFlowHelper .CreateApplication ( "a:" + (i % 4).ToString() , () => { return (_xaml); } ); wfApp.Completed = (e) => { //Console.WriteLine(e.InstanceId); }; wfApp.Aborted = (e) => { }; //wfApp.OnUnhandledException = (e) => //{ // Console.WriteLine(e.UnhandledException.ToString()); // return UnhandledExceptionAction.Terminate; //}; //wfApp.Idle = (e) => //{ // idleEvent.Set(); //}; var config = @"{ ""WorkflowInstanceQuery"" : [{ ""States"": [ ""*"" ] , ""QueryAnnotations"": {} }] , ""ActivityStateQuery"" : [{ ""ActivityName"": ""*"" , ""Arguments"": [] , ""Variables"": [] , ""States"": [""*""] , ""QueryAnnotations"": {} }] , ""CustomTrackingQuery"": [{ ""Name"": ""*"", ""ActivityName"": ""*"", ""QueryAnnotations"": {} }] , ""FaultPropagationQuery"": [{ ""FaultHandlerActivityName"": ""*"", ""FaultSourceActivityName"": ""*"", ""QueryAnnotations"": {} }], ""BookmarkResumptionQuery"": [{ ""Name"": ""*"", ""QueryAnnotations"": {} }], ""ActivityScheduledQuery"": [{ ""ActivityName"": ""*"", ""ChildActivityName"": ""*"", ""QueryAnnotations"": {} }], ""CancelRequestedQuery"": [{ ""ActivityName"": ""*"", ""ChildActivityName"": ""*"", ""QueryAnnotations"": {} }] }"; var trackingProfile = WorkFlowHelper .GetTrackingProfileFromJson ( config , true ); var etwTrackingParticipant = new EtwTrackingParticipant(); etwTrackingParticipant.TrackingProfile = trackingProfile; var commonTrackingParticipant = new CommonTrackingParticipant() { TrackingProfile = trackingProfile , OnTrackingRecordReceived = (x, y) => { //Console.WriteLine("{1}{0}{2}", ",", x, y); return(true); } }; wfApp .Extensions .Add ( etwTrackingParticipant ); wfApp .Extensions .Add ( commonTrackingParticipant ); wfApp.Run(); // Loop until the workflow completes. //WaitHandle[] handles = new WaitHandle[] { syncEvent, idleEvent }; //while (WaitHandle.WaitAny(handles) != 0) //{ // // Gather the user input and resume the bookmark. // bool validEntry = false; // while (!validEntry) // { // int Guess; // if (!int.TryParse(Console.ReadLine(), out Guess)) // { // Console.WriteLine("Please enter an integer."); // } // else // { // validEntry = true; // wfApp.ResumeBookmark("EnterGuess", Guess); // } // } //} }
static void Main() { DynamicJson dj = DynamicJson.Parse("{\"F1\":10}"); var xx = dj["F1"].GetValue <int>(); var inputs = new Dictionary <string, object>() { { "Inputs", dj } }; var wfApp = WorkFlowHelper .CreateApplication ( "aa" , () => { return (_xaml); } , inputs ); wfApp.Completed = (e) => { //int Turns = Convert.ToInt32(e.Outputs["Turns"]); //Console.WriteLine("Congratulations, you guessed the number in {0} turns.", Turns); //syncEvent.Set(); }; wfApp.Aborted = (e) => { Console.WriteLine(e.Reason); //syncEvent.Set(); }; wfApp.OnUnhandledException = (e) => { Console.WriteLine(e.UnhandledException.ToString()); return(UnhandledExceptionAction.Terminate); }; wfApp.Idle = (e) => { //idleEvent.Set(); }; wfApp.Run(); Console.ReadLine(); return; var config = @"{ ""WorkflowInstanceQuery"" : [{ ""States"": [ ""*"" ] , ""QueryAnnotations"": {} }] , ""ActivityStateQuery"" : [{ ""ActivityName"": ""*"" , ""Arguments"": [] , ""Variables"": [] , ""States"": [""*""] , ""QueryAnnotations"": {} }] , ""CustomTrackingQuery"": [{ ""Name"": ""*"", ""ActivityName"": ""*"", ""QueryAnnotations"": {} }] , ""FaultPropagationQuery"": [{ ""FaultHandlerActivityName"": ""*"", ""FaultSourceActivityName"": ""*"", ""QueryAnnotations"": {} }], ""BookmarkResumptionQuery"": [{ ""Name"": ""*"", ""QueryAnnotations"": {} }], ""ActivityScheduledQuery"": [{ ""ActivityName"": ""*"", ""ChildActivityName"": ""*"", ""QueryAnnotations"": {} }], ""CancelRequestedQuery"": [{ ""ActivityName"": ""*"", ""ChildActivityName"": ""*"", ""QueryAnnotations"": {} }] }"; var trackingProfile = WorkFlowHelper .GetTrackingProfileFromJson ( config , true ); var etwTrackingParticipant = new EtwTrackingParticipant(); etwTrackingParticipant.TrackingProfile = trackingProfile; var commonTrackingParticipant = new CommonTrackingParticipant() { TrackingProfile = trackingProfile , OnTrackingRecordReceived = (x, y) => { //Console.WriteLine("{1}{0}{2}", ",", x, y); return(true); } }; wfApp .Extensions .Add ( etwTrackingParticipant ); wfApp .Extensions .Add ( commonTrackingParticipant ); wfApp.Run(); Console.ReadLine(); //// Loop until the workflow completes. //WaitHandle[] handles = new WaitHandle[] { syncEvent, idleEvent }; //while (WaitHandle.WaitAny(handles) != 0) //{ // // Gather the user input and resume the bookmark. // bool validEntry = false; // while (!validEntry) // { // int Guess; // if (!int.TryParse(Console.ReadLine(), out Guess)) // { // Console.WriteLine("Please enter an integer."); // } // else // { // validEntry = true; // wfApp.ResumeBookmark("EnterGuess", Guess); // } // } //} }
object IManagerWorkFlowSecurity.GetWorkFlowSecurity(Guid tenantId, string entityname) { var subTypes = iMetadataManager.GetSubTypesDetails(entityname); var entityId = iMetadataManager.GetEntityContextByEntityName(entityname); var workFlowItems = _managerWorkFlow.GetWorkFlows(tenantId, entityname); var allRoles = _managerRole.Roles(tenantId); var mainObj = new { roleList = allRoles, workFlows = new List <object>() }; var allSteps = WorkFlowHelper.GetAllSteps(entityId); var workFlowSteps = _managerWorkFlowStep.GetWorkFlowStepsByWorkFlowIds(tenantId, workFlowItems.Select(p => p.WorkFlowId).ToList()); var roles = _managerWorkFlowRole.GetWorkFlowRolesByWorkFlowIds(tenantId, workFlowItems.Select(p => p.WorkFlowId).ToList()); foreach (var workFlowItem in workFlowItems) { var subTypeName = subTypes.FirstOrDefault(t => t.Key.Equals(workFlowItem.SubTypeCode)); var thisWorkFlowRoles = (from role in roles where role.WorkFlowId == workFlowItem.WorkFlowId select role).ToList(); var workFLowObj = new { EntityId = entityname, SubTypeCode = subTypeName.Value, WorkFlowId = workFlowItem.WorkFlowId, Steps = new List <object>() }; var thisWorkFLowSteps = (from workFlowStep in workFlowSteps where workFlowStep.WorkFlowId == workFlowItem.WorkFlowId select workFlowStep).ToList(); foreach (var step in allSteps) { var filteredStep = (from workFlowStep in thisWorkFLowSteps where workFlowStep.TransitionType.Id == step.Id select workFlowStep).FirstOrDefault(); if (filteredStep != null) { var stepObj = new { filteredStep.WorkFlowStepId, filteredStep.WorkFlowId, Name = step.Value, filteredStep.IsAssigmentMandatory, filteredStep.AllotedTime, filteredStep.CriticalTime, ActivatedList = new List <object>(), AccessedList = new List <object>(), AssignedList = new List <object>() }; var checkRoles = (from role in thisWorkFlowRoles where role.WorkFlowStepId == filteredStep.WorkFlowStepId select role).ToList(); if (checkRoles.Count > 0) { foreach (var checkRole in checkRoles) { var rolObj = new { checkRole.RoleAssignmetId, checkRole.RoleId, checkRole.WorkFlowId, checkRole.WorkFlowStepId, name = checkRole.RoleName, checkRole.AssignmentOperationType }; if (checkRole.AssignmentOperationType == (int)WorkFlowRoleType.ActivatedRoles) { stepObj.ActivatedList.Add(rolObj); } if (checkRole.AssignmentOperationType == (int)WorkFlowRoleType.AccessedRoles) { stepObj.AccessedList.Add(rolObj); } if (checkRole.AssignmentOperationType == (int)WorkFlowRoleType.AssignedRoles) { stepObj.AssignedList.Add(rolObj); } } } workFLowObj.Steps.Add(stepObj); } } mainObj.workFlows.Add(workFLowObj); } return(mainObj); }
bool IManagerWorkFlowSecurity.InitializeRootTenantWorkFlow(Guid tenantId, string entityId) { var allEntities = iMetadataManager.GetEntities(false); // Filtwer all Workflow supported entity var workFlowEntities = (from allEntity in allEntities where allEntity.SupportWorkflow && allEntity.Name == entityId select allEntity).ToList(); foreach (var workFlowEntity in workFlowEntities) { var entityContextAll = iMetadataManager.GetEntitityByName(workFlowEntity.Name); var entityContext = iMetadataManager.GetEntityContextByEntityName(workFlowEntity.Name); foreach (var subtype in workFlowEntity.Subtypes) { var workflowInfo = new WorkFlowInfo { WorkFlowId = Guid.NewGuid(), EntityId = entityContext, Status = true, SubTypeCode = iMetadataManager.GetSubTypeId(workFlowEntity.Name, subtype) }; _managerWorkFlow.CreateWorkFlow(tenantId, workflowInfo); //all steps from static classes (Transition) List <WorkFlowResource> allSteps = WorkFlowHelper.GetAllSteps(entityContext); var count = 0; foreach (var allStep in allSteps) { var workFlowStep = new WorkFlowStepInfo { WorkFlowId = workflowInfo.WorkFlowId, TransitionType = new ItemName { Id = allStep.Id }, SequenceNumber = count++ }; workFlowStep.WorkFlowStepId = _managerWorkFlowStep.CreateWorkFlowStep(tenantId, workFlowStep); } // (Operations) List <WorkFlowOperationInfo> workFlowOperations = new List <WorkFlowOperationInfo>(); foreach (var entityCon in entityContextAll.Operations) { if (entityCon.Name == "Create") { workFlowOperations.Add(new WorkFlowOperationInfo { WorkFlowOperationId = Guid.NewGuid(), OperationType = WorkFlowOperationType.Create, WorkFlowId = workflowInfo.WorkFlowId }); } else if (entityCon.Name == "Update") { workFlowOperations.Add(new WorkFlowOperationInfo { WorkFlowOperationId = Guid.NewGuid(), OperationType = WorkFlowOperationType.Update, WorkFlowId = workflowInfo.WorkFlowId }); } else if (entityCon.Name == "Delete") { workFlowOperations.Add(new WorkFlowOperationInfo { WorkFlowOperationId = Guid.NewGuid(), OperationType = WorkFlowOperationType.Delete, WorkFlowId = workflowInfo.WorkFlowId }); } else if (entityCon.Name == "UpdateStatus") { workFlowOperations.Add(new WorkFlowOperationInfo { WorkFlowOperationId = Guid.NewGuid(), OperationType = WorkFlowOperationType.UpdateStatus, WorkFlowId = workflowInfo.WorkFlowId }); } } _managerOperation.CreateWorkFlowOperations(tenantId, workFlowOperations); count = 0; List <WorkFlowProcessInfo> workFlowProcesses = new List <WorkFlowProcessInfo>(); foreach (var workFlowOperation in workFlowOperations) { workFlowProcesses.Add(new WorkFlowProcessInfo { WorkFlowProcessId = Guid.NewGuid(), WorkFlowId = workflowInfo.WorkFlowId, OperationOrTransactionId = workFlowOperation.WorkFlowOperationId, OperationOrTransactionType = (int)OperationOrTransactionType.Operation, ProcessType = (int)WorkFlowProcessType.PreProcess }); workFlowProcesses.Add(new WorkFlowProcessInfo { WorkFlowProcessId = Guid.NewGuid(), WorkFlowId = workflowInfo.WorkFlowId, OperationOrTransactionId = workFlowOperation.WorkFlowOperationId, OperationOrTransactionType = (int)OperationOrTransactionType.Operation, ProcessType = (int)WorkFlowProcessType.Process }); workFlowProcesses.Add(new WorkFlowProcessInfo { WorkFlowProcessId = Guid.NewGuid(), WorkFlowId = workflowInfo.WorkFlowId, OperationOrTransactionId = workFlowOperation.WorkFlowOperationId, OperationOrTransactionType = (int)OperationOrTransactionType.Operation, ProcessType = (int)WorkFlowProcessType.PostProcess }); } _managerWorkFlowProcess.CreateWorkFlowProcess(tenantId, workFlowProcesses); } } return(true); }
List <WorkFlowInfo> IManagerWorkFlow.GetAllWorkFlowDetails(Guid tenantId, string entityname) { var entityId = iMetadataManager.GetEntityContextByEntityName(entityname); var workFlows = _reviewWorkFlow.GetWorkFlows(tenantId, entityId); var subTypes = iMetadataManager.GetSubTypesDetails(entityname); if (workFlows != null && workFlows.Count > 0) { var allSteps = WorkFlowHelper.GetAllSteps(entityId); var workFlowIds = workFlows.Select(p => p.WorkFlowId).ToList(); var workFlowSteps = _managerWorkFlowStep.GetWorkFlowStepsByWorkFlowIds(tenantId, workFlowIds); var workFlowInnerSteps = _managerWorkFlowInnerStep.GetWorkFlowInnerStepByWorkFlowIds(tenantId, workFlowIds); var roles = _managerWorkFlowRole.GetWorkFlowRolesByWorkFlowIds(tenantId, workFlowIds).ToList(); foreach (var workFlow in workFlows) { var thisWorkFlowRoles = (from role in roles where role.WorkFlowId == workFlow.WorkFlowId select role).ToList(); var allWorkFlowSteps = new List <WorkFlowStepInfo>(); var allStepSavedCount = (from workFlowStep in workFlowSteps where workFlowStep.WorkFlowId == workFlow.WorkFlowId orderby workFlowStep.SequenceNumber descending select workFlowStep.SequenceNumber).FirstOrDefault(); foreach (var step in allSteps) { //return saved step var checkStepsSaved = (from workFlowStep in workFlowSteps where workFlowStep.WorkFlowId == workFlow.WorkFlowId && workFlowStep.TransitionType.Id == step.Id select workFlowStep).FirstOrDefault(); var checkRoles = (from role in thisWorkFlowRoles where role.WorkFlowStepId == checkStepsSaved.WorkFlowStepId select role).ToList(); if (checkStepsSaved != null) { checkStepsSaved.TransitionType.Name = step.Key; checkStepsSaved.WorkFlowId = workFlow.WorkFlowId; checkStepsSaved.Roles = checkRoles; allWorkFlowSteps.Add(checkStepsSaved); } } foreach (var workFlowStep in allWorkFlowSteps) { var itsInnerSteps = (from workFlowInnerStep in workFlowInnerSteps where workFlowInnerStep.WorkFlowId == workFlow.WorkFlowId && workFlowInnerStep.WorkFlowStepId == workFlowStep.WorkFlowStepId select workFlowInnerStep).ToList(); foreach (var workFlowInnerStep in itsInnerSteps) { workFlowInnerStep.TransitionType.Name = (from allStep in allSteps where allStep.Id == workFlowInnerStep.TransitionType.Id select allStep.Key).FirstOrDefault(); } workFlowStep.InnerSteps = itsInnerSteps.OrderBy(p => p.SequenceNumber).ToList(); } workFlow.Steps = allWorkFlowSteps.OrderBy(p => p.SequenceNumber).ToList(); //Chnage sab typesId To name var mapped = subTypes.FirstOrDefault(t => t.Key.Equals(workFlow.SubTypeCode)); if (mapped.Key != null) { workFlow.SubTypeCode = mapped.Value; } workFlow.EntityId = entityname; } } return(workFlows); }
WorkFlowInfo IManagerWorkFlow.GetWorkFlowDetail(Guid tenantId, string entityname, string subTypeName) { var entityId = iMetadataManager.GetEntityContextByEntityName(entityname); var subTypeCode = iMetadataManager.GetSubTypeId(entityname, subTypeName); var workFlow = _reviewWorkFlow.GetWorkFlow(tenantId, entityId, subTypeCode); if (workFlow != null) { var workflowOperations = _managerWorkFlowOperation.GetWorkFlowOperations(tenantId, workFlow.WorkFlowId); workFlow.Operations = workflowOperations; //Get all steps from statci class var allSteps = WorkFlowHelper.GetAllSteps(entityId); var workFlowSteps = _managerWorkFlowStep.GetWorkFlowSteps(tenantId, workFlow.WorkFlowId); var workFlowInnerSteps = _managerWorkFlowInnerStep.GetWorkFlowInnerStep(tenantId, workFlow.WorkFlowId); var workFlowProcess = _managerWorkFlowProcess.GetWorkFlowProcess(tenantId, workFlow.WorkFlowId); // var workFlowProcessTasks=_managerWorkFlowProcessTask.GetWorkFlowProcessTask(tenantId,workFlow.WorkFlowId); var allWorkFlowSteps = new List <WorkFlowStepInfo>(); var allStepSavedCount = (from workFlowStep in workFlowSteps orderby workFlowStep.SequenceNumber descending select workFlowStep.SequenceNumber).FirstOrDefault(); foreach (var step in allSteps) { //return saved step var checkStepsSaved = (from workFlowStep in workFlowSteps where workFlowStep.TransitionType.Id == step.Id select workFlowStep).FirstOrDefault(); if (checkStepsSaved != null) { checkStepsSaved.TransitionType.Name = step.Key; checkStepsSaved.WorkFlowId = workFlow.WorkFlowId; allWorkFlowSteps.Add(checkStepsSaved); } else { //return not saved step allWorkFlowSteps.Add(new WorkFlowStepInfo { WorkFlowStepId = Guid.Empty, WorkFlowId = workFlow.WorkFlowId, SequenceNumber = ++allStepSavedCount, TransitionType = new ItemName { Id = step.Id, Name = step.Key } }); } } foreach (var workFlowStep in allWorkFlowSteps) { var itsInnerSteps = (from workFlowInnerStep in workFlowInnerSteps where workFlowInnerStep.WorkFlowStepId == workFlowStep.WorkFlowStepId select workFlowInnerStep).ToList(); foreach (var workFlowInnerStep in itsInnerSteps) { workFlowInnerStep.TransitionType.Name = (from allStep in allSteps where allStep.Id == workFlowInnerStep.TransitionType.Id select allStep.Key).FirstOrDefault(); workFlowInnerStep.WorkFlowProcess = (from workFlowPro in workFlowProcess where workFlowPro.OperationOrTransactionId == workFlowInnerStep.InnerStepId select workFlowPro).ToList(); } workFlowStep.InnerSteps = itsInnerSteps.OrderBy(p => p.SequenceNumber).ToList(); } workFlow.Steps = allWorkFlowSteps.OrderBy(p => p.SequenceNumber).ToList(); //Chnage sab typesId To name workFlow.SubTypeCode = subTypeName; workFlow.EntityId = entityname; } return(workFlow); }