intel/intel-iot-services-orchestration-layer

询问关于IOT平台使用问题

Closed this issue · 2 comments

我们把我们的程序的很多子功能封装成多个服务,可是在IOT layer上,我不知道如何协调这些服务。

比如说,我自己写了一个service,但是要根据这个service的不同输出,触发到不同的下一个service,而service是在IOT里自己写子进程调用的。那在哪里能够获得一个service的输出,或者说,我们怎么写子进程中的可执行文件,才能够让一个节点产生它应该产生的输出呢?我们应该遵循某种规范吗?或者是其他?

时间比较紧急,还希望您能尽快回复,祝好!

你好
service的输出就是靠sendOUT
我的理解: 你想问 service中的子进程怎么将结果传给主进程

ISOL并没有对这个做任何的限制和规范, 只要遵循nodejs的方法即可. 比如可以通过
子进程: 向stdout输出
主进程:监听stdout的数据

以下例子来自nodejs官网 https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options

const spawn = require('child_process').spawn;
const ls = spawn('ls', ['-lh', '/usr']);

ls.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

ls.stderr.on('data', (data) => {
  console.log(`stderr: ${data}`);
});

ls.on('close', (code) => {
  console.log(`child process exited with code ${code}`);
});

嗯嗯,是的,我的问题是这样的,因为我们的很多服务都是依靠子进程去调用的,而这些子进程所执行的可执行文件有的可能是用python写的,有的是用java写的。所以为了维护我们的控制逻辑,必须知道service中的子进程怎么将结果传给主进程,从而根据子进程不同的输出结果,跳转到不同的其他进程。

非常感谢您的回复,我研究下node API.