Кроссплатформенная синхронизация данных

Здесь содержится описание используемого подхода для обмена данными между разнородными системами, в качестве основы используется Apache Kafka (распределённая платформа для потоковой обработки данных)

Введение

Описание моделей данных

В этой главе содержатся описание моделей данных используемых для синхронизации

Описание моделей данных

Служебная записка "О приеме на работу"

Описание модели служебной записки "О приеме на работу"

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "title": "Служебная записка о Приеме на работу"
  "description": "Метаданные СЗ о приеме на работу"
  "properties": {
							"shtatnoe_raspisanie_guid": {
						      "type": "string",
						      "format": "GUID",
						      "maximum": 36,
						      "pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$",
						      "description": "GUID позиции в штатном расписании куда будут принимать сотрудника"
					    },
                       "dokument_id": {
						      "type": "integer",
						      "description": "Идентификатор документа в СЭД"
				    },
				       "sotrudnik_1C_guid": {
						      "type": "string",
						      "format": "GUID",
						      "maximum": 36,
						      "pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$",
						      "description": "GUID сотрудника (табельный номер) в случае приема на работу занятой ставки"
				    },
			          "sooruzhenie_id": {
						      "type": "integer",
						      "description": "идентификатор сооружения (корпус)"
				    },
			          "pomeschenie_id": {
						      "type": "integer",
						      "description": "Идентификатор помещения (аудитория)"
				    }
				      "vid_zanyatosti_id": {
						      "type": "integer",
						      "description": "1-осн.м.р; 2-внутр.совм; 3-внеш.совм..."
				    },
				      "ispytatelniy_srok": {
						      "type": "integer",
						      "default": 0,
						      "description": "Испытательный срок (дней)"
				    },
				      "stavka": {
						      "type": "number",
						      "description": "на какую ставку принимается сотрудник (от 0.1 до 1.0)"
  					},
				      "distant_id": {
						      "type": "integer",
						      "description": "Идентификатор режима работы (справочник: 1 - Стац. рабочее место, 2 - Дистанционно)"
				    },
				      "reserv_dlya_invalidov": {
						      "type": "boolean",
						      "default": false,
						      "description": "Если позиция в штатном расписании зарезервирована для инвалидов"
				    },
				      "vid_dogovora_id": {
						      "type": "integer",
						      "description": "Идентификатор вида договора (1 - Срочный, 2 - Неопределенный срок)"
				    },
				      "data_nachala": {
						      "type": "string",
						      "maximum": 19,
						      "pattern": "YYYY-MM-DDTHH:MM:SS",
						      "description": "Дата начала работы"
					    },
				      "data_okonchaniya": {
						      "type": "string",
						      "maximum": 19,
						      "pattern": "YYYY-MM-DDTHH:MM:SS",
						      "description": "Дата окончания работы"
				    },
				      "osnovanie_sroch_dog_guid": {
						      "type": "string",
						      "format": "GUID",
						      "maximum": 36,
						      "pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$",
						      "description": "Основание срочного трудового договора (справочник)"
				    },
			          "lichnost_id": {
						      "type": "integer",
						      "description": "Идентификатор личности соискателя"
				    },
				        "telefon": {
						      "type": "string",
						      "maximum": 20,
						      "description": "Телефон для обратной связи с соискателем если есть"
				    },
				        "istochnik_finansirovaniya": {
                          "type": "object",
                          "description": "Источник финансирования, если нужно уточнить до конкретного проекта",
                          "properties":{
                                    "napravlenieId" : {
                                    					  "type": "string",
                            						      "format": "GUID",
                            						      "maximum": 36,
                            						      "pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$",
                            						      "description": "Идентификатор источника финансировнаия (app_i1.ist_fin.id)"
                                    },
                                    "konsAnalitikaId" : {
                                           "type":"integer",
                                           "description":"ИД из справочника Конс. аналитика"
                                    },
                                    'meropriyatieId' : {
                                           "type":"array",
                                           "description":"Идентификаторы программы или мероприятий из справочника (FCP.STRUKTURA_PROGRAMMY.ID)",
                                           "items": {
                                               "type":"integer"
                                           }
                                      },
                                    "cfoId" : {
                                           "type":"integer"
                                           "description":"Центр финансофой ответственности (ИД подразделения)"
                                    },
                                    "sofinasirovanie" : {
                                    					  "type": "string",
                            						      "format": "GUID",
                            						      "maximum": 36,
                            						      "pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$",
                            						      "description": "Идентификатор источника co-финансировнаия (app_i1.ist_fin.id)"
                                    },
                                  "required": [ "napravlenieId", "konsAnalitikaId", "cfoId" ]
				    }

  },
  "required": ["shtatnoe_raspisanie_guid", "kommentariy", "vid_zanyatosti_id", "stavka", "distant_id", "reserv_dlya_invalidov", "vid_dogovora_id","data_nachala","osnovanie_sroch_dog_guid", "lichnost_id"],
  "additionalProperties": false
}

Описание моделей данных

Приказ "Прием на работу"

Описание модели приказа "Прием на работу"

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "title": "Служебная записка о Приеме на работу",
  "description": "Метаданные СЗ о приеме на работу",
  "properties": {
    "shtatnoe_raspisanie_guid": {
      "type": "string",
      "format": "GUID",
      "maximum": 36,
      "pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$",
      "description": "GUID позиции в штатном расписании куда будут принимать сотрудника"
    },
    "dokument_id": {
      "type": "integer",
      "description": "Идентификатор документа в СЭД"
    },
    "sotrudnik_1C_guid": {
      "type": "string",
      "format": "GUID",
      "maximum": 36,
      "pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$",
      "description": "GUID сотрудника (табельный номер) в случае приема на работу занятой ставки"
    },
    "sooruzhenie_id": {
      "type": "integer",
      "description": "идентификатор сооружения (корпус)"
    },
    "pomeschenie_id": {
      "type": "integer",
      "description": "Идентификатор помещения (аудитория)"
    },
    "vid_zanyatosti_id": {
      "type": "integer",
      "description": "1-осн.м.р; 2-внутр.совм; 3-внеш.совм..."
    },
    "ispytatelniy_srok": {
      "type": "integer",
      "default": 0,
      "description": "Испытательный срок (дней)"
    },
    "stavka": {
      "type": "number",
      "description": "на какую ставку принимается сотрудник (от 0.1 до 1.0)"
    },
    "distant_id": {
      "type": "integer",
      "description": "Идентификатор режима работы (справочник: 1 - Стац. рабочее место, 2 - Дистанционно)"
    },
    "reserv_dlya_invalidov": {
      "type": "boolean",
      "default": false,
      "description": "Если позиция в штатном расписании зарезервирована для инвалидов"
    },
    "vid_dogovora_id": {
      "type": "integer",
      "description": "Идентификатор вида договора (1 - Срочный, 2 - Неопределенный срок)"
    },
    "data_nachala": {
      "type": "string",
      "maximum": 19,
      "pattern": "YYYY-MM-DDTHH:MM:SS",
      "description": "Дата начала работы"
    },
    "data_okonchaniya": {
      "type": "string",
      "maximum": 19,
      "pattern": "YYYY-MM-DDTHH:MM:SS",
      "description": "Дата окончания работы"
    },
    "osnovanie_sroch_dog_id": {
      "type": "integer",
      "description": "Основание срочного трудового договора (справочник)"
    },
    "lichnost_id": {
      "type": "integer",
      "description": "Идентификатор личности соискателя"
    },
    "telefon": {
      "type": "string",
      "maximum": 20,
      "description": "Телефон для обратной связи с соискателем если есть"
    },
    "istochnik_finansirovaniya": {
      "type": "object",
      "description": "Источник финансирования, если нужно уточнить до конкретного проекта",
      "properties": {
        "napravlenieId": {
          "type": "string",
          "format": "GUID",
          "maximum": 36,
          "pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$",
          "description": "Идентификатор источника финансировнаия (app_i1.ist_fin.id)"
        },
        "konsAnalitikaId": {
          "type": "integer",
          "description": "ИД из справочника Конс. аналитика"
        },
        "meropriyatieId": {
          "type": "array",
          "description": "Идентификаторы программы или мероприятий из справочника (FCP.STRUKTURA_PROGRAMMY.ID)",
          "items": {
            "type": "integer"
          }
        },
        "cfoId": {
          "type": "integer",
          "description": "Центр финансофой ответственности (ИД подразделения)"
        },
        "sofinasirovanie": {
          "type": "string",
          "format": "GUID",
          "maximum": 36,
          "pattern": "^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$",
          "description": "Идентификатор источника co-финансировнаия (app_i1.ist_fin.id)"
        },
        "required": [
          "napravlenieId",
          "konsAnalitikaId",
          "cfoId"
        ]
      }
    },
    "required": [
      "shtatnoe_raspisanie_guid",
      "kommentariy",
      "vid_zanyatosti_id",
      "stavka",
      "distant_id",
      "reserv_dlya_invalidov",
      "vid_dogovora_id",
      "data_nachala",
      "osnovanie_sroch_dog_guid",
      "lichnost_id"
    ],
    "additionalProperties": false
  }
}