elsa-core/src/core/Flowsharp.Abstractions/Handlers/ActivityHandlerBase.cs

36 lines
4.1 KiB
C#
Raw Normal View History

2018-10-16 10:30:36 +00:00
using System;
2018-11-03 09:21:44 +00:00
using System.Collections.Generic;
2018-10-16 10:30:36 +00:00
using System.Threading;
using System.Threading.Tasks;
using Flowsharp.Models;
using Flowsharp.Results;
2018-11-03 09:21:44 +00:00
using Microsoft.Extensions.Localization;
2018-10-16 10:30:36 +00:00
namespace Flowsharp.Handlers
{
2018-11-03 09:21:44 +00:00
public abstract class ActivityHandlerBase<T> : IActivityHandler where T : IActivity
2018-10-16 10:30:36 +00:00
{
2018-11-18 21:43:11 +00:00
public string ActivityName => typeof(T).Name;
public virtual LocalizedString DisplayText => new LocalizedString(ActivityName, ActivityName);
2018-11-05 08:37:17 +00:00
public virtual LocalizedString Description => new LocalizedString("", "");
2018-11-18 21:43:11 +00:00
public Task<bool> CanExecuteAsync(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => OnCanExecuteAsync((ActivityExecutionContext<T>) activityContext, workflowContext, cancellationToken);
public Task<ActivityExecutionResult> ExecuteAsync(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => OnExecuteAsync((ActivityExecutionContext<T>) activityContext, workflowContext, cancellationToken);
public Task<ActivityExecutionResult> ResumeAsync(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => OnResumeAsync((ActivityExecutionContext<T>) activityContext, workflowContext, cancellationToken);
protected virtual Task<bool> OnCanExecuteAsync(ActivityExecutionContext<T> 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));
2018-11-18 21:43:11 +00:00
protected virtual Task<ActivityExecutionResult> OnExecuteAsync(ActivityExecutionContext<T> activityContext, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => OnExecuteAsync(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));
2018-11-18 21:43:11 +00:00
protected virtual Task<ActivityExecutionResult> OnResumeAsync(ActivityExecutionContext<T> activityContext, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => Task.FromResult(OnResume(activityContext, workflowContext));
2018-10-16 10:30:36 +00:00
protected virtual Task<ActivityExecutionResult> OnResumeAsync(T activity, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => Task.FromResult(OnResume(activity, workflowContext));
2018-11-18 21:43:11 +00:00
protected virtual bool OnCanExecute(ActivityExecutionContext<T> activityContext, WorkflowExecutionContext workflowContext) => OnCanExecute(activityContext.Activity, workflowContext);
2018-10-16 10:30:36 +00:00
protected virtual bool OnCanExecute(T activity, WorkflowExecutionContext workflowContext) => true;
2018-11-18 21:43:11 +00:00
protected virtual ActivityExecutionResult OnExecute(ActivityExecutionContext<T> activityContext, WorkflowExecutionContext workflowContext) => OnExecute(activityContext.Activity, workflowContext);
2018-10-16 10:30:36 +00:00
protected virtual ActivityExecutionResult OnExecute(T activity, WorkflowExecutionContext workflowContext) => Noop();
2018-11-18 21:43:11 +00:00
protected virtual ActivityExecutionResult OnResume(ActivityExecutionContext<T> activityContext, WorkflowExecutionContext workflowContext) => OnResume(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();
2018-11-03 09:21:44 +00:00
protected IEnumerable<LocalizedString> Endpoints(params LocalizedString[] endpoints) => endpoints;
2018-11-05 08:37:17 +00:00
public virtual IEnumerable<LocalizedString> GetEndpoints() => Endpoints(GetEndpoint());
2018-11-03 09:21:44 +00:00
protected virtual LocalizedString GetEndpoint() => throw new NotImplementedException("At least GetEndpoints or GetEndpoint must be overridden.");
2018-10-16 10:30:36 +00:00
}
}