Gelen kutusu ve insan görevleri {#inbox-and-human-tasks}
Bazı adımlar bir insana ihtiyaç duyar: ai komutunun okuduğu bir faturayı kontrol etmek, limitin üzerindeki bir siparişi onaylamak, hiçbir sistemde olmayan bir değeri doldurmak. Bir görev bunu humantask komutuyla ister: web uygulamasının Inbox sayfasında bir form belirir, istenirse bir dosyanın (fatura PDF'i, taranmış bir resim) yanında. Kişi değerleri kontrol eder veya düzeltir ve Approve ya da Reject gibi bir düğmeye basar; görev, girilen değerlerle ve basılan düğmeyle devam eder.
Gelen kutusu
Inbox her rol için kenar çubuğundadır. Rozeti, tamamlayabileceğiniz açık görevleri sayar.
- Open, sizi bekleyen görevleri en eskiden başlayarak listeler: başlık, isteyen görev, kimin için olduğu, ne zamandan beri beklediği ve ne zaman süresinin dolacağı (bir saatten az kaldıysa kırmızı).
- Done, son tamamlanan, iptal edilen ve süresi dolan görevleri; basılan düğme, kimin bastığı ve ne zaman olduğuyla listeler.
Açmak için bir göreve tıklayın. Form solda, dosya sağdadır: PDF'ler ve resimler gösterilir, metin dosyaları metin olarak, diğer dosyalar indirilebilir. * ile işaretli alanlar zorunludur; gri alanları görev doldurmuştur ve değiştirilemez. Alttaki düğmeler görevi tamamlar; ilk düğme vurgulanır, Reject gibi düğmeler kırmızıdır.
Bir görev bir kez tamamlanır: iki kişi aynı anda açarsa ikincisi Someone else completed this task a moment ago mesajını alır.
Görevi kimler görür
Görev, kimin tamamlayabileceğini --assignee ile belirtir: kullanıcı adları ve rol adları, virgülle ayrılmış. Kimseyi belirtmeyen bir görev herkes içindir; bir rolü belirten görev, rolleri arasında o rol bulunan herkes içindir. Admin rolünün üyeleri her görevi görür. Başkaları için olan bir görev Inbox'ınızda görünmez; adresiyle açmaya çalışırsanız not found yanıtı alırsınız.
Görevde kullanım
ai --action:extract --file:$pdf$ --fields:"InvoiceNo, Supplier, Total:number, Date:date" --output:invoice
humantask --action:ask --title:"Check invoice $invoice.InvoiceNo$" --fields:"InvoiceNo, Supplier, Total:number, Date:date, Category:choice(Office|Travel|IT), Note:multiline" --values:$invoice$ --readonly:"InvoiceNo, Supplier" --required:"Total, Category" --outcomes:"Approve, Reject" --assignee:"User" --file:$pdf$ --timeout:1440 --output:review
if --condition:"$review.Outcome$ = `"Approve`""
log --message:"Approved by $review.CompletedBy$: $review.Total$ ($review.Category$)"
endif
Form
Düzenleyicide Fields bir listedir: bir alan ekleyin, ona bir ad ve tür verin (seçim listesi seçeneklerini etiket olarak alır), Zorunlu veya Salt okunur kutusunu işaretleyin; her satır, değerin daha sonra nasıl okunacağını gösterir ($review.Total$). Düğmeler ve Kimler tamamlayabilir de aynı şekilde seçilir (roller, yöneticiler için kullanıcılar). Liste --fields, --required ve --readonly parametrelerini yazar; Metin olarak düzenle bunları yazıldığı haliyle gösterir.
--fields, alanları Ad[:tür] biçiminde, virgülle ayrılmış olarak listeler:
| Tür | Gösterim | Sonuçta |
|---|---|---|
text (varsayılan) |
tek satır metin | metin |
multiline |
çok satırlı metin alanı | metin |
number |
sayı alanı | sayı |
date |
tarih seçici | tarih |
boolean |
anahtar | true / false |
choice(A|B|C) |
bu seçeneklerle bir liste | seçilen seçenek |
Alan adları harf, rakam ve _ içerir; böylece $review.Ad$ olarak okunabilirler. Outcome, CompletedBy, CompletedAt, TaskId ve TaskStatus sonuca aittir ve alan adı olamaz.
| Parametre | Anlamı |
|---|---|
--title |
Kişiden ne istendiği; listede ve formun üstünde gösterilir. |
--description |
Formun üstündeki açıklama. |
--values |
Başlangıç değerleri: $invoice$ gibi bir kayıt (alan adları büyük/küçük harf duyarsız eşleşir; diğer anahtarlar yok sayılır). |
--required |
Herhangi bir düğme çalışmadan önce doldurulması gereken alanlar. |
--readonly |
Gösterilen ama değiştirilemeyen alanlar; görevin değerlerini korurlar. |
--outcomes |
Düğmeler, varsayılan Done. |
--assignee |
Tamamlayabilecek kullanıcı adları ve roller; boşsa herkes. |
--file |
Formun yanında gösterilen, ajan makinesindeki bir dosya (10 MB'a kadar). |
--timeout |
Dakika. ask: çalıştırmanın ne kadar bekleyeceği; sonra görevin süresi dolar ve komut hata verir. create: görevin süresinin ne zaman dolacağı. 0 (varsayılan): sınır yok. |
Beklemek ya da beklememek
| Eylem | Ne yapar |
|---|---|
ask |
Görevi oluşturur ve biri tamamlayana kadar bekler; --output sonucu alır. Çalıştırma önce biterse (iptal, hata) görev Inbox'tan kalkar. |
create |
Görevi oluşturur ve devam eder; --output kimliğini alır. Görev, çalıştırma bittikten sonra da Inbox'ta kalır. |
wait --id |
create ile oluşturulan bir görevi bekler. |
get --id |
Görevi hemen okur: $state.TaskStatus$ Open, Completed, Cancelled veya Expired'dır. |
cancel --id |
Açık bir görevi Inbox'tan kaldırır. |
create ile bir görev Inbox'a aynı anda birçok form koyabilir (örneğin bir kuyruğun her faturası için bir form) ve yanıtları daha sonra wait ile toplayabilir; ya da başka bir çalıştırma onları get ile okuyabilir.
Bir çalıştırma beklerken ajanı meşguldür: başka görev çalıştırmaz. Saatler sürebilecek kararlar için create ve daha sonraki bir çalıştırmayı tercih edin.
Sonuç
Sonuç kaydı her alanı (kişinin bıraktığı haliyle) ve ayrıca şunları içerir:
| Alan | Anlamı |
|---|---|
Outcome |
Basılan düğme. |
CompletedBy |
Düğmeye basan kullanıcı. |
CompletedAt |
Ne zaman. |
TaskId, TaskStatus |
Görevin kimliği ve durumu. |
Biri tamamlamadan iptal edilen veya süresi dolan bir görev, ask ve wait komutlarının, görevin yakalayabileceği bir hatayla başarısız olmasına yol açar.
Güvenlik
Bir görevin tamamlanması, basılan düğme ve alan adlarıyla (değerler hiçbir zaman değil) denetim kaydına (HUMAN_TASK_COMPLETE) işlenir. Dosyalar korumalı bir alanda gösterilir: bir dosya web uygulamasında betik çalıştıramaz.