ModuleInitializer.cs
5.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Domain.Initialization;
namespace DirRX.DciCore.Server
{
public partial class ModuleInitializer
{
public override void Initializing(Sungero.Domain.ModuleInitializingEventArgs e)
{
CreateDatabookRecords();
}
/// <summary>
/// Создание записей справочника.
/// </summary>
public static void CreateDatabookRecords()
{
var processKind = DciProcessKinds.Null;
#region Процесс DCICheckLink.
processKind = CreateProcessKind(Constants.DciProcessKind.DCICheckLinkProcess.RecordGUID,
Constants.DciProcessKind.DCICheckLinkProcess.Name,
Constants.DciProcessKind.DCICheckLinkProcess.Note,
Constants.DciProcessKind.DCICheckLinkProcess.Description,
DciCore.DciProcessKind.ProcessType.Process,
Guid.Empty,
Calendar.SqlMinValue);
AddProcessMessage(processKind,
Constants.DciProcessKind.DCICheckLinkProcess.PingMessage.RowGUID,
Constants.DciProcessKind.DCICheckLinkProcess.PingMessage.Name,
Constants.DciProcessKind.DCICheckLinkProcess.PingMessage.Note);
AddProcessMessage(processKind,
Constants.DciProcessKind.DCICheckLinkProcess.PongMessage.RowGUID,
Constants.DciProcessKind.DCICheckLinkProcess.PongMessage.Name,
Constants.DciProcessKind.DCICheckLinkProcess.PongMessage.Note);
#endregion
}
/// <summary>
/// Создание записи в справочнике Виды межсистемных процессов.
/// </summary>
/// <param name="guid">Случайный GUID, ключевое поле записи - позволяет не привязываться к имени процесса и менять его.</param>
/// <param name="processName">Имя процесса.</param>
/// <param name="note">Примечания (заполняется один раз - при создании записи).</param>
/// <param name="description">Описание межсистемного процесса.</param>
/// <param name="processType">Тип процесса - синхронизация или сквозной бизнес-процесс.</param>
/// <param name="entityTypeGuid">GUID типа сущности.</param>
/// <param name="startSyncDate">Дата и время, от которой выполняется поиск измененных сущностей.</param>
/// <returns>Запись справочника Виды межсистемных процессов.</returns>
[Public]
public static IDciProcessKind CreateProcessKind(Guid guid, string processName, string note, string description, Enumeration processType, Guid entityTypeGuid, DateTime startSyncDate)
{
var record = DciProcessKinds.GetAll(x => x.GUID == guid.ToString()).FirstOrDefault();
if (record == null)
{
InitializationLogger.Debug(string.Format("Виды межсистемных процессов. Создание записи для процесса {0}.", processName));
record = DciProcessKinds.Create();
record.GUID = guid.ToString();
record.Note = note;
}
if (processName != record.Name)
record.Name = processName;
if (description != record.Description)
record.Description = description;
if (processType != record.ProcessType)
record.ProcessType = processType;
if (entityTypeGuid.ToString() != record.EntityTypeGUID)
record.EntityTypeGUID = entityTypeGuid.ToString();
if (startSyncDate != record.LastOutSyncDate)
record.LastOutSyncDate = startSyncDate;
if (record.State.IsChanged)
{
InitializationLogger.Debug(string.Format("Виды межсистемных процессов. Сохранение записи для процесса {0}.", processName));
record.Save();
}
return record;
}
/// <summary>
/// Заполнение таблицы Сообщения в записи в справочника Виды межсистемных процессов.
/// </summary>
/// <param name="processKind">Запись справочника Виды межсистемных процессов.</param>
/// <param name="rowGUID">Случайный GUID, ключевое поле в таблице - позволяет не привязываться к имени сообщения и менять его.</param>
/// <param name="messageName">Имя сообщения.</param>
/// <param name="messageNote">Примечание.</param>
[Public]
public static void AddProcessMessage(IDciProcessKind processKind, Guid rowGUID, string messageName, string messageNote)
{
var row = processKind.Messages.Where(x => x.RowGUID == rowGUID.ToString()).FirstOrDefault();
if (row == null)
{
InitializationLogger.Debug(string.Format("Виды межсистемных процессов. Добавление сообщения {0} для процесса {1}.", messageName, processKind.Name));
row = processKind.Messages.AddNew();
row.RowGUID = rowGUID.ToString();
}
if (messageName != row.Name)
row.Name = messageName;
if (messageNote != row.Note)
row.Note = messageNote;
if (processKind.State.IsChanged)
{
InitializationLogger.Debug(string.Format("Виды межсистемных процессов. Сохранение сообщения {0} для процесса {1}.", messageName, processKind.Name));
processKind.Save();
}
}
}
}