elsa-core/src/core/Elsa.Abstractions/ActivityDriverBase.cs

33 lines
4.4 KiB
C#
Raw Normal View History

2018-10-16 10:30:36 +00:00
using System.Threading;
using System.Threading.Tasks;
2018-12-31 09:59:35 +00:00
using Elsa.Models;
using Elsa.Results;
2018-10-16 10:30:36 +00:00
2019-01-05 13:10:44 +00:00
namespace Elsa
2018-10-16 10:30:36 +00:00
{
public abstract class ActivityDriverBase<T> : IActivityDriver where T : IActivity
2018-10-16 10:30:36 +00:00
{
public string ActivityType => typeof(T).Name;
2018-12-30 17:20:12 +00:00
public Task<bool> CanExecuteAsync(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => OnCanExecuteAsync(activityContext, workflowContext, cancellationToken);
2019-01-01 21:29:51 +00:00
public Task<ActivityExecutionResult> ExecuteAsync(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => OnExecuteAsync(activityContext, workflowContext, cancellationToken);
2019-01-06 21:42:59 +00:00
public Task<ActivityExecutionResult> HaltedAsync(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => OnHaltedAsync(activityContext, workflowContext, cancellationToken);
2018-12-30 17:20:12 +00:00
public Task<ActivityExecutionResult> ResumeAsync(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => OnResumeAsync(activityContext, workflowContext, cancellationToken);
2019-01-01 21:29:51 +00:00
protected virtual Task<bool> OnCanExecuteAsync(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => OnCanExecuteAsync((T) activityContext.Activity, workflowContext, cancellationToken);
2018-10-16 10:30:36 +00:00
protected virtual Task<bool> OnCanExecuteAsync(T activity, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => Task.FromResult(OnCanExecute(activity, workflowContext));
2019-01-01 21:29:51 +00:00
protected virtual Task<ActivityExecutionResult> OnExecuteAsync(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => OnExecuteAsync((T) activityContext.Activity, workflowContext, cancellationToken);
2018-10-16 10:30:36 +00:00
protected virtual Task<ActivityExecutionResult> OnExecuteAsync(T activity, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => Task.FromResult(OnExecute(activity, workflowContext));
2019-01-06 21:42:59 +00:00
protected virtual Task<ActivityExecutionResult> OnHaltedAsync(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => OnHaltedAsync((T) activityContext.Activity, workflowContext, cancellationToken);
protected virtual Task<ActivityExecutionResult> OnHaltedAsync(T activity, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => Task.FromResult(OnHalted(activity, workflowContext));
protected virtual Task<ActivityExecutionResult> OnResumeAsync(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => OnResumeAsync((T)activityContext.Activity, workflowContext, cancellationToken);
2018-10-16 10:30:36 +00:00
protected virtual Task<ActivityExecutionResult> OnResumeAsync(T activity, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => Task.FromResult(OnResume(activity, workflowContext));
2019-01-01 21:29:51 +00:00
protected virtual bool OnCanExecute(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext) => OnCanExecute((T) activityContext.Activity, workflowContext);
2018-10-16 10:30:36 +00:00
protected virtual bool OnCanExecute(T activity, WorkflowExecutionContext workflowContext) => true;
2019-01-01 21:29:51 +00:00
protected virtual ActivityExecutionResult OnExecute(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext) => OnExecute((T) activityContext.Activity, workflowContext);
2018-10-16 10:30:36 +00:00
protected virtual ActivityExecutionResult OnExecute(T activity, WorkflowExecutionContext workflowContext) => Noop();
2019-01-06 21:42:59 +00:00
protected virtual ActivityExecutionResult OnHalted(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext) => OnHalted((T) activityContext.Activity, workflowContext);
protected virtual ActivityExecutionResult OnHalted(T activity, WorkflowExecutionContext workflowContext) => Noop();
2019-01-01 21:29:51 +00:00
protected virtual ActivityExecutionResult OnResume(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext) => OnResume((T) activityContext.Activity, workflowContext);
2018-10-16 10:30:36 +00:00
protected virtual ActivityExecutionResult OnResume(T activity, WorkflowExecutionContext workflowContext) => Noop();
protected NoopResult Noop() => new NoopResult();
}
}