コード例 #1
0
        public void UpsertPluginTypeAndSteps(Guid parentId, Type pluginType, string solutionName, RegistrationTypeEnum registrationType)
        {
            Guid Id = pluginType.Id ?? Guid.Empty;

            if (Id == Guid.Empty)
            {
                Id = pluginRepository.GetPluginTypeId(parentId, pluginType.Name);
                logWarning?.Invoke($"Extracted id using plugin type name {pluginType.Name}");
            }

            var type = new PluginType()
            {
                Name         = pluginType.Name,
                Description  = pluginType.Description,
                FriendlyName = pluginType.FriendlyName,
                TypeName     = pluginType.TypeName,
                WorkflowActivityGroupName = pluginType.WorkflowActivityGroupName,
                PluginAssemblyId          = new EntityReference(PluginAssembly.EntityLogicalName, parentId)
            };

            Id = ExecuteRequest(registrationType, Id, type);
            // AddComponentToSolution(Id, ComponentType.PluginType, solutionName);
            logVerbose?.Invoke($"UpsertPluginType {Id} completed");

            foreach (var step in pluginType.Steps)
            {
                var sdkMessageProcessingStepId = UpsertSdkMessageProcessingStep(Id, step, solutionName, registrationType);
                logVerbose?.Invoke($"Upsert SdkMessageProcessingStep {sdkMessageProcessingStepId} completed");
                foreach (var image in step.Images)
                {
                    var sdkMessageProcessingStepImageId = UpsertSdkMessageProcessingStepImage(sdkMessageProcessingStepId, image, solutionName, registrationType);
                    logVerbose?.Invoke($"Upsert SdkMessageProcessingStepImage {sdkMessageProcessingStepImageId} completed");
                }
            }
        }