Resource Checkout/Locking Provider

IResourceCheckoutService in assembly SanteDB.Core.Api version 3.0.1980.0

Summary

A resource locking service

Operations

OperationResponse/ReturnInput/ParameterDescription

Checkout

Boolean

Guid key

Try to get a lock on the resource for editing

Checkin

Boolean

Guid key

Release the lock on the specified key

IsCheckedout

Boolean

Guid key IIdentity& currentOwner

Attempts to perform a soft checkout - this is equivalent to attempting to take a lock but not actually taking it

Implementations

UpstreamResourceCheckoutService - (SanteDB.Client)

A IResourceCheckoutService which uses the upstream

Service Registration

...
<section xsi:type="ApplicationServiceContextConfigurationSection" threadPoolSize="4">
	<serviceProviders>
		...
		<add type="SanteDB.Client.Upstream.Repositories.UpstreamResourceCheckoutService, SanteDB.Client, Version=3.0.1980.0, Culture=neutral, PublicKeyToken=null" />
		...
	</serviceProviders>

CachedResourceCheckoutService - (SanteDB.Core.Api)

A checkout service which uses the current adhoc cache to manage checkouts

Service Registration

...
<section xsi:type="ApplicationServiceContextConfigurationSection" threadPoolSize="4">
	<serviceProviders>
		...
		<add type="SanteDB.Core.Services.Impl.CachedResourceCheckoutService, SanteDB.Core.Api, Version=3.0.1980.0, Culture=neutral, PublicKeyToken=null" />
		...
	</serviceProviders>

Example Implementation

/// Example Implementation
using SanteDB.Core.Services;
/// Other usings here
public class MyResourceCheckoutService : SanteDB.Core.Services.IResourceCheckoutService { 
	public String ServiceName => "My own IResourceCheckoutService service";
	/// <summary>
	/// Try to get a lock on the resource for editing
	/// </summary>
	public Boolean Checkout<T>(Guid key){
		throw new System.NotImplementedException();
	}
	/// <summary>
	/// Release the lock on the specified key
	/// </summary>
	public Boolean Checkin<T>(Guid key){
		throw new System.NotImplementedException();
	}
	/// <summary>
	/// Attempts to perform a soft checkout - this is equivalent to attempting to take a lock             but not actually taking it
	/// </summary>
	public Boolean IsCheckedout<T>(Guid key,IIdentity& currentOwner){
		throw new System.NotImplementedException();
	}
}

References

Last updated