Example #1
0
        public async Task <IHttpActionResult> UpdateWorkflowDiagram(int workflowId, [FromBody] DWorkflow workflow)
        {
            await _privilegesManager.Demand(Session.UserId, InstanceAdminPrivileges.AccessAllProjectData);

            if (workflow == null)
            {
                return(ResponseMessage(Request.CreateResponse(HttpStatusCode.BadRequest,
                                                              new ImportWorkflowResult
                {
                    ErrorMessage = ErrorMessages.WorkflowModelIsEmpty,
                    WorkflowId = workflowId,
                    ResultCode = ImportWorkflowResultCodes.InvalidModel
                })));
            }

            var ieWorkflow = WorkflowHelper.MapDWorkflowToIeWorkflow(workflow);

            _workflowService.FileRepository = GetFileRepository();

            var result = await _workflowService.UpdateWorkflowViaImport(Session.UserId, workflowId, ieWorkflow, workflowMode : WorkflowMode.Canvas);

            switch (result.ResultCode)
            {
            case ImportWorkflowResultCodes.Ok:
                return(Ok(result));

            case ImportWorkflowResultCodes.InvalidModel:
                return(ResponseMessage(Request.CreateResponse(HttpStatusCode.BadRequest, result)));

            case ImportWorkflowResultCodes.Conflict:
                return(ResponseMessage(Request.CreateResponse(HttpStatusCode.Conflict, result)));

            default:
                // Should never happen.
                return(InternalServerError(new Exception("Unknown error.")));
            }
        }
Example #2
0
        public static IeWorkflow MapDWorkflowToIeWorkflow(DWorkflow sourceWorkflow)
        {
            var destinationWorkflow = new IeWorkflow
            {
                Id                     = sourceWorkflow.Id,
                Name                   = sourceWorkflow.Name,
                Description            = sourceWorkflow.Description,
                IsActive               = sourceWorkflow.IsActive,
                HasProcessArtifactType = sourceWorkflow.HasProcessArtifactType,
                NewArtifactEvents      = sourceWorkflow.NewArtifactEvents?.Select(dNewArtifactEvent => new IeNewArtifactEvent
                {
                    Id       = dNewArtifactEvent.Id,
                    Name     = dNewArtifactEvent.Name,
                    Triggers = MapToIeTriggers(dNewArtifactEvent.Triggers)
                })
                                         .ToList() ?? new List <IeNewArtifactEvent>(),
                Projects = sourceWorkflow.Projects?.Select(dProject => new IeProject
                {
                    Id            = dProject.Id,
                    Path          = dProject.Path,
                    ArtifactTypes = dProject.ArtifactTypes
                                    ?.Select(
                        dArtifactType => new IeArtifactType
                    {
                        Id   = dArtifactType.Id,
                        Name = dArtifactType.Name
                    })
                                    .ToList() ?? new List <IeArtifactType>()
                })
                           .ToList() ?? new List <IeProject>(),
                PropertyChangeEvents = sourceWorkflow.PropertyChangeEvents?.Select(dPropertyChangeEvent => new IePropertyChangeEvent
                {
                    Id           = dPropertyChangeEvent.Id,
                    Name         = dPropertyChangeEvent.Name,
                    PropertyId   = dPropertyChangeEvent.PropertyId,
                    PropertyName = dPropertyChangeEvent.PropertyName,
                    Triggers     = MapToIeTriggers(dPropertyChangeEvent.Triggers)
                })
                                       .ToList() ?? new List <IePropertyChangeEvent>(),
                States = sourceWorkflow.States?.Select(dState => new IeState
                {
                    Id        = dState.Id,
                    Name      = dState.Name,
                    IsInitial = dState.IsInitial,
                    Location  = dState.Location
                })
                         .ToList() ?? new List <IeState>(),
                TransitionEvents = sourceWorkflow.TransitionEvents?.Select(dTransitionEvent => new IeTransitionEvent
                {
                    Id                   = dTransitionEvent.Id,
                    Name                 = dTransitionEvent.Name,
                    FromState            = dTransitionEvent.FromState,
                    FromStateId          = dTransitionEvent.FromStateId,
                    ToState              = dTransitionEvent.ToState,
                    ToStateId            = dTransitionEvent.ToStateId,
                    SkipPermissionGroups = dTransitionEvent.SkipPermissionGroups,
                    PortPair             = dTransitionEvent.PortPair != null
                            ? new IePortPair
                    {
                        FromPort = Enum.IsDefined(typeof(DiagramPort), dTransitionEvent.PortPair.FromPort) ? dTransitionEvent.PortPair.FromPort : DiagramPort.None,
                        ToPort   = Enum.IsDefined(typeof(DiagramPort), dTransitionEvent.PortPair.ToPort) ? dTransitionEvent.PortPair.ToPort : DiagramPort.None
                    }
                            : null,
                    Triggers         = MapToIeTriggers(dTransitionEvent.Triggers),
                    PermissionGroups = dTransitionEvent.PermissionGroups?.Select(dGroup => new IeGroup
                    {
                        Id   = dGroup.Id,
                        Name = dGroup.Name
                    })
                                       .ToList() ?? new List <IeGroup>()
                })
                                   .ToList() ?? new List <IeTransitionEvent>()
            };

            return(destinationWorkflow);
        }
Example #3
0
        public static DWorkflow MapIeWorkflowToDWorkflow(IeWorkflow sourceWorkflow)
        {
            var destinationWorkflow = new DWorkflow();

            destinationWorkflow.Id                     = sourceWorkflow.Id;
            destinationWorkflow.Name                   = sourceWorkflow.Name;
            destinationWorkflow.Description            = sourceWorkflow.Description;
            destinationWorkflow.IsActive               = sourceWorkflow.IsActive;
            destinationWorkflow.HasProcessArtifactType = sourceWorkflow.HasProcessArtifactType;
            destinationWorkflow.NewArtifactEvents      = sourceWorkflow.NewArtifactEvents?.Select(ieNewArtifactEvent =>
                                                                                                  new DNewArtifactEvent
            {
                Id       = ieNewArtifactEvent.Id,
                Name     = ieNewArtifactEvent.Name,
                Triggers = MapToDTriggers(ieNewArtifactEvent.Triggers)
            }).ToList();

            destinationWorkflow.Projects = sourceWorkflow.Projects?.Select(ieProject => new DProject
            {
                Id            = ieProject.Id,
                ArtifactTypes = ieProject.ArtifactTypes?.Select(ieArtifactType => new DArtifactType
                {
                    Id   = ieArtifactType.Id,
                    Name = ieArtifactType.Name
                })
            }).ToList();

            destinationWorkflow.PropertyChangeEvents = sourceWorkflow.PropertyChangeEvents?.Select(
                iePropertyChangeEvent => new DPropertyChangeEvent
            {
                Id           = iePropertyChangeEvent.Id,
                Name         = iePropertyChangeEvent.Name,
                PropertyId   = iePropertyChangeEvent.PropertyId,
                PropertyName = iePropertyChangeEvent.PropertyName,
                Triggers     = MapToDTriggers(iePropertyChangeEvent.Triggers.ToList())
            }).ToList();

            destinationWorkflow.States = sourceWorkflow.States?.Select(ieState => new DState
            {
                Id        = ieState.Id,
                Name      = ieState.Name,
                IsInitial = ieState.IsInitial,
                Location  = ieState.Location
            })
                                         .ToList();

            destinationWorkflow.TransitionEvents = sourceWorkflow.TransitionEvents?.Select(ieTransitionEvent =>
                                                                                           new DTransitionEvent
            {
                Id                   = ieTransitionEvent.Id,
                Name                 = ieTransitionEvent.Name,
                FromState            = ieTransitionEvent.FromState,
                FromStateId          = ieTransitionEvent.FromStateId,
                ToState              = ieTransitionEvent.ToState,
                ToStateId            = ieTransitionEvent.ToStateId,
                SkipPermissionGroups = ieTransitionEvent.SkipPermissionGroups,
                PortPair             = ieTransitionEvent.PortPair != null
                        ? new DPortPair
                {
                    FromPort = ieTransitionEvent.PortPair.FromPort,
                    ToPort   = ieTransitionEvent.PortPair.ToPort
                }
                        : null,
                Triggers         = MapToDTriggers(ieTransitionEvent.Triggers),
                PermissionGroups = ieTransitionEvent.PermissionGroups?.Select(ieGroup => new DGroup
                {
                    Id   = ieGroup.Id,
                    Name = ieGroup.Name
                })
                                   .ToList()
            }).ToList();

            return(destinationWorkflow);
        }