Exemplo n.º 1
0
        protected internal virtual bool DeploymentsDiffer(IDeploymentEntity deployment, IDeploymentEntity saved)
        {
            if (deployment.GetResources() == null || saved.GetResources() == null)
            {
                return(true);
            }

            IDictionary <string, IResourceEntity> resources      = deployment.GetResources();
            IDictionary <string, IResourceEntity> savedResources = saved.GetResources();

            foreach (string resourceName in resources.Keys)
            {
                IResourceEntity savedResource = savedResources[resourceName];

                if (savedResource == null)
                {
                    return(true);
                }

                if (!savedResource.Generated)
                {
                    IResourceEntity resource = resources[resourceName];

                    byte[] bytes      = resource.Bytes;
                    byte[] savedBytes = savedResource.Bytes;
                    if (!StructuralComparisons.StructuralEqualityComparer.Equals(bytes, savedBytes))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
        public virtual ParsedDeployment Build(BpmnDeploymentHelper bpmnDeploymentHelper)
        {
            IList <IProcessDefinitionEntity> processDefinitions = new List <IProcessDefinitionEntity>();
            IDictionary <IProcessDefinitionEntity, BpmnParse>       processDefinitionsToBpmnParseMap = new Dictionary <IProcessDefinitionEntity, BpmnParse>();
            IDictionary <IProcessDefinitionEntity, IResourceEntity> processDefinitionsToResourceMap  = new Dictionary <IProcessDefinitionEntity, IResourceEntity>();

            var resources = deployment.GetResources().Values;

            foreach (IResourceEntity resource in resources)
            {
                if (IsBpmnResource(resource.Name))
                {
                    log.LogDebug($"Processing BPMN resource {resource.Name}");
                    BpmnParse parse = CreateBpmnParseFromResource(bpmnDeploymentHelper, resource);
                    foreach (IProcessDefinitionEntity processDefinition in parse.ProcessDefinitions)
                    {
                        processDefinition.BusinessKey  = parse.Deployment.BusinessKey;
                        processDefinition.StartForm    = parse.Deployment.StartForm;
                        processDefinition.BusinessPath = parse.Deployment.BusinessPath;
                        processDefinitions.Add(processDefinition);
                        processDefinitionsToBpmnParseMap[processDefinition] = parse;
                        processDefinitionsToResourceMap[processDefinition]  = resource;
                    }
                }
            }

            return(new ParsedDeployment(deployment, processDefinitions, processDefinitionsToBpmnParseMap, processDefinitionsToResourceMap));
        }