12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- using Hotline.FlowEngine.Workflows;
- using Hotline.Share.Enums.FlowEngine;
- using SqlSugar;
- using XF.Domain.Exceptions;
- using XF.Domain.Repository;
- namespace Hotline.FlowEngine.Definitions;
- public class Definition : CreationEntity
- {
- /// <summary>
- /// 模板名称
- /// </summary>
- public string Name { get; set; }
- /// <summary>
- /// 模板编码
- /// </summary>
- public string Code { get; set; }
- /// <summary>
- /// 草稿版本号 == 0
- /// </summary>
- public int Version { get; set; }
- public string Description { get; set; }
- [SugarColumn(ColumnDataType = "varchar(4000)", IsJson = true)]
- public List<StepDefine> Steps { get; set; } = new();
- [SugarColumn(ColumnDataType = "varchar(4000)", IsNullable = true)]
- public string? ExternalData { get; set; }
- public EDefinitionStatus Status { get; set; }
- [SugarColumn(IsNullable = true)]
- public string? ModuleId { get; set; }
- /// <summary>
- /// 业务模块名称
- /// </summary>
- [SugarColumn(IsNullable = true)]
- public string? ModuleName { get; set; }
- [SugarColumn(IsNullable = true)]
- public string? ModuleCode { get; set; }
- #region Method
- public StepDefine FindStartStep() =>
- Steps.First(d => d.StepType is EStepType.Start);
- public List<StepDefine> FindSteps(List<NextStepDefine> steps) =>
- Steps.Where(d => steps.Select(x => x.Code).Contains(d.Code)).ToList();
- public List<StepDefine> FindSteps(List<NextStep> steps) =>
- Steps.Where(d => steps.Select(x => x.Code).Contains(d.Code)).ToList();
- public StepDefine? FindStep(string code)
- {
- if (!Steps.Any())
- throw new UserFriendlyException($"流程未配置节点,DefineCode: {Code}", "流程配置错误");
- return Steps.FirstOrDefault(d => d.Code == code);
- }
- #endregion
- }
|