Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Использование синхронизации объектов
Практическое занятие
На занятии рассматривается синхронизация объектов между двумя системами.
Предварительный этап:
Необходимо создать 2 области и 2 базы данных, с произвольными именами например, S1 и S2 В каждую область загрузить готовый проект prj1.xml и prj2.xml соответственно В области S1 запустить программу GenData, создающую первоначальный набор объектов в базе S1.Таким образом, получаем начальное состояние системы. В БД S1 содержатся некоторые данные, это существующая система, и ее можно считать основной. База данных S2 – это новая система, в которой должна содержаться копия основной базы. С S2 будут работать независимо, а данные этих систем будут периодически синхронизироваться.
Подготовка к синхронизации:
Для всех классов в 2х областях необходимо указать:Parameter OBJJOURNAL = 2; //или Parameter OBJJOURNAL=1;
Parameter GUIDENABLED = 1;
s st=##class(%Library. GUID).AssignGUID("Sync. Person",1)
Перекомпилируйте классы Скопируйте данные в систему S2 (через экспорт глобалей)Теперь обе системы содержат одинаковый набор исходных данных. И в каждую из систем можно вносить изменения независимо. Для того, чтобы затем можно было синхронизовать объекты, необходимо создать соответствующие программы
Создайте программу для экспорта данных из системы S2, например, SyncOut:set DirFile="c:\sync21.dat"
Set SrcSyncSet = ##class(%SYNC. SyncSet).%New()
Set ExcludedDB = $ListBuild(##class(%SYS. System).InstanceGUID(),"S1")
Do SrcSyncSet. AddTransactions(,,ExcludedDB)
set sc=SrcSyncSet. ExportFile(DirFile,"-d")
quit
Set TrgSyncSet = ##class(%SYNC. SyncSet).%New()
Set St= TrgSyncSet. Import("C:\sync21.dat")
Если в каждой из систем изменить один и тот же объект, а затем попытаться выполнить синхронизацию, то при загрузке возникнет конфликт.
Разрешение конфликтов (дополнительное)
Создайте callback метод %ResolveConcurrencyConflict, который будет вызываться в случае возникновения конфликта. Можно реализовать такую функциональность, чтобы изменения, вносимые в S1, имели приоритет. Т. е. чтобы при импорте данных в S2, при возникновении конфликта существующий в S2 объект перезаписывался новым объектом из S1. Для этого можно использовать метод класса %SyncObjectIn.

