Halaman ini memberikan ringkasan singkat tentang folder dan menjelaskan cara mengelola dokumen menggunakan folder.
Mesin Kebijakan dan aturan
Di Document Warehouse, Mesin Kebijakan 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 menjadi satu RuleSet. Pelanggan dapat menentukan beberapa RuleSet.
Aturan berguna untuk memicu tindakan yang telah ditentukan secara otomatis, saat membuat atau memperbarui dokumen.
Aturan terdiri dari tiga hal utama:
- TriggerType: Peristiwa yang memicu pemeriksaan aturan. Buat dan Perbarui 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: Kumpulan 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 diperbarui) di folder tertentu. Folder tersebut dapat ditentukan 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 (grup dan binding 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 RuleSet
Document Warehouse menyediakan API untuk mengelola RuleSet (Buat, Dapatkan, Perbarui, Hapus, Cantumkan). Bagian ini memberikan contoh untuk mengonfigurasi berbagai jenis aturan.
Membuat RuleSet
Untuk membuat kumpulan 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 Document AI Warehouse Python API dokumentasi referensi.
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 Document AI Warehouse Java API dokumentasi referensi.
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 kumpulan 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 kumpulan aturan menggunakan nama kumpulan 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 kumpulan aturan menggunakan nama kumpulan 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
A 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 numerik
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). Kolom 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 menyertakan 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 apakah nilai properti status yang ada adalahTXdan nilai baru yang diberikan adalahCA.
Penanganan kolom tanggal
Untuk Dokumen DriverLicense, 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 dalam 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:
- Periksa apakah
NAME(kolom teks) tidak kosong. Periksa apakah
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
Saat dokumen memenuhi kondisi aturan:
- Menambahkan peran Editor untuk
user:a@example.comdangroup:xxx@example.com Menambahkan peran Viewer 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
Saat dokumen memenuhi kondisi aturan, ganti binding yang ada agar hanya menyertakan 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 dibuat atau diperbarui, folder dapat ditambahkan di folder statis yang telah ditentukan atau folder yang cocok dengan kriteria penelusuran tertentu.
Mengonfigurasi folder statis
Saat DriverLicense baru dibuat, tambahkan di 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 mengirim pesan notifikasi ke saluran Pub/Sub.
Langkah-langkah penggunaan
- Buat topik Pub/Sub di project Pelanggan.
- Buat aturan untuk memicu tindakan publikasikan Pub/Sub menggunakan permintaan berikut. (Lihat contoh berikut.)
- Panggil Document AI Warehouse API.
- Pastikan 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 menyertakan atribut dokumen yang 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 selain pesan ini, secara default, kolom berikut juga dipublikasikan:- Nama skema, Nama dokumen, Jenis pemicu, Nama RuleSet, ID Aturan, ID Tindakan.
- Untuk pemicu Buat dan Hapus link, notifikasi menyertakan informasi link relevan yang ditambahkan atau dihapus.