Основное функциональное назначение деплой и управление запущенным кодом в сети узлов запущенных на различных платформах, таких как window, unix, android, ios, chrome app, chrome plugin. Поддерживает создание функций на языках JavaScript, Python, Java, C++.
Архитектурно состоит из следующих частей:
- Хост-сервис - обвязка для запуска и управления фоновым сервисом который содержит в себе ядро и загруженные приложения
- Ядро - набор связанных модулей исполняющихся в общем контексте обеспечивающих базовые функциональные возможности сервиса и основной жихненный цикл приложения
- Приложение - зависимый от конкретного ядра набор функций определяющих бизнес-логику и выполняющих какие-то полезные действия
- Компонент - составная часть ядра и приложений, по сути каждая отдельная функция которая может быть вызвана из вне
- Сигнал - запрос на исполнение функций в системе, представляет собой JSON объект, в котором каждый ключ это имя функции которую необходимо вызвать. Также содержит мета-данные начинающиеся с префикса _ и теги начинающиеся с префикса @
- Процесс - набор функций исполняющихся в определенном порядке для достижения некоторой цели в общем контексте исполнения
- Ресурс - объект данных в общем контексте процесса
-
Установить глобально npm пакет с фреймворком
sudo npm install -g dpe
-
Сконфигурировать сервис в системе (вызвать в любой директории)
dpe service configure
-
Добавить зависимости
dpe app add -c -g https://domain.com/path/to.git name1 dpe app add -a -f ../path/to/directory/dpe.json name2 dpe app add -m -n npm-module-name name3
Опции: -c, --core добавляет функции с уровнем исполнения ядра (возможно все) -m, --module добавляет функции с уровнем исполнения модуля (нормальный) -a, --app добавляет функции с уровнем исполнения приложения (песочница)
-g, --git получить зависимость из GIT, должен содержать dpe.json в корне -f, --file загрузить локально dpe.json -n, --npm получить из NPM
-
Запустить сервис с выбранными зависимостями
dpe service start name1 name2
-
Создать приложение в требуемой директории
dpe init
-
Создать *.js файл с функцией
touch test.js
содержимое test.js
```javascript
module.exports.A = function (env, args, callback) {
console.log('HELLO WORLD!');
callback(null, true);
};
```
-
Добавить его в dpe.json в этой же директории, файл должен выглядеть следующим образом
{ "test": { "require": "./test.js" } }
-
Добавить приложение в сервис (исполнять в директории приложения)
dpe app add -a -f ./dpe.json
-
Вызвать функцию
dpe app call test.A
-
Как передать аргумент в функцию - dpe app call test -a "argName=argValue"
-
Как определить порядок вызова функций в сигнале
{ "A": { "@before": "B" "arg1": "test" }, "B": { "@target": true, "arg2": 100 } }
В данном случае мы помещаем результат исполнения функции в одноименный ресурс, а после читаем его при следующем вызове. Функции содержащие в аргументах ресурсы не будут исполнены до тех пор пока ресурс не будет определен.
-
Как получить состояние процесса
dpe app call process.state -a "pid=..." dpe app call process.list
-
Как остановить исполнение процесса
dpe app call process.kill -a "pid=..."