示例#1
0
        public bool UpdateWorkflow(WorkflowDC workflow)
        {
            Enforce.ArgumentNotNull(workflow, "workflow");
            Enforce.ArgumentNotNull(workflow.Id, "workflow.Id");
            Enforce.ArgumentNotNull(workflow.StartState, "workflow.StartState");
            Enforce.ArgumentNotNull(workflow.DisplayName, "workflow.DisplayName");
            Enforce.ArgumentGreaterThanZero(workflow.States.Count, "workflow.States");

            var validator            = new WorkflowValidation();
            ValidationResult results = validator.Validate(workflow);

            IRepositoryHelper repoHelper = new RepositoryHelper(_connectionString);

            try
            {
                var unitOfWork      = new JsonUnitOfWork(_connectionString);
                var wfRepo          = new WorkflowRepository(unitOfWork);
                var workflowUpdated = wfRepo.Update(workflow.GetWorkflow());

                var stateRepo = new StateRepository(unitOfWork);
                stateRepo.SetWorkflowStates(workflow.Id, workflow.States.ToRepoList());

                var actRepo = new StateActivityRepository(unitOfWork);
                actRepo.SetWorkflowStates(workflow.Id, workflow.Activities.ToRepoList());

                var tranRepo = new StateTransitionRepository(unitOfWork);
                tranRepo.SetWorkflowStates(workflow.Id, workflow.Transitions.ToRepoList());

                repoHelper.GetUnitOfWork().SaveChanges();
            }
            catch (Exception ex)
            {
                var message = ex.Message;
                throw;
            }
            return(true);
        }
示例#2
0
        public WorkflowDC GetWorkflow(string workflowId)
        {
            Enforce.ArgumentGreaterThanZero(workflowId, "workflowId");

            IRepositoryHelper repoHelper = new RepositoryHelper(_connectionString);

            WorkflowDC workflowDC = null;

            try
            {
                var wfRepo   = repoHelper.GetWorkflowRepository(repoHelper.GetUnitOfWork());
                var workflow = wfRepo.Get(workflowId);

                if (workflow != null)
                {
                    workflowDC = new WorkflowDC(workflow);

                    var stateRepo = new StateRepository(repoHelper.GetUnitOfWork());
                    workflowDC.States = stateRepo.GetByWorkflow(workflowId).ToDataContractList();

                    var actRepo = new StateActivityRepository(repoHelper.GetUnitOfWork());
                    workflowDC.Activities = actRepo.GetByWorkflow(workflowId).ToDataContractList();

                    var tranRepo = new StateTransitionRepository(repoHelper.GetUnitOfWork());
                    workflowDC.Transitions = tranRepo.GetByWorkflow(workflowId).ToDataContractList();

                    repoHelper.GetUnitOfWork().SaveChanges();
                }
            }
            catch (Exception ex)
            {
                var message = ex.Message;
                throw;
            }
            return(workflowDC);
        }