Skip to content

Commit

Permalink
Merge pull request #56 from jlucansky/AddMissingServiceEndpoints
Browse files Browse the repository at this point in the history
Add CaseInstance and Migration services
  • Loading branch information
jlucansky authored Jul 12, 2020
2 parents 3719893 + 356758a commit e586fa3
Show file tree
Hide file tree
Showing 28 changed files with 584 additions and 4 deletions.
1 change: 1 addition & 0 deletions Camunda.Api.Client.sln
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Global
{647F2D5F-4B9C-4A36-AAB6-A787182B6083}.Release|Any CPU.ActiveCfg = Release|Any CPU
{647F2D5F-4B9C-4A36-AAB6-A787182B6083}.Release|Any CPU.Build.0 = Release|Any CPU
{9EC88258-9A0B-448B-90F1-9FACA497228D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9EC88258-9A0B-448B-90F1-9FACA497228D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9EC88258-9A0B-448B-90F1-9FACA497228D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9EC88258-9A0B-448B-90F1-9FACA497228D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
Expand Down
4 changes: 4 additions & 0 deletions Camunda.Api.Client/Batch/BatchInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,9 @@ public class BatchInfo
/// The tenant id of the batch.
/// </summary>
public string TenantId;
/// <summary>
/// The id of the user that created the batch.
/// </summary>
public string CreateUserId;
}
}
13 changes: 13 additions & 0 deletions Camunda.Api.Client/CamundaClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

using Camunda.Api.Client.CaseDefinition;
using Camunda.Api.Client.CaseExecution;
using Camunda.Api.Client.CaseInstance;
using Camunda.Api.Client.DecisionDefinition;
using Camunda.Api.Client.Deployment;
using Camunda.Api.Client.Execution;
Expand All @@ -18,13 +19,15 @@
using Camunda.Api.Client.Job;
using Camunda.Api.Client.JobDefinition;
using Camunda.Api.Client.Message;
using Camunda.Api.Client.Migration;
using Camunda.Api.Client.ProcessDefinition;
using Camunda.Api.Client.ProcessInstance;
using Camunda.Api.Client.Signal;
using Camunda.Api.Client.Tenant;
using Camunda.Api.Client.User;
using Camunda.Api.Client.UserTask;
using Camunda.Api.Client.VariableInstance;

using JsonSerializer = Newtonsoft.Json.JsonSerializer;

namespace Camunda.Api.Client
Expand All @@ -33,6 +36,7 @@ public class CamundaClient
{
private Lazy<ICaseDefinitionRestService> _caseDefinitionRestService;
private Lazy<ICaseExecutionRestService> _caseExecutionRestService;
private Lazy<ICaseInstanceRestService> _caseInstanceRestService;
private Lazy<IDecisionDefinitionRestService> _decisionDefinitionRestService;
private Lazy<IDeploymentRestService> _deploymentApi;
private Lazy<IExecutionRestService> _executionApi;
Expand All @@ -41,6 +45,7 @@ public class CamundaClient
private Lazy<IIncidentRestService> _incidentApi;
private Lazy<IJobDefinitionRestService> _jobDefinitionApi;
private Lazy<IJobRestService> _jobApi;
private Lazy<IMigrationRestService> _migrationRestService;
private Lazy<IMessageRestService> _messageApi;
private Lazy<IProcessDefinitionRestService> _processDefinitionApi;
private Lazy<IProcessInstanceRestService> _processInstanceApi;
Expand Down Expand Up @@ -190,6 +195,7 @@ private void CreateServices()
{
_caseDefinitionRestService = CreateService<ICaseDefinitionRestService>();
_caseExecutionRestService = CreateService<ICaseExecutionRestService>();
_caseInstanceRestService = CreateService<ICaseInstanceRestService>();
_decisionDefinitionRestService = CreateService<IDecisionDefinitionRestService>();
_deploymentApi = CreateService<IDeploymentRestService>();
_executionApi = CreateService<IExecutionRestService>();
Expand All @@ -199,6 +205,7 @@ private void CreateServices()
_jobApi = CreateService<IJobRestService>();
_jobDefinitionApi = CreateService<IJobDefinitionRestService>();
_messageApi = CreateService<IMessageRestService>();
_migrationRestService = CreateService<IMigrationRestService>();
_processDefinitionApi = CreateService<IProcessDefinitionRestService>();
_processInstanceApi = CreateService<IProcessInstanceRestService>();
_signalApi = CreateService<ISignalRestService>();
Expand Down Expand Up @@ -251,6 +258,9 @@ public static CamundaClient Create(HttpClient httpClient)
/// <see href="https://docs.camunda.org/manual/7.9/reference/rest/case-execution/"/>
public CaseExecutionService CaseExecutions => new CaseExecutionService(_caseExecutionRestService.Value);

/// <see href="https://docs.camunda.org/manual/7.9/reference/rest/case-instance/"/>
public CaseInstanceService CaseInstances => new CaseInstanceService(_caseInstanceRestService.Value);

/// <see href="https://docs.camunda.org/manual/7.9/reference/rest/decision-definition/"/>
public DecisionDefinitionService DecisionDefinitions => new DecisionDefinitionService(_decisionDefinitionRestService.Value);

Expand Down Expand Up @@ -281,6 +291,9 @@ public static CamundaClient Create(HttpClient httpClient)
/// <see href="https://docs.camunda.org/manual/7.9/reference/rest/message/"/>
public MessageService Messages => new MessageService(_messageApi.Value);

/// <see href="https://docs.camunda.org/manual/7.13/reference/rest/migration/"/>
public MigrationService Migrations => new MigrationService(_migrationRestService.Value);

/// <see href="https://docs.camunda.org/manual/7.9/reference/rest/process-definition/"/>
public ProcessDefinitionService ProcessDefinitions => new ProcessDefinitionService(_processDefinitionApi.Value);

Expand Down
14 changes: 14 additions & 0 deletions Camunda.Api.Client/CaseInstance/CaseInstanceDeleteVariable.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#region Usings

using Newtonsoft.Json;

#endregion

namespace Camunda.Api.Client.CaseInstance
{
public class CaseInstanceDeleteVariable
{
[JsonProperty("name")]
public string Name;
}
}
63 changes: 63 additions & 0 deletions Camunda.Api.Client/CaseInstance/CaseInstanceQuery.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#region Usings

using System.Collections.Generic;
using Newtonsoft.Json;

#endregion

namespace Camunda.Api.Client.CaseInstance
{
public class CaseInstanceQuery
{
[JsonProperty("caseInstanceId")]
public string CaseInstanceId;

[JsonProperty("businessKey")]
public string BusinessKey;

[JsonProperty("caseDefinitionId")]
public string CaseDefinitionId;

[JsonProperty("caseDefinitionKey")]
public string CaseDefinitionKey;

[JsonProperty("deploymentId")]
public string DeploymentId;

[JsonProperty("superProcessInstance")]
public string SuperProcessInstance;

[JsonProperty("subProcessInstance")]
public string SubProcessInstance;

[JsonProperty("superCaseInstance")]
public string SuperCaseInstance;

[JsonProperty("subCaseInstance")]
public string SubCaseInstance;

[JsonProperty("active")]
public bool? Active;

[JsonProperty("completed")]
public bool? Completed;

[JsonProperty("tenantIdIn")]
public List<string> TenantIdIn;

[JsonProperty("withoutTenantId")]
public bool? WithoutTenantId;

[JsonProperty("variables")]
public List<CaseInstanceQueryVariable> Variables;

[JsonProperty("variableNamesIgnoreCase")]
public bool VariableNamesIgnoreCase;

[JsonProperty("variableValuesIgnoreCase")]
public bool VariableValuesIgnoreCase;

[JsonProperty("sorting")]
public List<CaseInstanceSorting> Sorting;
}
}
20 changes: 20 additions & 0 deletions Camunda.Api.Client/CaseInstance/CaseInstanceQueryVariable.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#region Usings

using Newtonsoft.Json;

#endregion

namespace Camunda.Api.Client.CaseInstance
{
public class CaseInstanceQueryVariable
{
[JsonProperty("name")]
public string Name;

[JsonProperty("operator")]
public ConditionOperator Operator;

[JsonProperty("value")]
public object Value;
}
}
58 changes: 58 additions & 0 deletions Camunda.Api.Client/CaseInstance/CaseInstanceResource.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#region Usings

using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;

#endregion

namespace Camunda.Api.Client.CaseInstance
{
public class CaseInstanceResource
{
private string _caseInstanceId;
private ICaseInstanceRestService _api;

internal CaseInstanceResource(ICaseInstanceRestService api, string caseInstanceId)
{
_api = api;
_caseInstanceId = caseInstanceId;
}

/// <summary>
/// Retrieves a case instance by id, according to the CaseInstance interface in the engine.
/// </summary>
/// <returns>corresponding case instance basis info</returns>
public Task<CaseInstanceInfo> Get() => _api.Get(_caseInstanceId);

/// <summary>
/// Performs a transition from ACTIVE state to COMPLETED state. In relation to the state transition, it is possible to update or delete case instance variables (please note: deletion precedes update).
/// </summary>
/// <param name="completeCaseInstanceState">contains variables to delete or update</param>
/// <returns></returns>
public Task Complete(ChangeCaseInstanceState completeCaseInstanceState) =>
_api.Complete(_caseInstanceId, completeCaseInstanceState);

/// <summary>
/// Performs a transition from COMPLETED state to CLOSED state. In relation to the state transition, it is possible to update or delete case instance variables (please note: deletion precedes update).
/// </summary>
/// <param name="closeCaseInstanceState">contains variables to delete or update</param>
/// <returns></returns>
public Task Close(ChangeCaseInstanceState closeCaseInstanceState) =>
_api.Close(_caseInstanceId, closeCaseInstanceState);

/// <summary>
/// Performs a transition from ACTIVE state to TERMINATED state. In relation to the state transition, it is possible to update or delete case instance variables (please note: deletion precedes update).
/// </summary>
/// <param name="terminateCaseInstanceState">contains variables to delete or update</param>
/// <returns></returns>
public Task Terminate(ChangeCaseInstanceState terminateCaseInstanceState) =>
_api.Terminate(_caseInstanceId, terminateCaseInstanceState);


public VariableResource Variables => new VariableResource(_api, _caseInstanceId);

public override string ToString() => _caseInstanceId;
}
}
21 changes: 21 additions & 0 deletions Camunda.Api.Client/CaseInstance/CaseInstanceService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
namespace Camunda.Api.Client.CaseInstance
{
public class CaseInstanceService
{
private ICaseInstanceRestService _api;

internal CaseInstanceService(ICaseInstanceRestService api)
{
_api = api;
}

public QueryResource<CaseInstanceQuery, CaseInstanceInfo> Query(CaseInstanceQuery query = null) =>
new QueryResource<CaseInstanceQuery, CaseInstanceInfo>(
query,
(q, f, m) => _api.GetList(q, f, m),
q => _api.GetListCount(q));

/// <param name="caseInstanceId">Id of specific case instance</param>
public CaseInstanceResource this[string caseInstanceId] => new CaseInstanceResource(_api, caseInstanceId);
}
}
10 changes: 10 additions & 0 deletions Camunda.Api.Client/CaseInstance/CaseInstanceSorting.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace Camunda.Api.Client.CaseInstance
{
public enum CaseInstanceSorting
{
CaseInstanceId,
CaseDefinitionKey,
CaseDefinitionId,
TenantId
}
}
14 changes: 14 additions & 0 deletions Camunda.Api.Client/CaseInstance/CaseInstanceVariableValue.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#region Usings

using Newtonsoft.Json;

#endregion

namespace Camunda.Api.Client.CaseInstance
{
public class CaseInstanceVariableValue : VariableValue
{
[JsonProperty("local")]
public bool Local;
}
}
18 changes: 18 additions & 0 deletions Camunda.Api.Client/CaseInstance/ChangeCaseInstanceState.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#region Usings

using System.Collections.Generic;
using Newtonsoft.Json;

#endregion

namespace Camunda.Api.Client.CaseInstance
{
public class ChangeCaseInstanceState
{
[JsonProperty("variables")]
public Dictionary<string, CaseInstanceVariableValue> Variables;

[JsonProperty("deletions")]
public List<CaseInstanceDeleteVariable> Deletions;
}
}
54 changes: 54 additions & 0 deletions Camunda.Api.Client/CaseInstance/ICaseInstanceRestService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#region Usings

using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using Refit;

#endregion

namespace Camunda.Api.Client.CaseInstance
{
internal interface ICaseInstanceRestService
{
[Get("/case-instance/{id}/variables")]
Task<Dictionary<string, VariableValue>> GetVariables(string id, bool? deserializeValues);

[Get("/case-instance/{id}/variables/{varName}")]
Task<VariableValue> GetVariableValue(string id, string varName, bool? deserializeValue);

// TODO: check if HttpWebResponse is indeed the correct return type
[Get("/case-instance/{id}/variables/{varName}/data")]
Task<HttpResponseMessage> GetBinaryVariable(string id, string varName);

[Post("/case-instance/{id}/variables")]
Task ModifyVariables(string id, [Body] PatchVariables patch);

[Put("/case-instance/{id}/variables/{varName}")]
Task UpdateVariable(string id, string varName, [Body] VariableValue value);

[Post("/case-instance/{id}/variables/{varName}/data")]
Task SetBinaryVariable(string id, string varName, BinaryDataContent data, ValueTypeContent valueType);

[Delete("/case-instance/{id}/variables/{varName}")]
Task DeleteVariable(string id, string varName);

[Get("/case-instance/{id}")]
Task<CaseInstanceInfo> Get(string id);

[Post("/case-instance")]
Task<List<CaseInstanceInfo>> GetList([Body] CaseInstanceQuery query, int? firstResult, int? maxResults);

[Post("/case-instance/count")]
Task<CountResult> GetListCount([Body] CaseInstanceQuery query);

[Post("/case-instance/{id}/complete")]
Task Complete(string id, [Body] ChangeCaseInstanceState completeCaseInstance);

[Post("/case-instance/{id}/close")]
Task Close(string id, [Body] ChangeCaseInstanceState closeCaseInstance);

[Post("/case-instance/{id}/terminate")]
Task Terminate(string id, [Body] ChangeCaseInstanceState terminateCaseInstance);
}
}
Loading

0 comments on commit e586fa3

Please sign in to comment.