Streaming Acara
Diperkenalkan pada Versi 13
Streaming Peristiwa memungkinkan komunikasi antar situs antara dua atau lebih situs. Anda dapat berlangganan Jenis Dokumen dan melakukan streaming Dokumen antara situs yang berbeda.
Misalnya: Anggap Anda memiliki lebih dari satu Perusahaan yang dihosting di situs yang berbeda, salah satunya adalah situs utama tempat Anda ingin melakukan pencatatan buku besar dan di situs lainnya, Faktur Penjualan dibuat. Anda dapat menggunakan Streaming Peristiwa dalam kasus ini. Untuk ini, situs perusahaan anak Anda dapat berlangganan ke situs perusahaan utama untuk Jenis Dokumen Barang, Pelanggan, dan Pemasok. Perusahaan utama pada gilirannya dapat berlangganan ke perusahaan anak untuk Faktur Penjualan.
Untuk mengakses Event Streaming, kunjungi:
Home > Automation > Event Streaming
1. Prasyarat
Sebelum membuat Event Producer, pengguna umum perlu dibuat di kedua situs yang akan digunakan untuk mengakses situs dan akan bertindak sebagai Event Subscriber. Pastikan pengguna adalah System Manager dan memiliki izin yang diperlukan untuk pembuatan, pembaruan, dan penghapusan DocType yang dilanggan.
2. Cara mengatur Streaming Acara
Mari kita ambil dua situs untuk menjelaskan prosesnya. http://testsite:8000 (Situs konsumen) dan http://testsite_producer:8000 (Situs produsen)
2.1 Dapatkan kunci Pelanggan Acara dari Situs Produsen
- Pada http://testsiteproducer:8000 (situs produsen), buka Daftar Pengguna.
- Buka dokumen pengguna yang akan Anda gunakan sebagai Pelanggan Acara. Gulir ke bawah ke bagian yang diberi label "Akses API". Di bagian tersebut, buat kunci untuk pengguna dengan mengklik tombol Buat Kunci . Anda akan mendapatkan prompt dengan rahasia pengguna, salin rahasia pengguna dan simpan bersama Anda. Ini juga akan membuat kunci API.
2.2 Hasilkan Kunci untuk Pelanggan Acara di Situs Konsumen
- Di http://test_site:8000 (situs konsumen), buka Daftar Pengguna dan ikuti proses yang sama yang ditentukan pada langkah sebelumnya.
2.3 Membuat Produsen Acara di Situs Konsumen
- Situs yang ingin Anda langgani disebut sebagai Event Producer. Buat dokumen Event Producer untuk situs yang ingin Anda dapatkan pembaruannya.
- Di http://test_site:8000 (situs konsumen), buka Home > Automation > Event Streaming > Event Producer.
- Masukkan URL situs yang ingin Anda langgani (dalam hal ini http://testsiteproducer:8000), di bidang URL Produsen.
- Tambahkan semua Jenis Dokumen yang ingin Anda langgani, di tabel Jenis Dokumen Produsen Peristiwa.
- Jika Anda ingin agar dokumen yang dibuat memiliki nama yang sama seperti yang ada di situs Pembuat Peristiwa jarak jauh, centang kotak 'Gunakan Nama yang Sama' dalam tabel pada Jenis Dokumen yang diperlukan.
- Tetapkan kolom Event Subscriber ke pengguna yang akan digunakan untuk membuat dokumen yang diambil dari Event Producer. Anda perlu membuat pengguna yang sama di kedua cara, yaitu di situs Event Consumer dan Event Producer sebelum membuat Event Producer.
- Tempelkan kunci API dan Rahasia API yang Anda buat pada langkah pertama (2.1) di bidang kunci API dan rahasia API.
- Menyimpan.
- Setelah disimpan, Event Consumer dibuat di situs produsen (http://testsiteproducer:8000). Kunci pengguna di situs konsumen secara otomatis disalin ke dokumen Event Consumer di situs produsen dalam proses ini.
Catatan : Jika Rahasia API diubah untuk pengguna di salah satu situs ini, Anda harus memperbarui kunci secara manual di Produsen Peristiwa dan Konsumen Peristiwa di kedua situs tersebut.
2.4 Menyetujui Konsumen Acara di situs Produsen Acara
- Setelah Event Producer dibuat, Event Consumer akan otomatis dibuat di situs produsen. Secara default, semua Jenis Dokumen yang Dilanggan memiliki status 'Tertunda'. Agar Event Consumer dapat menggunakan dokumen dari Jenis Dokumen ini, Statusnya perlu diperbarui menjadi 'Disetujui'.
- Buka: Home > Automation > Event Streaming > Event Consumer.
- Setelah Anda membuka dokumen Event Consumer, Anda akan melihat semua Jenis Dokumen yang telah dilanggani oleh konsumen. Ubah status dari 'Pending' menjadi 'Approved' untuk semua Jenis Dokumen yang ingin Anda setujui untuk digunakan. Anda dapat mengubah status menjadi 'Rejected' jika Anda tidak ingin dokumen Jenis Dokumen tersebut digunakan.
- Menyimpan. \
Catatan : Pembaruan dokumen untuk Jenis Dokumen yang Dilanggan tidak akan disinkronkan kecuali jika Disetujui.
2.5 Akses offline dengan satu situs
Jika Anda memiliki beberapa tempat yang konektivitas internetnya rendah, misalnya, sebuah toko di daerah terpencil tempat faktur penjualan dibuat dan Anda ingin menyinkronkan faktur ini dari toko ke akun yang dihosting, Anda dapat mengatur sinkronisasi offline menggunakan langkah-langkah berikut:
- Siapkan instansi lokal BizOps ERP. Anda dapat merujuk ke panduan ini untuk pengaturan lokal.
- Anda perlu menyiapkan akun host di perusahaan Anda.
- Sekarang buat Produsen Acara pada akun yang dihosting dan atur URL produsen ke URL akun lokal Anda.
- Tambahkan doctype apa pun yang ingin Anda sinkronkan dalam tabel anak Jenis Dokumen Produsen Peristiwa.
- Menyetujui doctype.
3. Fitur
3.1 Berhenti berlangganan pembaruan
Sebagai Konsumen Acara, jika Anda ingin berhenti berlangganan pembaruan untuk setiap doctype yang sebelumnya telah Anda langgani, centang berhenti berlangganan pada doctype tersebut. Anda tidak akan menerima pembaruan lagi dari situs produsen untuk doctype tertentu setelah Anda berhenti berlangganan.
3.2 Catatan Pembaruan Acara
"Log Pembaruan Peristiwa" mencatat setiap tindakan membuat, memperbarui, dan menghapus dokumen yang memiliki konsumen di situs Pembuat Peristiwa. Untuk melihat Log Pembaruan Peristiwa:
Buka: Home > Automation > Event Streaming > Event Update Log.
- Untuk jenis 'Buat', Jenis Pembaruan, Jenis Dokumen, Nama Dokumen, dan keseluruhan dokumen (sebagai JSON) dicatat.
- Untuk jenis 'Pembaruan', Jenis Pembaruan, Jenis Dokumen, Nama Dokumen, dan data yang diperbarui (selisih antara status sebelumnya dan status dokumen saat ini) dicatat.
- Untuk jenis 'Hapus', hanya Jenis Pembaruan, Jenis Dokumen, dan Nama Dokumen yang dicatat.
3.3 Log Sinkronisasi Peristiwa
Seperti Log Pembaruan, Log Sinkronisasi Peristiwa mencatat setiap dokumen yang disinkronkan dari Pembuat Peristiwa di situs Konsumen Peristiwa. Untuk melihat Log Sinkronisasi Peristiwa:
Buka: Home > Automation > Event Streaming > Event Sync Log.
Peristiwa yang berhasil disinkronisasikan menghasilkan dokumen log dengan:
- Update Type: Buat, Perbarui atau Hapus
- Status: Status Sinkronisasi
- DocType
- Event Producer: URL situs tempat dokumen dibuat
- Document Name
- Remote Document Name: Jika 'Gunakan Nama yang Sama' tidak dicentang
- Use Same Name
- Data : Data dokumen sebagai JSON
Peristiwa yang gagal menghasilkan dokumen log dengan bidang-bidang di atas beserta:
- Error: Kesalahan yang menyebabkan dokumen tidak disinkronkan.
- Resync Button: Tombol ini juga menyediakan tombol 'Resinkronisasi' guna menyinkronkan kembali peristiwa yang gagal.
3.4 Sinkronisasi Ketergantungan
Jenis Dokumen Tertentu memiliki dependensi. Misalnya, sebelum menyinkronkan Faktur Penjualan, Item dan Pelanggan harus ada di situs saat ini. Jadi, Item dan Pelanggan adalah dependensi untuk Faktur Penjualan. Event Streaming menangani ini dengan sinkronisasi dependensi sesuai permintaan. Setiap kali dokumen akan disinkronkan, pertama-tama akan diperiksa apakah dokumen tersebut memiliki dependensi (kolom Tautan, kolom Tautan Dinamis, kolom Tabel Anak, dll.). Jika dependensi tersebut tidak terpenuhi, yaitu dokumen dependen (misalnya: Item) tidak ada di situs konsumen Anda, dokumen tersebut akan disinkronkan terlebih dahulu, kemudian Faktur Penjualan akan disinkronkan.
Misalnya: Sinkronisasi Faktur Penjualan dengan ketergantungan Item:
3.5 Konfigurasi Penamaan
Centang kotak 'Gunakan Nama yang Sama' untuk membiarkan dokumen memiliki nama yang sama di situs Event Producer dan Event Consumer. Jika ini tidak dicentang, maka dokumen akan dibuat menggunakan konvensi penamaan situs saat ini.
Catatan : Untuk Jenis Dokumen yang memiliki rangkaian penamaan, sebaiknya kotak centang 'Gunakan Nama yang Sama' tidak dicentang, untuk mencegah konflik penamaan. Jika ini tidak dicentang, Dokumen dibuat dengan mengikuti konvensi penamaan di situs saat ini dan bidang kustom 'Nama Situs Jarak Jauh' dan 'Nama Dokumen Jarak Jauh' ditetapkan dalam dokumen yang disinkronkan untuk menyimpan URL situs Pembuat Peristiwa dan nama dokumen di situs jarak jauh.
3.6 Konfigurasi Pemetaan
Jika Anda ingin melakukan streaming dokumen antara instansi BizOps ERP dan aplikasi Frappe lain untuk Jenis Dokumen tertentu dengan struktur yang sama atau berbeda, atau jika nama bidang berbeda di kedua situs, Anda dapat menggunakan Streaming Peristiwa dengan Konfigurasi Pemetaan.
Untuk ini, Anda perlu terlebih dahulu menyiapkan Pemetaan Jenis Dokumen.
Untuk mengakses Pemetaan Jenis Dokumen, buka:
Home > Automation > Event Streaming > Document Type Mapping.
3.6.1 Pemetaan untuk DocTypes dengan struktur serupa
- Mapping Name: Berikan nama unik untuk pemetaan
- Local Document Type: Tipe Dokumen di situs Anda saat ini
- *Remote Document Type: * Jenis Dokumen di situs Produsen Acara yang ingin Anda sinkronkan
Pada tabel anak Pemetaan Lapangan:
- Local Fieldname: Nama bidang dalam jenis Dokumen Lokal situs Anda saat ini.
- Remote Fieldname: Nama bidang dalam jenis Dokumen Jarak Jauh dari situs Pembuat Peristiwa yang ingin Anda petakan ke Nama Bidang Lokal. Selama sinkronisasi, nilai nama bidang jarak jauh disalin ke nama bidang lokal.
3.6.2 Nilai default untuk beberapa bidang
Jika kolom Anda tidak dipetakan ke nama kolom jarak jauh lainnya dan Anda selalu ingin kolom tersebut memiliki nilai yang sama, tetapkan nilai yang sama di kolom nilai default. Bahkan jika Anda telah menetapkan nama kolom jarak jauh, jika selama sinkronisasi, nilai kolom jarak jauh tidak ditemukan dan jika "Nilai Default" telah ditentukan, nilai tersebut akan ditetapkan.
3.6.3 Pemetaan untuk DocType yang memiliki tabel anak
Jika bidang yang coba Anda petakan adalah tabel anak, Anda perlu membuat Pemetaan Jenis Dokumen lain untuk bidang tabel anak tersebut.
- Mapping Type: Pilih Jenis Pemetaan sebagai Tabel Anak.
- Mapping: Pilih Jenis Dokumen Dokumen pemetaan yang Anda buat untuk tabel anak.
3.6.4 Pemetaan untuk DocTypes yang memiliki dependensi (Link, bidang Tautan Dinamis)
Jika DocTypes yang coba Anda petakan memiliki jenis dependensi seperti bidang Tautan atau Tautan Dinamis, Anda perlu menyiapkan Pemetaan Jenis Dokumen lain untuk menyinkronkan dependensi tersebut.
Misalnya, mari kita asumsikan bahwa doctype lokal adalah Opportunity dan doctype jarak jauh adalah BizOps ERP Opportunity. Bidang party_name
(Bidang tautan untuk DocType Lead) di Opportunity dipetakan ke full_name
(Bidang data) di Bizops Opportunity. Selama sinkronisasi, Lead ini harus dibuat agar Opportunity utama dapat disinkronkan. Jadi, Anda perlu menyiapkan pemetaan untuk Bidang Tautan ini juga.
- Mapping Type: Dalam kasus ini, Jenis Pemetaan adalah Dokumen.
- *Mapping: * Pilih pemetaan yang baru Anda buat.
- Remote Value Filters: Anda perlu menentukan filter yang akan mengambil dokumen jarak jauh yang tepat untuk dipetakan. Seperti dalam kasus ini, DocType jarak jauh adalah BizOps ERP Opportunity yang dapat diambil secara unik menggunakan nama, nomor telepon, dan negara.
Formatnya adalah:
{ "namabidang jarak jauh": "bidang atau ekspresi tempat kita akan mendapatkan nilai untuk nama bidang tersebut"}
Jika Anda ingin mengambil nilai dari suatu tempat, mulailah ekspresi dengan eval:
Seperti dalam kasus ini adalah:eval:frappe.db.get_value('Global Defaults', None, 'country')
Terakhir, aktifkan opsi 'Has Mapping' di tabel anak Konfigurasi Peristiwa di Produsen Peristiwa terhadap Jenis Dokumen yang diperlukan dan pilih Pemetaan Jenis Dokumen yang baru saja Anda buat.
3.6 Konfigurasi Peristiwa Bersyarat
Jika Anda berada dalam skenario di mana Anda tidak ingin mengirimkan semua dokumen dalam doctype ke konsumen, Anda dapat menentukan kondisinya.
Misalnya, jika Anda hanya ingin memancarkan Note
dokumen-dokumen yang bersifat publik, Anda dapat menentukannya dalam dokumen Produsen/Konsumen.
Jika suatu dokumen memenuhi suatu kondisi di kemudian hari selama masa berlakunya, semua dokumen lama
Event Update Logs
akan disinkronkan ke konsumen
Mari kita pertimbangkan contoh lain. Anda ingin menyinkronkan hanya Faktur Penjualan yang dikirimkan. Anda dapat menentukannya doc.docstatus == 1
sebagai kondisi. Faktur tidak akan disinkronkan hingga dikirimkan.
Untuk setiap log pembaruan, Anda dapat melihat Konsumennya dalam dokumen Log Pembaruan.
Jika Anda memerlukan kontrol yang lebih baik atas kondisi, Anda dapat menghubungkan fungsi kustom. Fungsi Anda akan dieksekusi dengan parameter consumer
, doc
& update_log
. Misalnya, Anda ingin menyinkronkan hanya Catatan yangodd
def isoddnote(consumer, doc, update_log): return frappe.db.sql(""" SELECT COUNT(*) FROM
tabNote
WHERE creation <= %(creation)s """, { "creation": doc.creation })[0][0] % 2 != 0
Kemudian, Anda dapat menentukan kondisinya:
cmd: mycustomapp.note.isoddnote