using DS.Module.Core;
using DS.Module.Core.Condition;
using DS.Module.Core.Data;
using DS.WMS.Core.Op.Entity;
using DS.WMS.Core.Op.Entity.TaskInteraction;
namespace DS.WMS.Core.Op.Interface.TaskInteraction
{
///
/// 动作执行管理
///
public interface IActionManagerService
{
///
/// 根据指定条件返回是否匹配的结果
///
/// 要对比的数据源
/// 匹配条件
///
bool IsMatch(object source, ConditionContent condition);
///
/// 根据指定条件返回是否匹配的结果
///
/// 业务ID
/// 业务类型
/// 匹配条件
///
Task IsMatchAsync(long bsId, BusinessType businessType, IEnumerable conditions);
///
/// 获取所需业务数据
///
/// 业务ID
/// 业务类型
/// 条件字段
///
Task GetBusinessDataAsync(long businessId, BusinessType businessType, IEnumerable conditions);
///
/// 获取所需业务数据
///
/// 业务ID
/// 业务类型
/// 返回字段列表
///
Task GetBusinessDataAsync(long businessId, BusinessType businessType, params string[] fields);
///
/// 执行特定动作
///
/// 数据上下文
///
Task ExecuteAsync(TaskFlowDataContext dataContext);
///
/// 触发任务执行动作
///
/// 任务信息
/// 是否包含订单数据
/// 附加参数
///
Task TriggerActionAsync(BusinessTask businessTask, bool includeOrder = false, IDictionary? additionalData = null);
///
/// 执行放舱任务(任务台使用)
///
Task SpaceReleaseTask(TaskFlowDataContext dataContext);
///
/// 自动订舱
///
/// 业务ID
/// 业务类型
///
Task AutomaticBooking(long businessId, BusinessType businessType);
}
}