Apakah Node-Red mendukung aliran multi-permintaan (yaitu sesi)?


8

Saya memberi Node-Red tes singkat minggu ini. Tidak jelas bagi saya apakah itu mendukung aliran yang mencakup lebih dari satu permintaan. Apakah Node-Red memiliki model permintaan-per-aliran atau sesi-per-aliran?

Setelah bekerja dengan alat pemrograman berbasis aliran data untuk Pemodelan Proses Bisnis (webMethods dan Tibco), saya melihat salah satu fitur utama mereka adalah kemampuan untuk memodelkan sesi dan alur kerja. Alat-alat ini, bagaimanapun, agak besar untuk keperluan sebagian besar proyek IoT sehingga akan lebih bagus jika sesuatu yang serupa dapat dicapai dengan Node-Red.

Sebuah pertanyaan lanjutan, dalam hal Node-Red tidak mendukung ini, adalah apakah ada beberapa alat sederhana yang melakukan mendukung pemodelan grafis dari mengalir sesi?


Saya tidak yakin apakah ini membantu; groups.google.com/forum/#!topic/node-red/Fv37YHVXQxw
MatsK

1
@ Mat Tidak yakin. Jika Anda mengikuti tautan ini, Anda akan melihat aliran, contoh yang dibuat, dari alat BPM. Melihat bagian "Penjual Pizza" dari aliran Anda melihat tiga acara masukan / permintaan: pesanan diterima, permintaan status (di mana pizza saya?) Dan pembayaran. Permintaan berfungsi untuk memajukan aliran yang memiliki siklus hidup yang independen dari setiap permintaan tunggal.
Chris Steinbach

1
@ MatS Contoh yang lebih relevan dengan IoT adalah, katakanlah, detektor asap yang memulai aliran ketika asap terdeteksi. Tindakan pertama (simpul) dalam aliran akan membunyikan alarm yang dapat didengar, tetapi setelah itu aliran dapat pergi beberapa cara yang berbeda. Jika permintaan pengguna diterima dalam waktu tertentu untuk membatalkan alarm, alarm yang terdengar dihentikan dan aliran berakhir. Jika tidak ada permintaan pembatalan diterima, atau pemicu pendeteksi asap lainnya, maka tindakan selanjutnya diambil (mis. Pemilik SMS, hubungi layanan darurat).
Chris Steinbach

Jawaban:


3

Jawabannya adalah tidak dan ya.

Arus dalam simpul-merah cukup statis, tidak ada gagasan tentang instantiating aliran ketika permintaan pertama datang sedemikian rupa sehingga Anda mungkin memiliki turunan dari aliran per permintaan.

Juga tidak ada gagasan bawaan tentang sesi yang akan memungkinkan Anda untuk mengaitkan pesan yang mengalir melalui arus dengan suatu sesi.

Namun, Anda dapat dengan relatif mudah membangun hal-hal ini sendiri. Node-red memberikan gagasan aliran dan keadaan global, yang diakses menggunakan objek flowdan global, lihat https://nodered.org/docs/writing-functions#storing-data . Apa yang akan Anda lakukan adalah mengirim cookie ke klien dan kemudian secara eksplisit mengaitkan permintaan masuk dengan keadaan global atau aliran yang tersimpan. Anda kemudian dapat menulis kode yang "sadar sesi" berdasarkan status sesi yang disimpan. Ini berfungsi dengan baik di node fungsi, tetapi Anda akan menemukan beberapa masalah dengan node built-in yang melakukan hal-hal seperti batas tingkat atau pesan split & merge karena ini umumnya tidak mengetahui gagasan sesi.

Dalam contoh pizza, Anda akan mempertahankan status pesanan dalam alur atau konteks global dan Anda akan mengakses status pesanan yang sesuai berdasarkan nilai cookie.


5

Jawaban singkatnya adalah ya , setidaknya sesuai permintaan fitur ini :

Tetapkan konvensi untuk sesi 'stateful' # 63

Permintaan ini ditutup dengan komit yang menyatakan bahwa node soket web ditambahkan, yang didasarkan pada token sesi.


Ini adalah fitur yang berguna, dan relevan dengan apa yang saya perhatikan sampai batas tertentu, tetapi tidak persis sama. Apa yang saya maksud dengan sesi sebenarnya adalah contoh awal dari aliran yang didefinisikan, (atau model di dunia BPM). Masa pakai dari aliran yang dipakai ini tidak terkait dengan satu permintaan atau sesi transportasi. Anggap saja seperti diagram transisi keadaan jika Anda mau, meskipun kurang diformalkan dalam implementasi yang saya lihat.
Chris Steinbach
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.