code: public WorkflowStrategy getStrategyForWorkflow(
              final WorkflowExecutionItem workflow,
              Map<String, Object> config,
              String projectName
      )
              throws ExecutionServiceException
      {
  
          String provider = workflow.getWorkflow().getStrategy();
          String s = builtinProviderSynonyms.get(provider);
          if (null != s) {
              provider = s;
          }
          WorkflowStrategy workflowStrategy = providerOfType(provider);
          if (null != config) {
              IRundeckProjectConfig iRundeckProjectConfig = framework.getFrameworkProjectMgr().loadProjectConfig(
                      projectName);
  
              PropertyResolver resolver = PropertyResolverFactory.createResolver(
                      config.size() > 0 ? PropertyResolverFactory.instanceRetriever(config) : null,
                      PropertyResolverFactory.instanceRetriever(
                              iRundeckProjectConfig.getProjectProperties()
                      ),
                      framework.getPropertyRetriever()
              );
  
              Description description = DescribableServiceUtil.descriptionForProvider(
                      true,
                      workflowStrategy
              );
              if (description != null) {
                  PluginAdapterUtility.configureProperties(
                          resolver,
                          description,
                          workflowStrategy,
                          PropertyScope.Instance
                  );
              }
          }
          return workflowStrategy;
      }
docs: Get a configured strategy instance
  
  @param workflow workflow
  @param config   config data
  
  @return instance with configuration applied
  
  @throws ExecutionServiceException if provider cannot be loaded