/// <inheritdoc />
 public async Task UpdateExecution(long id, DateTime?nextexecution)
 {
     if (await updateexecution.ExecuteAsync(DateTime.Now, nextexecution, id) == 0)
     {
         throw new NotFoundException(typeof(ScheduledTask), id);
     }
 }
 /// <inheritdoc />
 public async Task Delete(long id)
 {
     if (await delete.ExecuteAsync(id) == 0)
     {
         throw new NotFoundException(typeof(ScheduledTask), id);
     }
 }
 /// <inheritdoc />
 public async Task Schedule(long id, DateTime?time)
 {
     if (await updatescheduletime.ExecuteAsync(time, id) == 0)
     {
         throw new NotFoundException(typeof(ScheduledTask), id);
     }
 }
Esempio n. 4
0
        /// <inheritdoc />
        public async Task <long> CreateWorkflow(WorkflowStructure data)
        {
            if (data.Transitions != null)
            {
                int nodecount = data.Nodes?.Length ?? 0;
                foreach (IndexTransition transition in data.Transitions)
                {
                    if (transition.OriginIndex < 0 || transition.OriginIndex >= nodecount)
                    {
                        throw new IndexOutOfRangeException("Transition origin index out of range");
                    }
                    if (transition.OriginIndex < 0 || transition.TargetIndex < 0 || transition.OriginIndex >= nodecount || transition.TargetIndex >= nodecount)
                    {
                        throw new IndexOutOfRangeException("Transition target index out of range");
                    }
                    if (transition.OriginIndex == transition.TargetIndex)
                    {
                        throw new InvalidOperationException("Transition target must not be the same node as origin");
                    }
                }
            }

            using Transaction transaction = database.Transaction();

            long workflowid = await insertworkflow.ExecuteAsync(1, data.Name, data.Language);

            await CreateNodeAndTransitions(transaction, workflowid, data.Nodes, data.Transitions);

            transaction.Commit();
            return(workflowid);
        }
Esempio n. 5
0
        /// <inheritdoc />
        public async Task ArchiveObject <T>(Transaction transaction, long id, int revision, T objectdata, string typename = null)
        {
            typename ??= typeof(T).Name;
            await using MemoryStream output = new MemoryStream();
            await using (GZipStream gzip = new GZipStream(output, CompressionLevel.Optimal)) {
                await Json.WriteAsync(objectdata, gzip);
            }

            await insert.ExecuteAsync(transaction, typename, id, revision, output.ToArray());
        }
Esempio n. 6
0
        /// <inheritdoc />
        public async Task DeleteScript(long scriptid)
        {
            Script script = await GetScript(scriptid);

            using Transaction transaction = database.Transaction();
            await archiveservice.ArchiveObject(transaction, script.Id, script.Revision, script);

            await deletescript.ExecuteAsync(transaction, scriptid);

            transaction.Commit();
        }
        /// <inheritdoc />
        public Task <long> Create(ScheduledTaskData data)
        {
            ScheduledDays days = data.Days;

            if (days == ScheduledDays.None)
            {
                days = ScheduledDays.All;
            }
            DateTime?nextexecution = data.FirstExecutionTime();

            return(insert.ExecuteAsync(data.Name, data.WorkableType, data.WorkableName, data.WorkableRevision, nextexecution, days, data.Interval));
        }
Esempio n. 8
0
        /// <inheritdoc />
        public async Task DeleteWorkflow(long workflowid)
        {
            using Transaction transaction = database.Transaction();
            await ArchiveWorkflow(transaction, workflowid);


            await DeleteTransitions(transaction, workflowid);
            await DeleteNodes(transaction, workflowid);

            await deleteworkflow.ExecuteAsync(transaction, workflowid);

            transaction.Commit();
        }
        /// <inheritdoc />
        public Task StoreTask(WorkableTask task)
        {
            task.Finished ??= DateTime.Now;

            return(insert.ExecuteAsync(task.Id,
                                       task.Type,
                                       task.WorkableId,
                                       task.WorkableRevision,
                                       task.WorkableName,
                                       task.Parameters.Serialize(),
                                       task.Started,
                                       task.Finished,
                                       task.Status,
                                       task.Result.Serialize(),
                                       task.Log.Serialize()));
        }
Esempio n. 10
0
 /// <inheritdoc />
 public Task <long> CreateScript(ScriptData script)
 {
     return(insertscript.ExecuteAsync(1, script.Name, script.Code, script.Language));
 }
Esempio n. 11
0
 Task DeleteNodes(Transaction transaction, long workflowid)
 {
     return(deletenodes.ExecuteAsync(transaction, workflowid));
 }
Esempio n. 12
0
 Task DeleteTransitions(Transaction transaction, long workflowid)
 {
     return(deletetransitions.ExecuteAsync(transaction, workflowid));
 }
Esempio n. 13
0
 Task CreateTransition(Transaction transaction, long workflowid, Guid origin, Guid target, string condition, TransitionType type, string log)
 {
     return(inserttransition.ExecuteAsync(transaction, workflowid, origin, target, condition, type, log));
 }
Esempio n. 14
0
 Task CreateNode(Transaction transaction, Guid nodeid, long workflowid, string name, string group, NodeType type, object parameters, string result)
 {
     return(insertnode.ExecuteAsync(transaction, nodeid, workflowid, name, type, parameters.Serialize(), group, result));
 }
Esempio n. 15
0
 Task UpdateWorkflow(Transaction transaction, long workflowid, string name, ScriptLanguage?language)
 {
     return(updateworkflow.ExecuteAsync(transaction, name, language, workflowid));
 }