Halaman ini memberikan ringkasan singkat tentang folder dan menjelaskan cara mengelola dokumen menggunakan folder.
Mesin Kebijakan dan aturan
Di Gudang Dokumen, Policy Engine memungkinkan pengguna menentukan dan menjalankan operasi umum pada dokumen (misalnya, memvalidasi atau memperbarui) saat membuat atau memperbarui dokumen.
Aturan dan RuleSet
Aturan pada tingkat tinggi mengacu pada konfigurasi yang ditentukan pengguna yang menentukan hal berikut:
- apa yang memicu pemeriksaan aturan,
- kondisi mana yang dievaluasi, dan
- tindakan apa yang dijalankan saat kondisi terpenuhi.
Selain spesifikasi ini, aturan mencakup informasi deskripsi, sumber, target, dan kondisi pemicu.
Kumpulan aturan logis disebut RuleSet. Misalnya, Aturan yang beroperasi pada skema yang sama dapat dikelompokkan bersama menjadi satu RuleSet. Pelanggan dapat menentukan beberapa RuleSet.
Aturan berguna untuk memicu tindakan standar secara otomatis, saat membuat atau memperbarui dokumen.
Aturan terdiri dari tiga hal utama:
- TriggerType: Peristiwa saat pemeriksaan aturan harus dimulai. Create dan Update adalah jenis pemicu yang didukung.
- Kondisi Aturan: Kondisi yang dievaluasi setelah jenis pemicu tertentu terdeteksi. Kondisi dapat dinyatakan menggunakan Common Expression Language (CEL). Setiap kondisi harus dievaluasi ke output boolean.
- Tindakan: Serangkaian langkah yang dijalankan saat aturan terpenuhi. Jika kondisi aturan dievaluasi sebagai benar, tindakan yang sesuai (dikonfigurasi dalam aturan) akan dijalankan. Berikut adalah detail tingkat tinggi tentang tindakan tertentu yang diterapkan di Document Warehouse:
- Tindakan Validasi Data: Tindakan yang memungkinkan validasi kolom tertentu dalam dokumen selama pembuatan atau pembaruan dokumen.
- Tindakan Pembaruan Data: Tindakan yang memungkinkan pembaruan kolom tertentu dalam dokumen selama pembuatan atau pembaruan dokumen. Pembaruan tersebut dijalankan saat kondisi aturan terpenuhi.
- Tindakan Hapus Dokumen: Tindakan yang memungkinkan penghapusan dokumen selama pembaruan dokumen saat kolom tertentu memenuhi kriteria penghapusan yang ditentukan menggunakan kondisi aturan.
- Tindakan penyertaan folder: Tindakan yang otomatis menambahkan dokumen baru (atau dokumen yang diupdate) ke folder tertentu. Folder tersebut dapat ditentukan secara langsung menggunakan namanya.
- Tindakan hapus dari folder: Tindakan yang otomatis menghapus dokumen baru dari folder tertentu saat kondisi tingkat aturan terpenuhi.
- Tindakan Kontrol Akses: Tindakan yang memungkinkan pembaruan daftar kontrol akses (binding grup dan pengguna) selama pembuatan dokumen. Pembaruan tersebut dijalankan saat kondisi aturan terpenuhi.
- Tindakan publikasikan: Tindakan yang memublikasikan pesan tertentu ke saluran Pub/Sub pengguna saat kondisi tingkat aturan terpenuhi.
Mengelola Kumpulan Aturan
Document Warehouse menyediakan API untuk mengelola RuleSet (Buat, Dapatkan, Perbarui, Hapus, Buat Daftar). Bagian ini memberikan contoh untuk mengonfigurasi berbagai jenis aturan.
Membuat RuleSet
Untuk membuat set aturan, lakukan hal berikut:
REST
Permintaan:
# Create a RuleSet for data validation.
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://contentwarehouse.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/ruleSets \
-d '{
"rules": [
{
"trigger_type": "ON_CREATE",
"condition": "documentType == \'W9\' && STATE ==\'CA\'",
"actions": {
"data_validation": {
"conditions": {
"NAME": "NAME != \'\'",
"FILING_COST": "FILING_COST > 10.0"
}
}
},
"enabled": true
}
],
"description": "W9: Basic validation check rules."
}'Respons
{
"description": "W9: Basic validation check rules.",
"name": "RULE_SET_NAME",
"rules": [
{
"actions": [
{
"actionId": "de0e6b84-106b-44ba-b1c4-0b3ad6ddc719",
"dataValidation": {
"conditions": {
"FILING_COST": "FILING_COST > 10.0",
"NAME": "NAME != ''"
}
}
}
],
"condition": "documentType == 'W9' && STATE =='CA'",
"enabled": true,
"triggerType": "ON_CREATE"
}
]
}
Python
Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Document AI Warehouse.
Untuk melakukan autentikasi ke Document AI Warehouse, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Document AI Warehouse.
Untuk melakukan autentikasi ke Document AI Warehouse, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Mencantumkan RuleSet
Untuk mencantumkan set aturan dalam project, lakukan hal berikut:
REST
Permintaan:
# List all rule-sets for a project.
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://contentwarehouse.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/ruleSetsRespons
{
"ruleSets": [
{
"description": "W9: Basic validation check rules.",
"rules": [
{
"triggerType": "ON_CREATE",
"condition": "documentType == 'W9' && STATE =='CA'",
"actions": [
{
"actionId": "fcf79ae8-9a1f-4462-9262-eb2e7161350c",
"dataValidation": {
"conditions": {
"NAME": "NAME != ''",
"FILING_COST": "FILING_COST > 10.0"
}
}
}
],
"enabled": true
}
],
"name": "RULE_SET_NAME"
}
]
}Mendapatkan RuleSet
Untuk mendapatkan set aturan menggunakan nama set aturan, lakukan hal berikut:
REST
Permintaan:
# Get a rule-set using rule-set ID.
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://contentwarehouse.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/ruleSets/RULE_SETRespons
{
"description": "W9: Basic validation check rules.",
"rules": [
{
"triggerType": "ON_CREATE",
"condition": "documentType == 'W9' && STATE =='CA'",
"actions": [
{
"actionId": "7559346b-ec9f-4143-ab1c-1912f5588807",
"dataValidation": {
"conditions": {
"NAME": "NAME != ''",
"FILING_COST": "FILING_COST > 10.0"
}
}
}
],
"enabled": true
}
],
"name": "RULE_SET_NAME"
}Menghapus RuleSet
Untuk menghapus set aturan menggunakan nama set aturan, lakukan hal berikut:
REST
Permintaan:
# Get a rule-set using rule-set ID.
curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://contentwarehouse.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/ruleSets/RULE_SETTindakan Aturan
Bagian ini akan membahas ekspresi aturan dan setiap contoh tindakan aturan.
Contoh kondisi
Kondisi mengacu pada ekspresi yang ditentukan menggunakan Common Expression Language.
Contoh:
- Ekspresi kolom string
STATE == \'CA\'. Periksa apakah nilai kolomSTATEsama denganCANAME != \'\'. Periksa apakah nilai kolomNAMEtidak kosong.
- Ekspresi kolom angka
FILING_COST > 10.0. Periksa apakah nilai kolomFILING_COST(ditetapkan sebagai float) lebih besar dari10.0.
Cara memeriksa apakah dokumen termasuk dalam skema tertentu
Untuk merujuk ke jenis skema tertentu, gunakan nama kolom khusus documentType (ini adalah kata yang dicadangkan). Nilai ini dievaluasi terhadap kolom DisplayName di DocumentSchema.
Contoh:
documentType == \'W9\'
Kondisi sebelumnya memeriksa apakah skema dokumen (menggunakan kata kunci documentType) memiliki nama tampilan W9.
Cara merujuk ke nilai properti dokumen lama/yang ada dan nilai properti dokumen baru
Untuk mendukung kondisi yang mencakup properti yang ada dan yang baru diberikan, gunakan dua awalan berikut dengan operator DOT untuk mengakses versi properti tertentu:
OLD_untuk merujuk ke properti dokumen yang ada.NEW_untuk merujuk ke properti dokumen baru dalam permintaan.
Contoh:
OLD_.state == \'TX\' && NEW_.state == \'CA\'Memeriksa bahwa nilai properti status yang ada adalahTXdan nilai baru yang diberikan adalahCA.
Penanganan kolom tanggal
Untuk DriverLicense Dokumen, jika EXPIRATION_DATE sebelum tanggal tertentu
- Perbarui (atau tambahkan yang baru jika tidak ada)
EXPIRATION_STATUS(kolom enum) dengan nilai yang sama denganEXPIRING_BEFORE_CLOSING_DATE.
Untuk menambahkan nilai tanggal, gunakan fungsi stempel waktu seperti yang ditunjukkan pada contoh berikut.
REST
Permintaan:
# Check if document expires before a date and update the status field
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://contentwarehouse.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/ruleSets \
-d '{
"rules":[
{
"trigger_type": "ON_CREATE",
"description": "Expiration date check rule",
"condition": "documentType==\'DriverLicense\' && EXPIRATION_DATE < timestamp(\'2021-08-01T00:00:00Z\')",
"actions": {
"data_update": {
"entries": {
"EXPIRATION_STATUS": "EXPIRING_BEFORE_CLOSING_DATE"
}
}
}
}
]
}'Aturan validasi data
Validasi dokumen W9 untuk STATE (kolom teks) California:
- Pastikan
NAME(kolom teks) tidak kosong. Pastikan
FILING_COST(kolom float) lebih besar dari10.0.
REST
Permintaan:
# Rules for data validation.
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://contentwarehouse.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/ruleSets \
-d '{
"rules": [
{
"trigger_type": "ON_CREATE",
"condition": "documentType == \'W9\' && STATE ==\'CA\'",
"actions": {
"data_validation": {
"conditions": {
"NAME": "NAME != \'\'",
"FILING_COST": "FILING_COST > 10.0"
}
}
},
"enabled": true
}
],
"description": "W9: Basic validation check rules."
}'Aturan pembaruan data
Untuk dokumen W9, jika kolom BUSINESS_NAME adalah Google:
- Perbarui (atau tambahkan yang baru jika tidak ada) kolom
Addressyang sama dengan1600 Amphitheatre Pkwy. Perbarui (atau tambahkan yang baru jika tidak ada) kolom
EINyang sama dengan77666666.
REST
Permintaan:
# Rule for data update.
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://contentwarehouse.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/ruleSets \
-d '{
"rules":[
{
"description": "W9: Rule to update address data and EIN.",
"trigger_type": "ON_CREATE",
"condition": "documentType==\'W9\' && BUSINESS_NAME == \'Google\'",
"actions": {
"data_update": {
"entries": {
"Address": "1600 Amphitheatre Pkwy",
"EIN": "776666666"
}
}
}
}
]
}'Aturan penghapusan dokumen
Saat memperbarui dokumen W9, jika kolom BUSINESS_NAME diubah menjadi Google, hapus dokumen.
REST
Permintaan:
# Rule for deleting the document
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://contentwarehouse.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/ruleSets \
-d '{
"rules": [
{
"description": "W9: Rule to delete the document during update.",
"trigger_type": "ON_UPDATE",
"condition": "documentType == \'W9\' && BUSINESS_NAME == \'Google\'",
"actions": {
"delete_document_action": {
"enable_hard_delete": true
}
}
}
]
}'Aturan kontrol akses
Saat memperbarui dokumen W9, jika kolom BUSINESS_NAME adalah Google, perbarui binding kebijakan yang mengontrol akses ke dokumen
Menambahkan binding baru
Jika dokumen memenuhi kondisi aturan:
- Menambahkan peran Editor untuk
user:a@example.comdangroup:xxx@example.com Menambahkan peran Pelihat untuk
user:b@example.comdangroup:yyy@example.com
REST
Permintaan:
# Rule for adding new policy binding while creating the document.
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://contentwarehouse.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/ruleSets \
-d '{
"rules": [
{
"description": "W9: Rule to add new policy binding."
"trigger_type": "ON_CREATE",
"condition": "documentType == \'aca13aa9-6d0d-4b6b-a1eb-315dcb876bd1\' && BUSINESS_NAME == \'Google\'",
"actions": {
"access_control": {
"operation_type": "ADD_POLICY_BINDING",
"policy": {
"bindings": [
{
"role": "roles/contentwarehouse.documentEditor",
"members": ["user:a@example.com", "group:xxx@example.com"]
},
{
"role": "roles/contentwarehouse.documentViewer",
"members": ["user:b@example.com", "group:yyy@example.com"]
}
]
}
}
}
}
]
}'Mengganti binding yang ada
Jika dokumen memenuhi kondisi aturan, ganti binding yang ada untuk menyertakan hanya peran Editor untuk user:a@example.com dan group:xxx@example.com.
REST
Permintaan:
# Rule for replacing existing policy bindings with newly given bindings.
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://contentwarehouse.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/ruleSets \
-d '{
"rules": [
{
"description": "W9: Rule to replace policy binding."
"trigger_type": "ON_CREATE",
"condition": "documentType == \'a9e37d07-9cfa-4b4d-b372-53162e3b8bd9\' && BUSINESS_NAME == \'Google\'",
"actions": {
"access_control": {
"operation_type": "REPLACE_POLICY_BINDING",
"policy": {
"bindings": [
{
"role": "roles/contentwarehouse.documentEditor",
"members": ["user:a@example.com", "group:xxx@example.com"]
}
]
}
}
}
}
]
}'Aturan tambahkan ke folder
Saat folder dibuat atau diperbarui, folder tersebut dapat ditambahkan di folder statis yang telah ditentukan sebelumnya atau folder yang cocok dengan kriteria penelusuran tertentu.
Mengonfigurasi folder statis
Saat DriverLicense baru dibuat, tambahkan DriverLicense tersebut ke folder yang sudah dibuat.
REST
Permintaan:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://contentwarehouse.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/ruleSets \
-d '{
"rules": [
{
"trigger_type": "ON_CREATE",
"condition": "documentType == \'DriverLicense\'",
"actions": {
"add_to_folder": {
"folders": ["projects/821411934445/locations/us/documents/445en119hqp70"]
}
}
}
]
}'Publikasikan ke Pub/Sub
Saat dokumen dibuat atau diperbarui, atau link dibuat atau dihapus, Anda dapat mengirimkan pesan notifikasi ke saluran Pub/Sub.
Langkah-langkah penggunaan
- Buat topik Pub/Sub di project Pelanggan.
- Buat aturan untuk memicu tindakan Pub/Sub publikasi menggunakan permintaan berikut. (Lihat contoh berikut.)
- Panggil Document AI Warehouse API.
- Pastikan bahwa pesan dipublikasikan di saluran Pub/Sub.
Contoh aturan
Saat dokumen ditambahkan di folder (CreateLink API dipanggil), aturan berikut dapat digunakan untuk mengirim pesan notifikasi ke topik Pub/Sub.
REST
Permintaan:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://contentwarehouse.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION/ruleSets \
-d '{
"rules": [
{
"trigger_type": "ON_CREATE_LINK",
"condition": "documentType == \'DriverLicenseFolder\'",
"actions": {
"publish_to_pub_sub": {
"topic_id": "<topic_name>"
"messages": "Added document under a folder."
}
}
}
]
}'Detail aturan
Tindakan ini didukung untuk jenis pemicu berikut:
ON_CRATE: Saat dokumen baru dibuat.ON_UPDATE: Saat dokumen diperbarui.ON_CRATE_LINK: Saat link baru dibuat.ON_DELETE_LINK: Saat link dihapus.
Untuk pemicu Buat dan Perbarui Dokumen, kondisi dapat mencakup atribut dokumen yang sedang dibuat atau diperbarui.
Untuk pemicu Buat dan Hapus Link, kondisi hanya dapat menyertakan atribut dokumen Folder tempat dokumen ditambahkan atau dihapus.
Kolom
messagesdapat digunakan untuk mengirim daftar pesan ke saluran Pub/Sub. Perhatikan bahwa bersama dengan pesan ini, secara default, kolom berikut juga dipublikasikan:- Nama skema, Nama dokumen, Jenis pemicu, Nama RuleSet, ID aturan, ID tindakan.
- Untuk pemicu link Buat dan Hapus, notifikasi menyertakan informasi link relevan yang sedang ditambahkan atau dihapus.