// Tasks ------------------------------------------------ /// <summary> /// Creates the instance of the specified definition. /// </summary> /// <param name="scope">The scope to consider.</param> /// <param name="definitionUniqueId">The unique ID of the definition to consider.</param> /// <param name="log">The log to consider.</param> public static IBdoTaskConfiguration CreateTaskConfiguration( this IBdoScope scope, string definitionUniqueId, IBdoLog log = null) { IBdoTaskConfiguration configuration = null; IBdoTaskDefinition definition = scope.ExtensionStore.GetItemDefinitionWithUniqueId <BdoTaskDefinition>(definitionUniqueId); if (definition == null) { log?.AddError("Could not retrieve the extension item '" + definitionUniqueId + "' of kind '" + BdoExtensionItemKind.Task.ToString() + "'"); } else { configuration = BdoExtensionFactory.CreateTaskConfiguration(definitionUniqueId); configuration.Update(definition); } return(configuration); }
/// <summary> /// Creates the instance of the specified definition. /// </summary> /// <param name="scope">The scope to consider.</param> /// <param name="configuration">The configuration to consider.</param> /// <param name="name">The name to consider.</param> /// <param name="log">The log to consider.</param> /// <param name="scriptVariableSet">The script variable set to use.</param> /// <returns>Returns the created task.</returns> public static BdoTask CreateTask( this IBdoScope scope, IBdoTaskConfiguration configuration = null, string name = null, IBdoLog log = null, IScriptVariableSet scriptVariableSet = null) { BdoTask task = null; if (scope?.Check(true).HasErrorsOrExceptions() == false) { if (configuration != null) { // we get the task class reference IBdoTaskDefinition definition = scope.ExtensionStore.GetItemDefinitionWithUniqueId <IBdoTaskDefinition>(configuration?.DefinitionUniqueId); if (definition == null) { log?.AddError("Could not retrieve the extension task '" + configuration.DefinitionUniqueId + "' definition"); } else { // we intantiate the task AssemblyHelper.CreateInstance(definition.RuntimeType, out object item).AddEventsTo(log); if (!log.HasErrorsOrExceptions()) { task = item as BdoTask; task.Name = name ?? configuration?.Name; task.UpdateFromElementSet <TaskInputAttribute>(configuration, scope, scriptVariableSet); task.UpdateFromElementSet <TaskOutputAttribute>(configuration, scope, scriptVariableSet); } } } } return(task); }