/// <inheritdoc />
        public override async Task <object> Execute(WorkflowInstanceState state, CancellationToken token)
        {
            CompiledScript script = await compiler.CompileScriptAsync(Name);

            IDictionary <string, object> arguments = await Arguments.EvaluateArguments(state.Variables, token);

            state.Logger.Info($"Executing script '{script.Name}'", string.Join("\n", arguments.Select(p => $"{p.Key}: {p.Value}")));
            return(await script.Instance.ExecuteAsync(new VariableProvider(state.Variables, arguments), token));
        }
        /// <inheritdoc />
        public async Task <WorkableTask> Execute(long id, int?revision = null, IDictionary <string, object> variables = null, TimeSpan?wait = null)
        {
            CompiledScript script = await scriptcompiler.CompileScriptAsync(id, revision);

            IDictionary <string, object> runtimevariables = await variables.TranslateVariables(scriptcompiler, ScriptLanguage.NCScript);

            WorkableTask scripttask = scriptinstances.CreateTask(WorkableType.Script, script.Id, script.Revision, script.Name, runtimevariables);

            try {
                return(await Execute(script.Instance, scripttask, runtimevariables, wait));
            }
            catch (Exception e) {
                scripttask.Log.Add(e.ToString());
                scripttask.Status = TaskStatus.Failure;
                await scriptinstances.FinishTask(scripttask.Id);
            }

            return(scripttask);
        }
        /// <inheritdoc />
        public object Execute(IDictionary <string, object> arguments)
        {
            arguments.TranslateDictionary();
            arguments["log"] = logger;

            CompiledScript script = compiler.CompileScriptAsync(name, revision).GetAwaiter().GetResult();
            object         result = script.Instance.Execute(arguments);

            return(result);
        }
Beispiel #4
0
 /// <inheritdoc />
 protected override async Task <IScript> LoadScript()
 {
     return((await compiler.CompileScriptAsync(scriptid)).Instance);
 }
Beispiel #5
0
 /// <inheritdoc />
 public object Execute(IDictionary <string, object> arguments)
 {
     arguments["log"] = logger;
     return(compiler.CompileScriptAsync(name, revision).GetAwaiter().GetResult().Instance.Execute(arguments));
 }