using System;
namespace SKMC.Api.Process.Model
{
///
/// 线性流程引擎
///
public abstract class ProcessFlow
{
// 流程id
public int Id { get; set; }
// 是否空跑测试
public bool TestRunMode { get; set; } = false;
// 是否已停止
public bool IsStopped { get; set; }
// 是否已挂起
public bool IsSuspend { get; set; }
// 每轮循环开始前执行
public Action OnPrepare { get; set; }
///
/// 启动流程
///
public abstract void Start();
///
/// 停止流程
///
public abstract void Stop();
///
/// 复位流程
///
public abstract void Reset();
///
/// 暂停流程
///
public abstract void Pause();
///
/// 恢复流程
///
public abstract void Resume();
///
/// 获取流程步骤
///
/// 流程步骤Id
///
public abstract ProcessStep Get(int processStepId);
///
/// 注册流程步骤
///
/// 流程步骤
public abstract void Register(ProcessStep processStep);
///
/// 设置流程的起始步骤
///
/// 流程步骤
public abstract void SetFirst(ProcessStep processStep);
///
/// 设置流程的起始步骤
///
/// 流程步骤Id
public abstract void SetFirst(int processStepId);
///
/// 提交启动流程的第一个步骤、如果设置了初始步骤SetFirst则从该步骤开始
///
public abstract void PostFirst();
///
/// 提交流程步骤(自动模式的下一个)
///
public abstract void PostAutoNext();
///
/// 提交流程步骤(手动模式指定)
///
/// 流程步骤
public abstract void PostManual(ProcessStep processStep);
///
/// 直接调用一个流程步骤的Actions(自动模式的下一个)
///
public abstract void CallAutoNext();
///
/// 直接调用一个流程步骤的Actions(手动模式指定)
///
/// 流程步骤
public abstract void CallManual(ProcessStep processStep);
}
}