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

38 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:46:42 +00:00
public Type ActivityType => typeof(T);
2018-12-30 17:20:12 +00:00
public virtual bool IsTrigger => false;
2018-12-24 11:31:18 +00:00
public abstract LocalizedString Category { get; }
2018-11-18 21:46:42 +00:00
public virtual LocalizedString DisplayText => new LocalizedString(ActivityType.Name, ActivityType.Name);
2018-11-05 08:37:17 +00:00
public virtual LocalizedString Description => new LocalizedString("", "");
2018-12-30 17:20:12 +00:00
public Task<bool> CanExecuteAsync(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => OnCanExecuteAsync(activityContext, workflowContext, cancellationToken);
public Task<ActivityExecutionResult> ExecuteAsync(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => OnExecuteAsync(activityContext, workflowContext, cancellationToken);
public Task<ActivityExecutionResult> ResumeAsync(ActivityExecutionContext activityContext, WorkflowExecutionContext workflowContext, CancellationToken cancellationToken) => OnResumeAsync(activityContext, workflowContext, cancellationToken);
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));
2018-12-30 17:20:12 +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));
2018-12-30 17:20:12 +00:00
protected virtual Task<ActivityExecutionResult> OnResumeAsync(ActivityExecutionContext 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-12-30 17:20:12 +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;
2018-12-30 17:20:12 +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();
2018-12-30 17:20:12 +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();
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
}
}