| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- using Abp.Json;
- using Microsoft.EntityFrameworkCore;
- using System.Collections.Generic;
- using VberZero.Workflow.DesignInfo;
- using VberZero.Workflow.Persistence;
- namespace VberZero.Workflow;
- public static class ModelBuilderExtension
- {
- public static ModelBuilder ConfigWorkflow(this ModelBuilder modelBuilder)
- {
- modelBuilder
- .ConfigWorkflowDefinition()
- .ConfigWorkflowPersistence();
- return modelBuilder;
- }
- private static ModelBuilder ConfigWorkflowDefinition(this ModelBuilder modelBuilder)
- {
- var builder = modelBuilder.Entity<WorkflowDefinitionInfo>();
- builder.Property(u => u.Id).HasColumnName(nameof(WorkflowDefinitionInfo.Id)).HasMaxLength(WorkflowDefinitionConst.IdMaxLength);
- builder.Property(u => u.Version).HasColumnName(nameof(WorkflowDefinitionInfo.Version)).HasDefaultValue(1);
- builder.HasKey(u => new { u.Id, u.Version });
- builder.Property(u => u.Title).HasColumnName(nameof(WorkflowDefinitionInfo.Title)).HasMaxLength(WorkflowDefinitionConst.TitleMaxLength);
- builder.Property(u => u.Group).HasColumnName(nameof(WorkflowDefinitionInfo.Group)).HasMaxLength(WorkflowDefinitionConst.GroupMaxLength);
- builder.Property(u => u.Icon).HasColumnName(nameof(WorkflowDefinitionInfo.Icon)).HasMaxLength(WorkflowDefinitionConst.IconMaxLength);
- builder.Property(u => u.Color).HasColumnName(nameof(WorkflowDefinitionInfo.Color)).HasMaxLength(WorkflowDefinitionConst.ColorMaxLength);
- builder.Property(u => u.Inputs).HasColumnName(nameof(WorkflowDefinitionInfo.Inputs)).HasConversion(u => u.ToJsonString(false, false), u => u.FromJsonString<IEnumerable<IEnumerable<WorkflowFormData>>>());
- builder.Property(u => u.Nodes).HasColumnName(nameof(WorkflowDefinitionInfo.Nodes)).HasConversion(u => u.ToJsonString(false, false), u => u.FromJsonString<IEnumerable<WorkflowNode>>());
- builder.Property(u => u.TenantId).HasColumnName(nameof(WorkflowDefinitionInfo.TenantId));
- return modelBuilder;
- }
- private static ModelBuilder ConfigWorkflowPersistence(this ModelBuilder modelBuilder)
- {
- var builder = modelBuilder.Entity<WorkflowInfo>();
- builder.Property(u => u.WorkflowDefinitionId).HasColumnName(nameof(WorkflowInfo.WorkflowDefinitionId)).HasMaxLength(WorkflowConst.WorkflowDefinitionIdMaxLength);
- builder.Property(u => u.Version).HasColumnName(nameof(WorkflowInfo.Version));
- builder.Property(u => u.Description).HasColumnName(nameof(WorkflowInfo.Description)).HasMaxLength(WorkflowConst.DescriptionMaxLength);
- builder.Property(u => u.Reference).HasColumnName(nameof(WorkflowInfo.Reference)).HasMaxLength(WorkflowConst.ReferenceMaxLength);
- builder.Property(u => u.NextExecution).HasColumnName(nameof(WorkflowInfo.NextExecution));
- builder.Property(u => u.Data).HasColumnName(nameof(WorkflowInfo.Data)).HasMaxLength(WorkflowConst.DataMaxLength);
- builder.Property(u => u.CreateTime).HasColumnName(nameof(WorkflowInfo.CreateTime));
- builder.Property(u => u.CompleteTime).HasColumnName(nameof(WorkflowInfo.CompleteTime));
- builder.Property(u => u.Status).HasColumnName(nameof(WorkflowInfo.Status));
- builder.Property(u => u.TenantId).HasColumnName(nameof(WorkflowInfo.TenantId));
- //builder.Property(u => u.ExecutionPointers).HasColumnName(nameof(WorkflowInfo.ExecutionPointers));
- //builder.HasMany(a => a.ExecutionPointers);
- builder.HasOne(u => u.WorkflowDefinitionInfo).WithMany().HasForeignKey(u => new { u.WorkflowDefinitionId, u.Version });
- return modelBuilder;
- }
- }
|