diff --git a/README.md b/README.md index e18e7f2..c9ba29a 100644 --- a/README.md +++ b/README.md @@ -117,9 +117,7 @@ To get a list of tasks in Space, use ```GetTasksListAsync```. var result = await client.GetTasksListAsync(apiSession, cancellationToken ); foreach(var task in result.Items){ // do somethig with task - if(task.TaskState == TaskState.Failed){ - // task failed - } + } ``` If you want to get more details about a task (e.g. task parameters), use the `GetTaskAsync` method. @@ -135,7 +133,7 @@ Use ```TaskChangeModeAsync```. cancellationToken); ``` -##### Starting the Task +##### Starting the Workflow To run the task: @@ -147,18 +145,17 @@ To run the task: new TaskParameterBase{ Name ="String parameter", Value ="string parameter value" } }; var result2 = await apiClient.StartTaskAsync(apiSession, - new StartTaskRequest { TaskId = taskId, TaskParameters = taskParameters }, cancellationToken); + new StartTaskRequest(taskId) { TaskParameters = taskParameters }, cancellationToken); ``` The caller gets control back immediately after the task is started. If you attempt to start a task that is already running, no exception is generated. -##### Stopping the Task +##### Stopping the Worflow -To stop the task, call ```StopTaskAsync```: -``` C# - - var taskGuid = Guid.Parse("691ea42e-9e6b-438e-84d6-b743841c970e"); - await client.StopTaskAsync(apiSession, taskGuid, cancellationToken ); +To stop the workflow, call ```CancelComputationAsync``` with ```computationId``` obtained during the ```StartTaskAsync``` call : +``` C# + + await client.StopTaskAsync(apiSession, computationId, cancellationToken ); ``` The caller gets control back immediately after the task is instructed to stop. @@ -171,13 +168,8 @@ Allows to get the task info (including the task parameters) Console.WriteLine("Info about task:"); Console.WriteLine(string.Format("Id:'{0}'", task.Id)); - Console.WriteLine(string.Format("Name:'{0}'", task.TaskName)); - Console.WriteLine(string.Format("IsRunning:'{0}'", task.IsRunning)); - Console.WriteLine(string.Format("Enabled:'{0}'", task.Enabled)); - Console.WriteLine(string.Format("Note:'{0}'", task.Note)); - Console.WriteLine(string.Format("ProjectPath:'{0}'", task.ProjectPath)); - Console.WriteLine(string.Format("StatusText:'{0}'", task.StatusText)); - Console.WriteLine(string.Format("TaskState:'{0}'", task.TaskState)); + Console.WriteLine(string.Format("Name:'{0}'", task.TaskName)); + Console.WriteLine(string.Format("Note:'{0}'", task.Note)); Console.WriteLine("Task Parameters:"); foreach (var parameter in task.TaskParameters) { @@ -192,29 +184,6 @@ Allows to get the task info (including the task parameters) ``` - -#### Retrieving task status - -To check the task state (running/ not running / failed) and to retrieve task errors, call `GetTaskStatusAsync`: - -``` C# - try - { - var taskGuid = Guid.Parse("691ea42e-9e6b-438e-84d6-b743841c970e"); - var status = await client.GetTaskStatusAsync(apiSession, taskGuid, cancellationToken ); - if(status.IsRunning){ - Console.WriteLine(string.Format("Task {0} is running", status.TaskName)); - } - } - catch(MorphApiNotFoundException notFound){ - Console.WriteLine("Task not found"); - } - -``` - - -#### - ### Files API The EasyMorph Server API allows accessing files of a Server space remotely. diff --git a/src/Client/ILowLevelApiClient.cs b/src/Client/ILowLevelApiClient.cs index cb31b65..32ac620 100644 --- a/src/Client/ILowLevelApiClient.cs +++ b/src/Client/ILowLevelApiClient.cs @@ -15,15 +15,23 @@ internal interface ILowLevelApiClient: IDisposable IRestClient RestClient { get; } // TASKS - Task> GetTaskStatusAsync(ApiSession apiSession, Guid taskId, CancellationToken cancellationToken); - Task> GetTasksListAsync(ApiSession apiSession, CancellationToken cancellationToken); - Task> GetTaskAsync(ApiSession apiSession, Guid taskId, CancellationToken cancellationToken); - Task> TaskChangeModeAsync(ApiSession apiSession, Guid taskId, SpaceTaskChangeModeRequestDto requestDto, CancellationToken cancellationToken); - - // RUN-STOP Task - Task> GetRunningTaskStatusAsync(ApiSession apiSession, Guid taskId, CancellationToken cancellationToken); - Task> StartTaskAsync(ApiSession apiSession, Guid taskId, TaskStartRequestDto taskStartRequestDto, CancellationToken cancellationToken); - Task> StopTaskAsync(ApiSession apiSession, Guid taskId, CancellationToken cancellationToken); + + Task> GetTasksListAsync(ApiSession apiSession, CancellationToken cancellationToken); + Task> GetTaskAsync(ApiSession apiSession, Guid taskId, CancellationToken cancellationToken); + Task> TaskChangeModeAsync(ApiSession apiSession, Guid taskId, SpaceTaskChangeModeRequestDto requestDto, CancellationToken cancellationToken); + + // start/cancel/info running workflow + + Task> StartTaskAsync(ApiSession apiSession, TaskStartRequestDto taskStartRequestDto, CancellationToken cancellationToken); + + Task> GetComputationDetailsAsync(ApiSession apiSession, string computationId , CancellationToken cancellationToken); + Task CancelComputationAsync(ApiSession apiSession, string computationId , CancellationToken cancellationToken); + + Task> GetWorkflowResultDetailsAsync(ApiSession apiSession, string resultToken, + CancellationToken cancellationToken); + + Task AcknowledgeWorkflowResultAsync(ApiSession apiSession, string resultToken, CancellationToken cancellationToken); + // Tasks validation Task> ValidateTasksAsync(ApiSession apiSession, ValidateTasksRequestDto validateTasksRequestDto, CancellationToken cancellationToken); diff --git a/src/Client/IMorphServerApiClient.cs b/src/Client/IMorphServerApiClient.cs index 5275ce6..479d2e6 100644 --- a/src/Client/IMorphServerApiClient.cs +++ b/src/Client/IMorphServerApiClient.cs @@ -32,11 +32,21 @@ public interface IMorphServerApiClient: IHasConfig, IDisposable Task GetServerStatusAsync(CancellationToken cancellationToken); - Task GetTaskStatusAsync(ApiSession apiSession, Guid taskId, CancellationToken cancellationToken); + Task OpenSessionAsync(OpenSessionRequest openSessionRequest, CancellationToken cancellationToken); - Task StartTaskAsync(ApiSession apiSession, StartTaskRequest startTaskRequest, CancellationToken cancellationToken); - Task StopTaskAsync(ApiSession apiSession, Guid taskId, CancellationToken cancellationToken); + /*COMPUTATIONS*/ + Task StartTaskAsync(ApiSession apiSession, StartTaskRequest startTaskRequest, CancellationToken cancellationToken); + Task GetComputationDetailsAsync(ApiSession apiSession, string computationId , CancellationToken cancellationToken); + Task CancelComputationAsync(ApiSession apiSession, string computationId , CancellationToken cancellationToken); + + Task GetWorkflowResultDetailsAsync(ApiSession apiSession, string resultToken, + CancellationToken cancellationToken); + + Task AcknowledgeWorkflowResultAsync(ApiSession apiSession, string resultToken, CancellationToken cancellationToken); + + + Task TaskChangeModeAsync(ApiSession apiSession, Guid taskId, TaskChangeModeRequest taskChangeModeRequest, CancellationToken cancellationToken); diff --git a/src/Client/LowLevelApiClient.cs b/src/Client/LowLevelApiClient.cs index c25ae35..ae7d7be 100644 --- a/src/Client/LowLevelApiClient.cs +++ b/src/Client/LowLevelApiClient.cs @@ -38,17 +38,7 @@ public Task> AuthLogoutAsync(ApiSession apiSession, C return apiClient.PostAsync(url, null, null, apiSession.ToHeadersCollection(), cancellationToken); } - public Task> GetRunningTaskStatusAsync(ApiSession apiSession, Guid taskId, CancellationToken cancellationToken) - { - if (apiSession == null) - { - throw new ArgumentNullException(nameof(apiSession)); - } - - var spaceName = apiSession.SpaceName; - var url = UrlHelper.JoinUrl("space", spaceName, "runningtasks", taskId.ToString("D")); - return apiClient.GetAsync(url, null, apiSession.ToHeadersCollection(), cancellationToken); - } + public Task> SpacesGetListAsync(CancellationToken cancellationToken) { @@ -63,7 +53,7 @@ public Task> SpacesLookupAsync(SpacesLookupRe return apiClient.PostAsync(url, requestDto,null, new HeadersCollection(), cancellationToken); } - public Task> GetTaskAsync(ApiSession apiSession, Guid taskId, CancellationToken cancellationToken) + public Task> GetTaskAsync(ApiSession apiSession, Guid taskId, CancellationToken cancellationToken) { if (apiSession == null) { @@ -71,10 +61,10 @@ public Task> GetTaskAsync(ApiSession apiSession, Guid ta } var url = UrlHelper.JoinUrl("space", apiSession.SpaceName, "tasks", taskId.ToString("D")); - return apiClient.GetAsync(url, null, apiSession.ToHeadersCollection(), cancellationToken); + return apiClient.GetAsync(url, null, apiSession.ToHeadersCollection(), cancellationToken); } - public Task> GetTasksListAsync(ApiSession apiSession, CancellationToken cancellationToken) + public Task> GetTasksListAsync(ApiSession apiSession, CancellationToken cancellationToken) { if (apiSession == null) { @@ -82,23 +72,13 @@ public Task> GetTasksListAsync(ApiSession apiSessio } var url = UrlHelper.JoinUrl("space", apiSession.SpaceName, "tasks"); - return apiClient.GetAsync(url, null, apiSession.ToHeadersCollection(), cancellationToken); + return apiClient.GetAsync(url, null, apiSession.ToHeadersCollection(), cancellationToken); } - public Task> GetTaskStatusAsync(ApiSession apiSession, Guid taskId, CancellationToken cancellationToken) - { - if (apiSession == null) - { - throw new ArgumentNullException(nameof(apiSession)); - } - var spaceName = apiSession.SpaceName; - var url = UrlHelper.JoinUrl("space", spaceName, "tasks", taskId.ToString("D")); - return apiClient.GetAsync(url, null, apiSession.ToHeadersCollection(), cancellationToken); + - } - - public Task> TaskChangeModeAsync(ApiSession apiSession, Guid taskId, SpaceTaskChangeModeRequestDto requestDto, CancellationToken cancellationToken) + public Task> TaskChangeModeAsync(ApiSession apiSession, Guid taskId, SpaceTaskChangeModeRequestDto requestDto, CancellationToken cancellationToken) { if (apiSession == null) { @@ -108,7 +88,7 @@ public Task> TaskChangeModeAsync(ApiSession apiSession, var spaceName = apiSession.SpaceName; var url = UrlHelper.JoinUrl("space", spaceName, "tasks", taskId.ToString("D"), "changeMode"); - return apiClient.PostAsync(url, requestDto, null, apiSession.ToHeadersCollection(), cancellationToken); + return apiClient.PostAsync(url, requestDto, null, apiSession.ToHeadersCollection(), cancellationToken); } public Task> ServerGetStatusAsync(CancellationToken cancellationToken) @@ -117,7 +97,7 @@ public Task> ServerGetStatusAsync(CancellationToken c return apiClient.GetAsync(url, null, new HeadersCollection(), cancellationToken); } - public Task> StartTaskAsync(ApiSession apiSession, Guid taskId, TaskStartRequestDto taskStartRequestDto, CancellationToken cancellationToken) + public Task> StartTaskAsync(ApiSession apiSession, TaskStartRequestDto taskStartRequestDto, CancellationToken cancellationToken) { if (apiSession == null) { @@ -125,23 +105,52 @@ public Task> StartTaskAsync(ApiSession apiSessio } var spaceName = apiSession.SpaceName; - var url = UrlHelper.JoinUrl("space", spaceName, "runningtasks", taskId.ToString("D"), "payload"); + var url = UrlHelper.JoinUrl("space", spaceName, "computations", "start", "task"); - return apiClient.PostAsync(url, taskStartRequestDto, null, apiSession.ToHeadersCollection(), cancellationToken); + return apiClient.PostAsync(url, taskStartRequestDto, null, apiSession.ToHeadersCollection(), cancellationToken); } - public Task> StopTaskAsync(ApiSession apiSession, Guid taskId, CancellationToken cancellationToken) + public Task> GetComputationDetailsAsync(ApiSession apiSession, string computationId, CancellationToken cancellationToken) { - if (apiSession == null) - { - throw new ArgumentNullException(nameof(apiSession)); - } + if (apiSession == null) throw new ArgumentNullException(nameof(apiSession)); + if (computationId == null) throw new ArgumentNullException(nameof(computationId)); var spaceName = apiSession.SpaceName; - var url = UrlHelper.JoinUrl("space", spaceName, "runningtasks", taskId.ToString("D")); - return apiClient.DeleteAsync(url, null, apiSession.ToHeadersCollection(), cancellationToken); + var url = UrlHelper.JoinUrl("space", spaceName, "computations", computationId); + return apiClient.GetAsync(url, null, apiSession.ToHeadersCollection(), cancellationToken); + } + + public Task CancelComputationAsync(ApiSession apiSession, string computationId, CancellationToken cancellationToken) + { + if (apiSession == null) throw new ArgumentNullException(nameof(apiSession)); + if (computationId == null) throw new ArgumentNullException(nameof(computationId)); + + var spaceName = apiSession.SpaceName; + var url = UrlHelper.JoinUrl("space", spaceName, "computations", computationId); + return apiClient.DeleteAsync(url, null, apiSession.ToHeadersCollection(), cancellationToken); } + public Task> GetWorkflowResultDetailsAsync(ApiSession apiSession, string resultToken, CancellationToken cancellationToken) + { + if (apiSession == null) throw new ArgumentNullException(nameof(apiSession)); + if (resultToken == null) throw new ArgumentNullException(nameof(resultToken)); + + var spaceName = apiSession.SpaceName; + var url = UrlHelper.JoinUrl("space", spaceName, "workflows-result", resultToken, "details"); + return apiClient.GetAsync(url, null, apiSession.ToHeadersCollection(), cancellationToken); + } + + public Task AcknowledgeWorkflowResultAsync(ApiSession apiSession, string resultToken, CancellationToken cancellationToken) + { + if (apiSession == null) throw new ArgumentNullException(nameof(apiSession)); + if (resultToken == null) throw new ArgumentNullException(nameof(resultToken)); + + var spaceName = apiSession.SpaceName; + var url = UrlHelper.JoinUrl("space", spaceName, "workflows-result", resultToken, "ack"); + return apiClient.PostAsync(url, null, null, apiSession.ToHeadersCollection(), cancellationToken); + } + + public Task> ValidateTasksAsync(ApiSession apiSession, ValidateTasksRequestDto validateTasksRequestDto, CancellationToken cancellationToken) { if (apiSession == null) diff --git a/src/Client/MorphServerApiClient.cs b/src/Client/MorphServerApiClient.cs index 18955a8..096aa50 100644 --- a/src/Client/MorphServerApiClient.cs +++ b/src/Client/MorphServerApiClient.cs @@ -155,7 +155,7 @@ protected HttpClient BuildHttpClient(ClientConfiguration config, HttpClientHandl /// /// Start Task like "fire and forget" /// - public Task StartTaskAsync(ApiSession apiSession, StartTaskRequest startTaskRequest, CancellationToken cancellationToken) + public Task StartTaskAsync(ApiSession apiSession, StartTaskRequest startTaskRequest, CancellationToken cancellationToken) { if (apiSession == null) { @@ -169,18 +169,72 @@ public Task StartTaskAsync(ApiSession apiSession, StartTaskRe return Wrapped(async (token) => { - var requestDto = new TaskStartRequestDto(); - if (startTaskRequest.TaskParameters != null) + var requestDto = new TaskStartRequestDto() { - requestDto.TaskParameters = startTaskRequest.TaskParameters.Select(TaskParameterMapper.ToDto).ToList(); - } + TaskId = startTaskRequest.TaskId, + TaskParameters = startTaskRequest.TaskParameters?.Select(TaskParameterMapper.ToDto)?.ToList() + }; - if (!startTaskRequest.TaskId.HasValue) - { - throw new Exception("TaskId must be set."); - } - var apiResult = await _lowLevelApiClient.StartTaskAsync(apiSession, startTaskRequest.TaskId.Value, requestDto, token); - return MapOrFail(apiResult, (dto) => RunningTaskStatusMapper.RunningTaskStatusFromDto(dto)); + var apiResult = await _lowLevelApiClient.StartTaskAsync(apiSession, requestDto, token); + return MapOrFail(apiResult, ComputationDetailedItemMapper.FromDto); + + }, cancellationToken, OperationType.ShortOperation); + } + + public Task GetComputationDetailsAsync(ApiSession apiSession, string computationId, CancellationToken cancellationToken) + { + if (apiSession == null) + { + throw new ArgumentNullException(nameof(apiSession)); + } + + + return Wrapped(async (token) => + { + var apiResult = await _lowLevelApiClient.GetComputationDetailsAsync(apiSession, computationId, token); + return MapOrFail(apiResult, ComputationDetailedItemMapper.FromDto); + + }, cancellationToken, OperationType.ShortOperation); + } + + public Task CancelComputationAsync(ApiSession apiSession, string computationId, CancellationToken cancellationToken) + { + if (apiSession == null) + { + throw new ArgumentNullException(nameof(apiSession)); + } + + + return Wrapped(async (token) => + { + await _lowLevelApiClient.CancelComputationAsync(apiSession, computationId, token); + return Task.FromResult(0); + + }, cancellationToken, OperationType.ShortOperation); + } + + public Task GetWorkflowResultDetailsAsync(ApiSession apiSession, string resultToken, CancellationToken cancellationToken) + { + if (apiSession == null) + { + throw new ArgumentNullException(nameof(apiSession)); + } + + + return Wrapped(async (token) => + { + var apiResult = await _lowLevelApiClient.GetWorkflowResultDetailsAsync(apiSession, resultToken, token); + return MapOrFail(apiResult, WorkflowResultDetailsMapper.FromDto); + + }, cancellationToken, OperationType.ShortOperation); + } + + public Task AcknowledgeWorkflowResultAsync(ApiSession apiSession, string resultToken, CancellationToken cancellationToken) + { + return Wrapped(async (token) => + { + await _lowLevelApiClient.AcknowledgeWorkflowResultAsync(apiSession, resultToken, token); + return Task.FromResult(0); }, cancellationToken, OperationType.ShortOperation); } @@ -310,52 +364,10 @@ Task ICanCloseSession.CloseSessionAsync(ApiSession apiSession, CancellationToken } - /// - /// Gets status of the task (Running/Not running) and payload - /// - /// api session - /// task guid - /// cancellation token - /// Returns task status - private Task GetRunningTaskStatusAsync(ApiSession apiSession, Guid taskId, CancellationToken cancellationToken) - { - if (apiSession == null) - { - throw new ArgumentNullException(nameof(apiSession)); - } - - return Wrapped(async (token) => - { - var apiResult = await _lowLevelApiClient.GetRunningTaskStatusAsync(apiSession, taskId, token); - return MapOrFail(apiResult, (dto) => RunningTaskStatusMapper.RunningTaskStatusFromDto(dto)); - - }, cancellationToken, OperationType.ShortOperation); - - } - - - /// - /// Gets status of the task - /// - /// api session - /// task guid - /// cancellation token - /// Returns task status - public Task GetTaskStatusAsync(ApiSession apiSession, Guid taskId, CancellationToken cancellationToken) - { - if (apiSession == null) - { - throw new ArgumentNullException(nameof(apiSession)); - } - return Wrapped(async (token) => - { - var apiResult = await _lowLevelApiClient.GetTaskStatusAsync(apiSession, taskId, token); - return MapOrFail(apiResult, (dto) => TaskStatusMapper.MapFromDto(dto)); + - }, cancellationToken, OperationType.ShortOperation); - - } + /// /// Change task mode /// @@ -414,29 +426,7 @@ public Task GetSpaceStatusAsync(ApiSession apiSession, Cancellation - /// - /// Stops the Task - /// - /// api session - /// - /// cancellation token - /// - public async Task StopTaskAsync(ApiSession apiSession, Guid taskId, CancellationToken cancellationToken) - { - if (apiSession == null) - { - throw new ArgumentNullException(nameof(apiSession)); - } - - await Wrapped(async (token) => - { - var apiResult = await _lowLevelApiClient.StopTaskAsync(apiSession, taskId, token); - FailIfError(apiResult); - return Task.FromResult(0); - - }, cancellationToken, OperationType.ShortOperation); - - } + /// /// Returns server status. May raise exception if server is unreachable @@ -684,7 +674,7 @@ public Task GetTasksListAsync(ApiSession apiSession, Cancellatio return Wrapped(async (token) => { var apiResult = await _lowLevelApiClient.GetTasksListAsync(apiSession, token); - return MapOrFail(apiResult, (dto) => SpaceTasksListsMapper.MapFromDto(dto)); + return MapOrFail(apiResult, (dto) => TasksListDtoMapper.MapFromDto(dto)); }, cancellationToken, OperationType.ShortOperation); diff --git a/src/Dto/ComputationDetailedItemDto.cs b/src/Dto/ComputationDetailedItemDto.cs new file mode 100644 index 0000000..080c64a --- /dev/null +++ b/src/Dto/ComputationDetailedItemDto.cs @@ -0,0 +1,24 @@ +using System.Runtime.Serialization; +using Morph.Server.Sdk.Dto.Computations; + +namespace Morph.Server.Sdk.Dto +{ + [DataContract] + internal class ComputationDetailedItemDto + { + [DataMember(Name = "computationId")] + public string ComputationId { get; set; } + [DataMember(Name = "startTimestamp")] + public string StartTimestamp { get; set; } + [DataMember(Name = "spaceName")] + public string SpaceName { get; set; } + [DataMember(Name = "projectDetails")] + public ProjectDetailsInfoDto projectDetails { get; set; } + [DataMember(Name="state")] + public ComputationStateDto State { get; set; } + [DataMember(Name="statusText")] + public string StatusText { get; set; } + + + } +} \ No newline at end of file diff --git a/src/Dto/Computations/ComputationDto.cs b/src/Dto/Computations/ComputationDto.cs new file mode 100644 index 0000000..af2085f --- /dev/null +++ b/src/Dto/Computations/ComputationDto.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using System.Runtime.Serialization; +using Morph.Server.Sdk.Dto; + +namespace Morph.Server.Sdk.Dto.Computations +{ + + + [DataContract] + internal class ComputationDto + { + [DataMember(Name = "computationId")] + public string ComputationId { get; set; } + + [DataMember(Name = "startTimestamp")] + public string StartTimestamp { get; set; } + + [DataMember(Name = "state")] + public ComputationStateDto State { get; set; } + + [DataMember(Name = "statusText")] + public string StatusText { get; set; } = string.Empty; + + } +} \ No newline at end of file diff --git a/src/Dto/Computations/ComputationStateDataDto.cs b/src/Dto/Computations/ComputationStateDataDto.cs new file mode 100644 index 0000000..0254963 --- /dev/null +++ b/src/Dto/Computations/ComputationStateDataDto.cs @@ -0,0 +1,12 @@ +using System.Runtime.Serialization; + +namespace Morph.Server.Sdk.Dto.Computations +{ + [DataContract] + internal class ComputationStateDataDto + { + [DataMember(Name = "resultObtainingToken")] + public string ResultObtainingToken { get; set; } + + } +} \ No newline at end of file diff --git a/src/Dto/Computations/ComputationStateDto.cs b/src/Dto/Computations/ComputationStateDto.cs new file mode 100644 index 0000000..56a7389 --- /dev/null +++ b/src/Dto/Computations/ComputationStateDto.cs @@ -0,0 +1,17 @@ +using System.Runtime.Serialization; + +namespace Morph.Server.Sdk.Dto.Computations +{ + [DataContract] + internal class ComputationStateDto + { + /// + /// see ComputationState enum + /// + [DataMember(Name = "type")] + public string Type { get; set; } + [DataMember(Name = "data")] + public ComputationStateDataDto Data { get; set; } + + } +} \ No newline at end of file diff --git a/src/Dto/ProjectDetailsInfoDto.cs b/src/Dto/ProjectDetailsInfoDto.cs new file mode 100644 index 0000000..228372b --- /dev/null +++ b/src/Dto/ProjectDetailsInfoDto.cs @@ -0,0 +1,16 @@ +using System.Runtime.Serialization; + +namespace Morph.Server.Sdk.Dto +{ + [DataContract] + public sealed class ProjectDetailsInfoDto + { + [DataMember(Name="projectName")] + public string ProjectName { get; set; } + [DataMember(Name="projectPath")] + public string ProjectPath { get; set; } + [DataMember(Name="projectLastEdited")] + public string ProjectLastEdited { get; set; } + + } +} \ No newline at end of file diff --git a/src/Dto/RunningTaskErrorInfoDto.cs b/src/Dto/RunningTaskErrorInfoDto.cs new file mode 100644 index 0000000..6234925 --- /dev/null +++ b/src/Dto/RunningTaskErrorInfoDto.cs @@ -0,0 +1,19 @@ +using System.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; + +namespace Morph.Server.Sdk.Dto +{ + // [DataContract] + // internal class RunningTaskErrorInfoDto + // { + // [DataMember(Name = "description")] + // public string Description { get; set; } + // [DataMember(Name = "location")] + // public string Location { get; set; } + // } + + + +} diff --git a/src/Dto/RunningTaskStatusDto.cs b/src/Dto/RunningTaskStatusDto.cs deleted file mode 100644 index 82e6ad7..0000000 --- a/src/Dto/RunningTaskStatusDto.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; - -namespace Morph.Server.Sdk.Dto -{ - [DataContract] - internal class RunningTaskStatusDto - { - [DataMember(Name = "id")] - public string Id { get; set; } - [DataMember(Name = "isRunning")] - public bool IsRunning { get; set; } - [DataMember(Name = "projectName")] - public string ProjectName { get; set; } - [DataMember(Name = "jobExecutionId")] - public string JobExecutionId { get; set; } - [DataMember(Name = "errors")] - public List Errors { get; set; } = new List(); - } - - [DataContract] - internal class RunningTaskErrorInfoDto - { - [DataMember(Name = "description")] - public string Description { get; set; } - [DataMember(Name = "location")] - public string Location { get; set; } - } - - - -} diff --git a/src/Dto/SpaceTasksListItemDto.cs b/src/Dto/SpaceTasksListItemDto.cs deleted file mode 100644 index 2899285..0000000 --- a/src/Dto/SpaceTasksListItemDto.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System.Collections.Generic; -using System.Runtime.Serialization; - -namespace Morph.Server.Sdk.Dto -{ - [DataContract] - internal class SpaceTasksListItemDto - { - [DataMember(Name = "jobId")] - public string JobId { get; set; } - [DataMember(Name = "projectFile")] - public string ProjectFile { get; set; } = string.Empty; - [DataMember(Name = "note")] - public string Note { get; set; } = string.Empty; - [DataMember(Name = "jobParameters")] - public List JobParameters { get; set; } - [DataMember(Name = "enabled")] - public bool Enabled { get; set; } = false; - [DataMember(Name = "status")] - public string Status { get; set; } = string.Empty; - [DataMember(Name = "name")] - public string Name { get; set; } = string.Empty; - [DataMember(Name = "statusText")] - public string StatusText { get; set; } = string.Empty; - [DataMember(Name = "isRunning")] - public bool IsRunning { get; set; } = false; - } -} diff --git a/src/Dto/TaskFullDto.cs b/src/Dto/TaskFullDto.cs new file mode 100644 index 0000000..4152de5 --- /dev/null +++ b/src/Dto/TaskFullDto.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using System.Runtime.Serialization; + +namespace Morph.Server.Sdk.Dto +{ + [DataContract] + internal class TaskFullDto + { + [DataMember(Name = "id")] + public string Id { get; set; } + [DataMember(Name = "projectFile")] + public string ProjectFile { get; set; } = string.Empty; + [DataMember(Name = "note")] + public string Note { get; set; } = string.Empty; + [DataMember(Name = "parameters")] + public List Parameters { get; set; } + [DataMember(Name = "enabled")] + public bool Enabled { get; set; } = false; + + [DataMember(Name = "name")] + public string Name { get; set; } = string.Empty; + + + } +} diff --git a/src/Dto/SpaceTaskDto.cs b/src/Dto/TaskShortDto.cs similarity index 59% rename from src/Dto/SpaceTaskDto.cs rename to src/Dto/TaskShortDto.cs index 1470898..d49b8ad 100644 --- a/src/Dto/SpaceTaskDto.cs +++ b/src/Dto/TaskShortDto.cs @@ -4,25 +4,26 @@ namespace Morph.Server.Sdk.Dto { [DataContract] - internal class SpaceTaskDto + internal class TaskShortDto { - [DataMember(Name = "jobId")] - public string JobId { get; set; } + [DataMember(Name = "id")] + public string Id { get; set; } + [DataMember(Name = "projectFile")] public string ProjectFile { get; set; } = string.Empty; + [DataMember(Name = "note")] public string Note { get; set; } = string.Empty; - [DataMember(Name = "jobParameters")] - public List JobParameters { get; set; } + [DataMember(Name = "enabled")] public bool Enabled { get; set; } = false; [DataMember(Name = "status")] public string Status { get; set; } = string.Empty; [DataMember(Name = "name")] public string Name { get; set; } = string.Empty; - [DataMember(Name = "statusText")] - public string StatusText { get; set; } = string.Empty; - [DataMember(Name = "isRunning")] - public bool IsRunning { get; set; } = false; + + [DataMember(Name="nextRunText")] + public string NextRunText { get; set; } = ""; + } } diff --git a/src/Dto/TaskStartRequestDto.cs b/src/Dto/TaskStartRequestDto.cs index 0f376e7..e75fd6b 100644 --- a/src/Dto/TaskStartRequestDto.cs +++ b/src/Dto/TaskStartRequestDto.cs @@ -10,6 +10,8 @@ namespace Morph.Server.Sdk.Dto [DataContract] internal class TaskStartRequestDto { + [DataMember(Name = "taskId")] + public Guid TaskId { get; set; } [DataMember(Name = "taskParameters")] public IList TaskParameters { get; set; } = new List(); } diff --git a/src/Dto/TaskStatusDto.cs b/src/Dto/TaskStatusDto.cs index 8e1edb7..4b9fa95 100644 --- a/src/Dto/TaskStatusDto.cs +++ b/src/Dto/TaskStatusDto.cs @@ -8,19 +8,19 @@ namespace Morph.Server.Sdk.Dto { - [DataContract] - internal class TaskStatusDto - { - [DataMember(Name = "status")] - public string Status { get; set; } - [DataMember(Name = "name")] - public string TaskName { get; set; } - [DataMember(Name = "statusText")] - public string StatusText { get; set; } - [DataMember(Name = "isRunning")] - public bool IsRunning { get; set; } - [DataMember(Name = "errors")] - public List Errors { get; set; } = new List(); - } + // [DataContract] + // internal class TaskStatusDto + // { + // [DataMember(Name = "status")] + // public string Status { get; set; } + // [DataMember(Name = "name")] + // public string TaskName { get; set; } + // [DataMember(Name = "statusText")] + // public string StatusText { get; set; } + // [DataMember(Name = "isRunning")] + // public bool IsRunning { get; set; } + // [DataMember(Name = "errors")] + // public List Errors { get; set; } = new List(); + // } } diff --git a/src/Dto/SpaceTasksListDto.cs b/src/Dto/TasksListDto.cs similarity index 50% rename from src/Dto/SpaceTasksListDto.cs rename to src/Dto/TasksListDto.cs index 4f5bd31..b5f2e19 100644 --- a/src/Dto/SpaceTasksListDto.cs +++ b/src/Dto/TasksListDto.cs @@ -4,13 +4,13 @@ namespace Morph.Server.Sdk.Dto { [DataContract] - internal class SpaceTasksListDto + internal class TasksListDto { [DataMember(Name = "values")] - public List Values { get; set; } - public SpaceTasksListDto() + public List Values { get; set; } + public TasksListDto() { - Values = new List(); + Values = new List(); } } } diff --git a/src/Dto/WorkflowResultDetailsDto.cs b/src/Dto/WorkflowResultDetailsDto.cs new file mode 100644 index 0000000..0017008 --- /dev/null +++ b/src/Dto/WorkflowResultDetailsDto.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; + +namespace Morph.Server.Sdk.Dto +{ + [DataContract] + public sealed class WorkflowResultDetailsDto + { + [DataMember(Name="journalEntryId")] + public string JournalEntryId { get; set; } + + [DataMember(Name="journalEntryUrl")] + public string JournalEntryUrl { get; set;} + + [DataMember(Name="finishedTime")] + public string FinishedTime { get;set; } + [DataMember(Name="spaceName")] + public string SpaceName { get; set;} + + [DataMember(Name="result")] + public string Result { get;set; } + + [DataMember(Name="errors")] + public List Errors { get; set; } = new List(); + + } +} \ No newline at end of file diff --git a/src/Dto/WorkflowResultErrorInfoDto.cs b/src/Dto/WorkflowResultErrorInfoDto.cs new file mode 100644 index 0000000..95a92c5 --- /dev/null +++ b/src/Dto/WorkflowResultErrorInfoDto.cs @@ -0,0 +1,14 @@ +using System.Runtime.Serialization; + +namespace Morph.Server.Sdk.Dto +{ + [DataContract] + public sealed class WorkflowResultErrorInfoDto + { + [DataMember(Name="description")] + public string Description { get; set; } + + [DataMember(Name="location")] + public string Location { get; set; } + } +} \ No newline at end of file diff --git a/src/Mappers/ComputationDetailedItemMapper.cs b/src/Mappers/ComputationDetailedItemMapper.cs new file mode 100644 index 0000000..6efeb6d --- /dev/null +++ b/src/Mappers/ComputationDetailedItemMapper.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using Morph.Server.Sdk.Dto; +using Morph.Server.Sdk.Model; + +namespace Morph.Server.Sdk.Mappers +{ + internal static class ComputationDetailedItemMapper + { + public static ComputationDetailedItem FromDto(ComputationDetailedItemDto dto) + { + return new ComputationDetailedItem + { + ComputationId = dto.ComputationId, + ProjectDetails = ProjectDetailsMapper.FromDto(dto.projectDetails), + State = ComputationStateMapper.FromDto(dto.State), + SpaceName = dto.SpaceName, + StartTimestamp = DateTime.Parse(dto.StartTimestamp), + StatusText = dto.StatusText + }; + } + } +} \ No newline at end of file diff --git a/src/Mappers/ComputationStateMapper.cs b/src/Mappers/ComputationStateMapper.cs new file mode 100644 index 0000000..0ec1914 --- /dev/null +++ b/src/Mappers/ComputationStateMapper.cs @@ -0,0 +1,23 @@ +using System; +using Morph.Server.Sdk.Dto.Computations; +using Morph.Server.Sdk.Model; + +namespace Morph.Server.Sdk.Mappers +{ + internal static class ComputationStateMapper + { + public static ComputationState FromDto(ComputationStateDto dto) + { + if (dto == null) throw new ArgumentNullException(nameof(dto)); + switch (dto.Type) + { + case "starting": return new ComputationState.Starting(); + case "running": return new ComputationState.Running(); + case "stopping": return new ComputationState.Stopping(); + case "finished": return new ComputationState.Finished(dto.Data.ResultObtainingToken); + default: throw new NotSupportedException($"Not supported ComputationStateDto ({dto.Type})"); + + } + } + } +} \ No newline at end of file diff --git a/src/Mappers/ProjectDetailsMapper.cs b/src/Mappers/ProjectDetailsMapper.cs new file mode 100644 index 0000000..060e2aa --- /dev/null +++ b/src/Mappers/ProjectDetailsMapper.cs @@ -0,0 +1,22 @@ +using System; +using Morph.Server.Sdk.Dto; +using Morph.Server.Sdk.Model; + +namespace Morph.Server.Sdk.Mappers +{ + internal static class ProjectDetailsMapper + { + public static ProjectDetailsInfo FromDto(ProjectDetailsInfoDto dto) + { + if (dto == null) throw new ArgumentNullException(nameof(dto)); + return new ProjectDetailsInfo() + { + ProjectName = dto.ProjectName, + ProjectPath = dto.ProjectPath, + ProjectLastEdited = !string.IsNullOrEmpty(dto.ProjectLastEdited) + ? DateTime.Parse(dto.ProjectLastEdited) + : (DateTime?) null + }; + } + } +} \ No newline at end of file diff --git a/src/Mappers/SpaceTaskMapper.cs b/src/Mappers/SpaceTaskMapper.cs index 244c48f..a8e1e46 100644 --- a/src/Mappers/SpaceTaskMapper.cs +++ b/src/Mappers/SpaceTaskMapper.cs @@ -6,64 +6,35 @@ namespace Morph.Server.Sdk.Mappers { - - internal static class RunningTaskStatusMapper - { - public static RunningTaskStatus RunningTaskStatusFromDto(RunningTaskStatusDto dto) - { - return new RunningTaskStatus - { - Id = Guid.Parse(dto.Id), - IsRunning = dto.IsRunning, - ProjectName = dto.ProjectName, - Errors = dto.Errors?.Select(SpaceTaskMapper.MapFromRunningTaskErrorInfoDto)?.ToList() ?? new List() - }; - } - } - internal static class SpaceTaskMapper { - public static ErrorInfo MapFromRunningTaskErrorInfoDto(RunningTaskErrorInfoDto dto) - { - return new ErrorInfo - { - Description = dto.Description, - Location = dto.Location - }; - } - public static SpaceTasksListItem MapItem(SpaceTasksListItemDto dto) + + public static SpaceTasksListItem MapItem(TaskShortDto dto) { return new SpaceTasksListItem { Enabled = dto.Enabled, - Id = Guid.Parse(dto.JobId), - IsRunning = dto.IsRunning, + Id = Guid.Parse(dto.Id), TaskName = dto.Name, Note = dto.Note, - ProjectPath = dto.ProjectFile, - StatusText = dto.StatusText, - TaskState = TaskStatusMapper.ParseTaskState(dto.Status) + ProjectPath = dto.ProjectFile }; } - public static SpaceTask MapFull(SpaceTaskDto dto) + public static SpaceTask MapFull(TaskFullDto fullDto) { var rsult = new SpaceTask { - Enabled = dto.Enabled, - Id = Guid.Parse(dto.JobId), - IsRunning = dto.IsRunning, - TaskName = dto.Name, - Note = dto.Note, - ProjectPath = dto.ProjectFile, - StatusText = dto.StatusText, - TaskState = TaskStatusMapper.ParseTaskState(dto.Status), - + Enabled = fullDto.Enabled, + Id = Guid.Parse(fullDto.Id), + TaskName = fullDto.Name, + Note = fullDto.Note, + ProjectPath = fullDto.ProjectFile, }; - if(dto.JobParameters != null) + if(fullDto.Parameters != null) { - rsult.TaskParameters = dto.JobParameters.Select(TaskParameterMapper.FromDto).ToList(); + rsult.TaskParameters = fullDto.Parameters.Select(TaskParameterMapper.FromDto).ToList(); } return rsult; } diff --git a/src/Mappers/TaskParameterMapper.cs b/src/Mappers/TaskParameterMapper.cs index 4237b93..0427b37 100644 --- a/src/Mappers/TaskParameterMapper.cs +++ b/src/Mappers/TaskParameterMapper.cs @@ -35,7 +35,8 @@ public static TaskParameterBase FromDto(TaskParameterResponseDto dto) return new TaskFilePathParameter(dto.Name, dto.Value) { Note = dto.Note }; case TaskParameterType.FolderPath: return new TaskFolderPathParameter(dto.Name, dto.Value) { Note = dto.Note }; - default: throw new NotImplementedException("Specified parameter type is not implemented yet"); + default: + return new TaskStringParameter(dto.Name, dto.Value) { Note = dto.Note }; } diff --git a/src/Mappers/TaskStatusMapper.cs b/src/Mappers/TaskStatusMapper.cs index 6c6f96c..51cc9fe 100644 --- a/src/Mappers/TaskStatusMapper.cs +++ b/src/Mappers/TaskStatusMapper.cs @@ -8,29 +8,29 @@ namespace Morph.Server.Sdk.Mappers { - internal static class TaskStatusMapper - { - public static Model.TaskStatus MapFromDto(TaskStatusDto dto) - { - return new Model.TaskStatus() - { - TaskName = dto.TaskName, - StatusText = dto.StatusText, - TaskState = ParseTaskState(dto.Status), - IsRunning = dto.IsRunning, - Errors = dto.Errors?.Select(SpaceTaskMapper.MapFromRunningTaskErrorInfoDto)?.ToList() ?? new List() - }; - } - - internal static TaskState ParseTaskState(string value) - { - TaskState status; - if(value != null && Enum.TryParse(value, true, out status)) - { - return status; - } - throw new Exceptions.ResponseParseException("Unable to parse " + value + " as valid TaskState"); - } - - } + // internal static class TaskStatusMapper + // { + // public static Model.TaskStatus MapFromDto(TaskStatusDto dto) + // { + // return new Model.TaskStatus() + // { + // TaskName = dto.TaskName, + // StatusText = dto.StatusText, + // TaskState = ParseTaskState(dto.Status), + // IsRunning = dto.IsRunning, + // Errors = dto.Errors?.Select(SpaceTaskMapper.MapFromRunningTaskErrorInfoDto)?.ToList() ?? new List() + // }; + // } + // + // internal static TaskState ParseTaskState(string value) + // { + // TaskState status; + // if(value != null && Enum.TryParse(value, true, out status)) + // { + // return status; + // } + // throw new Exceptions.ResponseParseException("Unable to parse " + value + " as valid TaskState"); + // } + // + // } } diff --git a/src/Mappers/SpaceTasksListsMapper.cs b/src/Mappers/TasksListDtoMapper.cs similarity index 76% rename from src/Mappers/SpaceTasksListsMapper.cs rename to src/Mappers/TasksListDtoMapper.cs index 2fcafb3..51616e1 100644 --- a/src/Mappers/SpaceTasksListsMapper.cs +++ b/src/Mappers/TasksListDtoMapper.cs @@ -9,9 +9,9 @@ namespace Morph.Server.Sdk.Mappers { - internal static class SpaceTasksListsMapper + internal static class TasksListDtoMapper { - public static SpaceTasksList MapFromDto(SpaceTasksListDto dto) + public static SpaceTasksList MapFromDto(TasksListDto dto) { return new SpaceTasksList() { diff --git a/src/Mappers/WorkflowResultDetailsMapper.cs b/src/Mappers/WorkflowResultDetailsMapper.cs new file mode 100644 index 0000000..61c6b0f --- /dev/null +++ b/src/Mappers/WorkflowResultDetailsMapper.cs @@ -0,0 +1,41 @@ +using System; +using System.Linq; +using Morph.Server.Sdk.Dto; +using Morph.Server.Sdk.Model; + +namespace Morph.Server.Sdk.Mappers +{ + internal static class WorkflowResultDetailsMapper + { + public static WorkflowResultDetails FromDto(WorkflowResultDetailsDto dto) + { + if (dto == null) throw new ArgumentNullException(nameof(dto)); + return new WorkflowResultDetails() + { + Errors = dto.Errors?.Select(WorkflowResultErrorInfoMapper.FromDto)?.ToList(), + FinishedTime = DateTime.Parse(dto.FinishedTime), + SpaceName = dto.SpaceName, + JournalEntryId = dto.JournalEntryId, + JournalEntryUrl = dto.JournalEntryUrl, + Result = ParseWorkflowResultCode(dto.Result) + }; + } + + private static WorkflowResultCode ParseWorkflowResultCode(string text) + { + switch (text) + { + case "Success": + return WorkflowResultCode.Success; + case "Failure": + return WorkflowResultCode.Failure; + case "TimedOut": + return WorkflowResultCode.TimedOut; + case "Canceled.By_User": + return WorkflowResultCode.CanceledByUser; + default: + throw new Exception($"Not supported WorkflowResultCode '{text}'"); + } + } + } +} \ No newline at end of file diff --git a/src/Mappers/WorkflowResultErrorInfoMapper.cs b/src/Mappers/WorkflowResultErrorInfoMapper.cs new file mode 100644 index 0000000..427699d --- /dev/null +++ b/src/Mappers/WorkflowResultErrorInfoMapper.cs @@ -0,0 +1,17 @@ +using Morph.Server.Sdk.Dto; +using Morph.Server.Sdk.Model; + +namespace Morph.Server.Sdk.Mappers +{ + internal static class WorkflowResultErrorInfoMapper{ + public static ErrorInfo FromDto(WorkflowResultErrorInfoDto dto) + { + return new ErrorInfo + { + Description = dto.Description, + Location = dto.Location + }; + } + + } +} \ No newline at end of file diff --git a/src/Model/ComputationDetailedItem.cs b/src/Model/ComputationDetailedItem.cs new file mode 100644 index 0000000..9217688 --- /dev/null +++ b/src/Model/ComputationDetailedItem.cs @@ -0,0 +1,44 @@ +using System; +using Morph.Server.Sdk.Mappers; + +namespace Morph.Server.Sdk.Model +{ + + + public enum WorkflowResultCode + { + //"Success" + Success, + //"Failure" + Failure , + // "TimedOut" + TimedOut, + // "Canceled.By_User" + CanceledByUser, + + } + + + public class ComputationDetailedItem + { + + + public string ComputationId { get; set; } + + public DateTime StartTimestamp { get; set; } + + public string SpaceName { get; set; } + + public ProjectDetailsInfo ProjectDetails { get; set; } + + public ComputationState State { get; set; } + + public string StatusText { get; set; } + + + + + //public List Errors { get; set; } = new List(); + + } +} diff --git a/src/Model/ComputationState.cs b/src/Model/ComputationState.cs new file mode 100644 index 0000000..07732f1 --- /dev/null +++ b/src/Model/ComputationState.cs @@ -0,0 +1,60 @@ +namespace Morph.Server.Sdk.Model +{ + public abstract class ComputationState + { + + public abstract bool IsRunning { get; } + + public sealed class Starting:ComputationState + { + + public Starting() + { + + } + + + public override bool IsRunning => true; + } + + public sealed class Running:ComputationState + { + + public Running() + { + + } + public override bool IsRunning => true; + } + + public sealed class Stopping:ComputationState + { + + public Stopping() + { + + } + public override bool IsRunning => true; + } + + + + + + public sealed class Finished:ComputationState + { + /// + /// Token to get a result from the server. + /// + public string ResultObtainingToken { get; } + + public Finished(string resultObtainingToken) + { + ResultObtainingToken = resultObtainingToken; + + } + public override bool IsRunning => false; + } + } + +} \ No newline at end of file diff --git a/src/Model/ErrorInfo.cs b/src/Model/ErrorInfo.cs new file mode 100644 index 0000000..9bbccdc --- /dev/null +++ b/src/Model/ErrorInfo.cs @@ -0,0 +1,8 @@ +namespace Morph.Server.Sdk.Model +{ + public class ErrorInfo + { + public string Description { get; set; } + public string Location { get; set; } + } +} \ No newline at end of file diff --git a/src/Model/ProjectDetailsInfo.cs b/src/Model/ProjectDetailsInfo.cs new file mode 100644 index 0000000..d98b9a8 --- /dev/null +++ b/src/Model/ProjectDetailsInfo.cs @@ -0,0 +1,15 @@ +using System; + +namespace Morph.Server.Sdk.Model +{ + public sealed class ProjectDetailsInfo + { + + public string ProjectName { get; set; } + + public string ProjectPath { get; set; } + + public DateTime? ProjectLastEdited { get; set; } + + } +} \ No newline at end of file diff --git a/src/Model/RunningTaskStatus.cs b/src/Model/RunningTaskStatus.cs deleted file mode 100644 index 9f3a6ea..0000000 --- a/src/Model/RunningTaskStatus.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Morph.Server.Sdk.Model -{ - public class RunningTaskStatus - { - public Guid Id { get; set; } - public bool IsRunning { get; set; } - public string ProjectName { get; set; } - public List Errors { get; set; } = new List(); - - } - public class ErrorInfo - { - public string Description { get; set; } - public string Location { get; set; } - } - - -} diff --git a/src/Model/SpaceTaskListItem.cs b/src/Model/SpaceTaskListItem.cs index 73e3a37..22216f7 100644 --- a/src/Model/SpaceTaskListItem.cs +++ b/src/Model/SpaceTaskListItem.cs @@ -10,10 +10,10 @@ public class SpaceTasksListItem public string ProjectPath { get; internal set; } = string.Empty; public string Note { get; internal set; } = string.Empty; //public List TaskParameters { get; internal set; } = new List(); - public string StatusText { get; internal set; } = string.Empty; + //public string StatusText { get; internal set; } = string.Empty; public bool Enabled { get; internal set; } = false; - public bool IsRunning { get; internal set; } = false; - public TaskState TaskState { get; internal set; } = TaskState.Disabled; + //public bool IsRunning { get; internal set; } = false; + //public TaskState TaskState { get; internal set; } = TaskState.Disabled; } public sealed class SpaceTask : SpaceTasksListItem diff --git a/src/Model/StartTaskRequest.cs b/src/Model/StartTaskRequest.cs index a4157f7..c218902 100644 --- a/src/Model/StartTaskRequest.cs +++ b/src/Model/StartTaskRequest.cs @@ -5,16 +5,13 @@ namespace Morph.Server.Sdk.Model { public sealed class StartTaskRequest { - public Guid? TaskId { get; set; } + public Guid TaskId { get; set; } public IEnumerable TaskParameters { get; set; } public StartTaskRequest(Guid taskId) { TaskId = taskId; } - public StartTaskRequest() - { - - } + } } \ No newline at end of file diff --git a/src/Model/TaskParameterType.cs b/src/Model/TaskParameterType.cs index ac629a4..9452450 100644 --- a/src/Model/TaskParameterType.cs +++ b/src/Model/TaskParameterType.cs @@ -14,6 +14,13 @@ public enum TaskParameterType Calculated, [Description("Folder path")] FolderPath, + [Description("Checkbox")] + Checkbox, + [Description("Fixed list")] + FixedList, + [Description("Multiple choice")] + MultipleChoice + } diff --git a/src/Model/TaskState.cs b/src/Model/TaskState.cs index f208407..c623532 100644 --- a/src/Model/TaskState.cs +++ b/src/Model/TaskState.cs @@ -1,14 +1,14 @@ namespace Morph.Server.Sdk.Model { - public enum TaskState - { - Idle, - Scheduled, - Running, - Stopping, - Disabled, - Failed, - } + // public enum TaskState + // { + // Idle, + // Scheduled, + // Running, + // Stopping, + // Disabled, + // Failed, + // } diff --git a/src/Model/TaskStatus.cs b/src/Model/TaskStatus.cs index 6f9b0f5..7828864 100644 --- a/src/Model/TaskStatus.cs +++ b/src/Model/TaskStatus.cs @@ -7,18 +7,18 @@ namespace Morph.Server.Sdk.Model { - /// - /// Server status - /// - public class TaskStatus - { - public TaskState TaskState { get; set; } - public string TaskName { get; set; } - public string StatusText { get; set; } - public bool IsRunning { get; set; } - public List Errors { get; set; } = new List(); - - } + // /// + // /// Server status + // /// + // public class TaskStatus + // { + // public TaskState TaskState { get; set; } + // public string TaskName { get; set; } + // public string StatusText { get; set; } + // public bool IsRunning { get; set; } + // public List Errors { get; set; } = new List(); + // + // } } diff --git a/src/Model/WorkflowResultDetails.cs b/src/Model/WorkflowResultDetails.cs new file mode 100644 index 0000000..8d149b1 --- /dev/null +++ b/src/Model/WorkflowResultDetails.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; + +namespace Morph.Server.Sdk.Model +{ + public class WorkflowResultDetails + { + + public string JournalEntryId { get; set; } + + public string JournalEntryUrl { get; set;} + + public DateTime FinishedTime { get;set; } + + public string SpaceName { get; set;} + + public WorkflowResultCode Result { get;set; } + + public List Errors { get; set; } = new List(); + } +} \ No newline at end of file diff --git a/src/Morph.Server.Sdk.csproj b/src/Morph.Server.Sdk.csproj index 588e79e..a66302e 100644 --- a/src/Morph.Server.Sdk.csproj +++ b/src/Morph.Server.Sdk.csproj @@ -28,9 +28,4 @@ - - - - - \ No newline at end of file diff --git a/src/Properties/AssemblyInfo.cs b/src/Properties/AssemblyInfo.cs index 327e439..a2e7b62 100644 --- a/src/Properties/AssemblyInfo.cs +++ b/src/Properties/AssemblyInfo.cs @@ -9,7 +9,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("EasyMorph Inc.")] [assembly: AssemblyProduct("Morph.Server.Sdk")] -[assembly: AssemblyCopyright("Copyright © EasyMorph Inc. 2017-2020")] +[assembly: AssemblyCopyright("Copyright © EasyMorph Inc. 2017-2021")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -21,5 +21,5 @@ [assembly: Guid("72ecc66f-62fe-463f-afad-e1ff5cc19cd9")] -[assembly: AssemblyVersion("1.4.3.0")] -[assembly: AssemblyFileVersion("1.4.3.0")] +[assembly: AssemblyVersion("5.0.0.0")] +[assembly: AssemblyFileVersion("5.0.0.0")]