laputa-trigger-modules
v0.2.2
Published
Laputa项目,由某程序触发进行相关业务;项目没有入口,以module为主;前置程序触发调用,如node-red
Downloads
5
Readme
laputa-trigger-modules
version:0.2.x
description
Laputa项目,由某程序触发进行相关业务;项目没有入口,以module为主;前置程序触发调用,如node-red
使用
初始化,并执行
新增运行模式,两种模式 whole/specify 完整模式和指定模式;
whole 表示对全部租户库支持;该项为默认配置
specify 表示对指定租户库支持,需要额外传入租户库名配置
options={runningMode:'specify',tenants:['laputa']}
//连接rethinkdb配置对象,不定义则使用默认配置文件中的配置
//运行模式 whole/specify
let options={runningMode:'specify',tenants:['laputa']};
//调用模块
const trigger = require('laputa-trigger-modules');
//获取r模块
//获取初始化模块,并初始化环境,初始化业务会将表 “system” 和 “deviceType” 数据缓存
async function begin() {
const r = trigger.rethinkdb.init(options.db);
options.r = r;
const appInit = trigger.appInit(options);
const caches = await appInit.init();
const frame = { r: r, caches:caches};
return frame;
}
begin();
自动生成工单业务
传入的数据主体为msgpack序列化格式 topic 格式中包含tenant库名;符合如“rcg/event/sh/laputa/env”,第4位为库名
生成的新工单数据会放入回调方法中被执行
/**
* ticket 新生成的工单数据对象
* topic 租户库名
**/
callback(ticket,topic){}
调用方法
/**
* ......
* ......
* 省略启动时执行
**/
//获取自动生成工单模块
const autoTicket = trigger.autoTicket;
//假设进入的数据
const message = {
"deviceId": "5b2f68a5-1adb-4c8e-8fbf-811523779698",
"monitorId": "436cf7b3-d6c0-4077-a1a7-25406ca11308",
"state": "alarm",
"value": 67.57,
"_updateTime": 1503987070305
}
const _message=msgpack.encode(message);
const topic='rcg/event/sh/laputa/env';
begin().then(frame => {
autoTicket(frame, topic, _message, function (ticket, topic) {
console.log('new ticket', ticket, topic);
});
});
推送数据Hook模块
- 用于生成web hook,触发数据推送
//调用模块
const {PushMessageQueue} = require('laputa-trigger-modules').manual2Push;
//初始化接收推送数据队列
const queuePush = new PushMessageQueue();
//数据传入
queuePush.start_check(topic, pushData);
//获取最新待推送数据
let msg=queuePush.oneByOne();
console.log(JSON.stringify(msg.app));
内部模块调用消息推送
const { InnerProcess } = require('laputa-trigger-modules').manual2Push;
//必须要已经有创建好的‘queuePush’
const innerPush = new InnerProcess(queuePush);
//推送消息
innerPush.okMessage(pushData);
License
公司内部使用