Част 1. Въведение

Корпоративни модули

SYNRC Enterprise е съвкупност от библиотеки (N2O.DEV) и подсистеми за приложения (ERP.UNO), който използва споделена шина и споделена разпределена база данни.

N2O.DEV ERP.UNO МІА: Підприємство ROOTS ------- ------- ----------------- ----------- active acc crm n2o.dev bert bank cart erp.uno bpe chat agent infotech.gov.ua form plm scan synrc.com fs db wms kvs sample xio mach erp mad fin n2o fix nitro ldap pie pm rest tms sh scm rt review base rocksdb mnesia bench

LDAP — Сървър за удостоверяване, съхранение на ключове и фирмена директория.

ERP — Този модул съхранява основната йерархична структура на предприятието, неговата схема, записи на персонала, инвентар, компании и офиси на предприятието.

FIN — Финансовият модул на предприятието съхранява бизнес процеси, които представляват сметките на участниците в системата: персонал (за изчисляване на заплатите), сметки и субрактури на предприятието (за извършване на икономически дейности) и външни сметки в платежните системи.

ACC — Система за управление на персонала: ведомост, фирмен календар, ваканции, отпуск по майчинство, други календари.

SCM — Система за управление на веригата от доставки: Основнният БП (бизнес процес) на системата е процесът на спедиция на товари за доставка на стоки до получателската верига чрез транспортни компании.

CRM — Система за управление на клиенти: Разширение на абстрактното приложение CHAT.

PLM — Система за управление на жизнения цикъл на проекти и продукти. Съдържа също и отчети за паричните потоци и отчетите.

PM — Система за управление на жизнения цикъл на проекти и продукти. Съдържа също и отчети за паричните потоци и отчетите.

WMS — Система за управление на складове.

TMS — Система за управление на транспорта.

PLM модул

Този документ описва системата за управление на жизнения цикъл на продукта за управление на жизнения цикъл (PLM). Въз основа на PLM модула разработихме система за управление на аутсорсинг на Quanterall с възможности за инвестиции и възможности за счетоводство за програмисти.

Цели на проекта:

— Повишаване на прозрачността на бизнеса;
— Издаване на опции за печалба;
— Автоматизация на предприятията.

Цели на проекта:

— Създаване на табло за управление, служители и инвеститори;
— Отчитане на проекти (CashFlow, P&L);
— Управление на опции за програмисти;
— Инвестиране в проекти от други инвеститори (със застраховка).

Бизнес процеси:

— Бизнес процес - акаунт на участник в проекта (FIN);
— Основният бизнес процес на модула е дългосрочен продуктов проект (PLM);
— Създаване на проект с привличане на инвестиции със залог на печалба от други проекти (Pre-PLM);
— Месечен процес на разпределение на печалбата (PLM-Calc): след приспадане на разплащателната ведомост от списъка с ведомости на клиентите на CashFlow създаваме списък с статии: 1) Застрахователен фонд (който се ухапва, ако използваме този проект като обезпечение за заем за друг проект; 2) Опции за програмисти, автоматично издадени на хора, които работят по този проект; други хора също могат да участват; 3) Нашите приходи (безплатен басейн или резервация); 4) Удръжки в R&D (задължително).

Ръководство за разработчици на PLM

Ръководството за разработчици на PLM включва стъпка по стъпка описание на процеса на създаване на PLM подсистема с помощта на SYNRC библиотеки: 1) Административна част: KVS, BPE, FORM; 2) Конфигурационни модули на PLM: PLM, FIN, LDAP.

PLM системата зависи и от други модули на предприятието: FIN - финансов модул за управление на лични сметки и сметки на предприятието; ACC - модул за управление на персонала и изпълнителите; ERP - модул за капсулиране на организационната структура на предприятието; LDAP - идентичност и система за управление на ключовете. В допълнение към корпоративни модули тук се разглеждат и звисимостите на PLM модула: BPE - система за управление на бизнес процесите в предприятието; KVS - система за съхранение; FORM е система за генериране на форми. PLM зависи и от други библиотеки, които не са обхванати в този документ: N2O - система за управление на връзки и протоколи; NITRO - Система за генериране на HTML5.

Управление на ресурсите

Информационната структура на нашето предприятие се състои основно от изчислителни ресурси (приложения, работещи в шината) и натрупани ресурси (данни, съхранявани в базата данни).

SOA архитектурата, като модел за управление на изчислителни ресурси, предлага асинхронен протокол за повикване на отдалечена шина. Заедно с N2O, MQTT и други шини могат да се използват, като се използват следните протоколи: TCP, WebSocket. Тези асинхронни протоколи често се наричат протоколи в реално време, защото винаги изпращат резултати като незабавни съобщения. Що се отнася до протоколите за публикуване и достъп до данни, тук може да е подходящо да се използва синхронен HTTP протокол.

Изчислителни ресурси

SOA архитектурите традиционно използват асинхронни протоколи за достъп за изчисляване на ресурси. Обикновено това са сървърни работни станции, които са свързани към шината и обслужват API на определено приложение. Всяко приложение има свой постоянен хеш пръстен за работен кон. Допускат се и много други мрежи на други приложения работят в мрежата без колизии.

config :n2o, tcp_services: ['ldap'], ws_services: ['chat'], mqtt_services: ['erp', 'bpe']

С помоща на config.exs файла, можете да конфигурирате необходимата конфигурация на поредица пръстени, всеки от които работи на собствен транспортен протокол. Този пример показва карта на сървърите на Erlang, които обслужват опашки от приложения в шината:

> PLM.vnodes [ {{:tcp, '/ldap/tcp/4'}, [:n2o_tcp]}, {{:tcp, '/ldap/tcp/3'}, [:n2o_tcp]}, {{:tcp, '/ldap/tcp/2'}, [:n2o_tcp]}, {{:tcp, '/ldap/tcp/1'}, [:n2o_tcp]}, {{:ws, '/chat/ws/4'}, [:n2o_ws]}, {{:ws, '/chat/ws/3'}, [:n2o_ws]}, {{:ws, '/chat/ws/2'}, [:n2o_ws]}, {{:ws, '/chat/ws/1'}, [:n2o_ws]}, {{:mqtt, '/erp/mqtt/4'}, [:n2o_mqtt]}, {{:mqtt, '/erp/mqtt/3'}, [:n2o_mqtt]}, {{:mqtt, '/erp/mqtt/2'}, [:n2o_mqtt]}, {{:mqtt, '/erp/mqtt/1'}, [:n2o_mqtt]}, {{:mqtt, '/bpe/mqtt/4'}, [:n2o_mqtt]}, {{:mqtt, '/bpe/mqtt/3'}, [:n2o_mqtt]}, {{:mqtt, '/bpe/mqtt/2'}, [:n2o_mqtt]}, {{:mqtt, '/bpe/mqtt/1'}, [:n2o_mqtt]}, {{:caching, 'timer'}, [:n2o]} ]

Този детайл дава възможност за проектиране на разнородни системи, включително необходимия набор от протоколи на портовете на желаните машини. Същата система ви позволява да получите балансиране на натоварването чрез свързване на физически ресурси към конкретни опашки на шината за данни.

В нашия модел асинхронните протоколи се използват за управление на компютърните ресурси на предприятието.

Натрупани ресурси

Разпределените хеш-пръстени се използват не само за разпределени изчисления, но и за съхранение на данни. Някои бази данни, като RocksDB и Cassandra, използват глобално пространство за ключове за данни (за разлика от ориентираните към таблица бази данни). Именно за такива бази е създадена KVS библиотеката, където като синхронен транзакционен интерфейс е API на вериги с гаранция за последователност. Следва пример за структура на веригата на екземпляра PLM:

> :kvs.all :writer [ {:writer, '/bpe/proc', 2}, {:writer, '/erp/group', 1}, {:writer, '/erp/partners', 7}, {:writer, '/acc/synrc/Kyiv', 3}, {:writer, '/chat/5HT', 1}, {:writer, '/bpe/hist/1562187187807717000', 8}, {:writer, '/bpe/hist/1562192587632329000', 1} ]

В нашия модел се използват синхронни протоколи за управление на натрупаните ресурси на предприятието и транзакционната обработка.

Типични спецификации

Протоколите се определят от стандартните спецификации и се генерират за следните езици: Java, Swift, JavaScript, Google Protobuf V3, ASN.1. Ние също така генерираме валидатори на данни за тези типични пояснения и вграждаме тези валидатори в пътя на нашите разпределени протоколи, така че никога няма да оставим клиентите да се объркат. За уеб приложения сме разработили система за валидиране - както за JavaScript, така и за сървърна страна. Бизнес логиката е напълно изолирана в нашата система за управление на бизнес процеси, където всеки бизнес процес е процес на виртуална машина. Всички вериги са атомно модифицирани, слоийно разделени и не се нуждаят от допълнителна изолация за тяхното примитивно използване. Следователно, можете да третирате базата данни като разпределен кеш и да я използвате като front-end база на приложенията за примитивни случаи.