5. Form Özellik Türleri
Formlar <extensionElements> içinde <flowable:formProperty> kullanılarak tanımlanır.
| Tür | HTML Gösterimi | Notlar |
|---|---|---|
string |
Metin girişi (Text input) | Standart metin alanı |
long |
Sayı girişi (Number input) | Tam sayılar için |
double |
Sayı girişi (Number input) | Ondalık sayılar için |
boolean |
Onay Kutusu (Checkbox) | Doğru/yanlış (True/false) değerleri |
date |
Tarih/Saat Seçici | Tarih ve saat seçimi, java.util.Date olarak saklanır |
enum |
Açılır Liste / Radyo Düğmesi | Önceden tanımlanmış seçenekler (Radyo Düğmesi: ≤4 seçenek, Açılır Liste: >4 seçenek) |
Özel Tür İpuçları (Value Niteliği)
Özel gösterimler için <activiti:value id="type" name="..."/> kullanın:
| İpucu | Gösterim Şekli | Kullanım Alanı |
|---|---|---|
textarea |
Çok satırlı metin alanı | Uzun metinler, açıklamalar |
datetime |
Tarih/Saat Seçici | Açık tarih/saat girişi |
file |
Dosya yükleme | Belge ekleme |
label |
Bilgilendirici metin etiketi | Bir değeri giriş alanı olarak değil, biçimlendirilmiş salt okunur (read-only) metin olarak gösterir |
list |
Birden çok salt okunur etiket | Bir JSON dizisi değişkenini N adet ayrı etikete genişletir (bkz. Değişken Toplama (Variable Aggregation)) |
<!-- Textarea example -->
<activiti:formProperty id="description" name="Description" type="string" required="true">
<activiti:value id="type" name="textarea"/>
</activiti:formProperty>
<!-- File upload via type hint -->
<activiti:formProperty id="report_doc" name="Report Document" type="string" required="true">
<activiti:value id="type" name="file"/>
</activiti:formProperty>
Dosya Türü Kısıtlamaları (Accept Niteliği)
accept value niteliğini kullanarak dosya yükleme alanının kabul edeceği dosya türlerini sınırlandırabilirsiniz. Bu, tarayıcıdaki dosya seçiciyi filtreler ve sunucuya gönderildiğinde dosya türünü doğrular.
Eğer accept değeri sağlanmazsa, tüm dosya türleri kabul edilir (varsayılan davranış).
Kullanılabilir Kategoriler
Yaygın dosya türü gruplarına izin vermek için bu kategori adlarını kullanın:
| Kategori | Uzantılar |
|---|---|
documents |
.doc, .docx, .odt |
text |
.txt, .rtf |
pdf |
.pdf |
spreadsheets |
.xls, .xlsx, .ods, .csv |
images |
.jpg, .jpeg, .png, .gif, .webp, .svg, .bmp, .tiff |
presentations |
.ppt, .pptx, .odp |
archives |
.zip, .rar, .7z, .tar, .gz |
audio |
.mp3, .wav, .ogg, .flac, .aac, .m4a, .ac3 |
video |
.mp4, .avi, .mkv, .mov, .webm, .wmv, .mpeg |
Kullanım Örnekleri
<!-- Accept only documents (PDF, Word, etc.) -->
<activiti:formProperty id="report_doc" name="Report Document" type="string" required="true">
<activiti:value id="type" name="file"/>
<activiti:value id="accept" name="documents"/>
</activiti:formProperty>
<!-- Accept documents and images -->
<activiti:formProperty id="attachment" name="Attachment" type="string">
<activiti:value id="type" name="file"/>
<activiti:value id="accept" name="documents,images"/>
</activiti:formProperty>
<!-- Accept only specific extensions -->
<activiti:formProperty id="data_file" name="Data File" type="string" required="true">
<activiti:value id="type" name="file"/>
<activiti:value id="accept" name=".xls,.xlsx,.csv"/>
</activiti:formProperty>
<!-- Mix categories with raw extensions -->
<activiti:formProperty id="mixed" name="Mixed File" type="string">
<activiti:value id="type" name="file"/>
<activiti:value id="accept" name="documents,.csv"/>
</activiti:formProperty>
Not: Tanınmayan bir kategori adı kullanılırsa (örneğin yazım hatası), BPMN Doğrulama Hizmeti yükleme sırasında bir uyarı gösterecek ancak dağıtımı (deployment) engellemeyecektir.
Dinamik Etiketler (Kullanıcı Tarafından Girilen Notların Metin Olarak Gösterilmesi)
label türü ipucunu writable="false" ile birleştirerek, bir süreç değişkenini devre dışı bırakılmış bir giriş alanı yerine düz bilgilendirici metin olarak görüntüleyebilirsiniz. Bu, iş akışındaki önceki bir kullanıcının yazdığı notları, talimatları veya bağlamı göstermek için idealdir.
Nasıl Çalışır:
- Bir görevde, kullanıcı normal bir form alanına metin girer (süreç değişkeni olarak saklanır).
- Sonraki bir görevde, aynı değişken
labeltürü ipucu kullanılarak biçimlendirilmiş bir metin etiketi olarak oluşturulur.
Yalnızca writable="false"dan Farkı:
writable="false", gri renkte, devre dışı bırakılmış bir giriş alanı oluşturur.writable="false"+labeltürü ipucu, form girişlerinden görsel olarak farklı, temiz ve biçimlendirilmiş bir metin oluşturur.
<!-- Task 1: Manager writes a note (normal editable textarea) -->
<userTask id="managerReview" name="Manager Review" flowable:assignee="${manager}">
<extensionElements>
<activiti:formProperty id="managerNote" name="Note for Employee" type="string">
<activiti:value id="type" name="textarea"/>
</activiti:formProperty>
<activiti:formProperty id="decision" name="Decision" type="enum" required="true">
<activiti:value id="approve" name="Approve"/>
<activiti:value id="reject" name="Reject"/>
</activiti:formProperty>
</extensionElements>
</userTask>
<!-- Task 2: Employee sees the manager's note as a label (not an input) -->
<userTask id="notifyEmployee" name="View Result" flowable:assignee="${initiator}">
<extensionElements>
<activiti:formProperty id="managerNote" name="Manager's Note" type="string" writable="false">
<activiti:value id="type" name="label"/>
</activiti:formProperty>
</extensionElements>
</userTask>
İpucu: Form alanı etiketi olarak statik bilgilendirici metin göstermek için
labeltürü ipucunu birdefaultdeğeri (önceki göreve gerek olmadan) ile kullanabilirsiniz:<activiti:formProperty id="info" name="Notice" type="string" writable="false" default="All submissions are final and cannot be changed."> <activiti:value id="type" name="label"/> </activiti:formProperty>
Alan İzinleri ve Görünürlük
Standart BPMN niteliklerini kullanarak alanların formda nasıl görüneceğini kontrol edebilirsiniz:
| Nitelik | Değer | Davranış | Kullanım Alanı |
|---|---|---|---|
| writable | "false" |
Devre Dışı Bırakılmış Giriş (Disabled Input): Alan görünür ancak grileştirilmiştir (salt okunur). | Değiştirilmemesi gereken önceki görevlere ait bağlamı gösterirken. |
| readable | "false" |
Gizli (Hidden): Alan kullanıcı arayüzünden tamamen gizlenmiştir. | Gizli değişkenleri veya doğrulama kurallarını saklarken. |
<!-- Read-Only (Disabled) Field -->
<activiti:formProperty id="originalRequest" name="Original Request" type="string" writable="false"/>
<!-- Hidden Field (e.g., for internal logic) -->
<activiti:formProperty id="internalStatus" name="Status" type="string" readable="false"/>
Görev Belgelendirmesi (Statik Etiketler)
Standart BPMN <documentation> öğesini kullanarak herhangi bir Kullanıcı Görevine statik bilgilendirici metin ekleyebilirsiniz. Bu metin, görev formunun üst kısmında, form alanlarının yukarısında vurgulanmış bir etiket olarak görüntülenir.
- Metin statiktir — BPMN XML'inde tanımlanır ve iş akışının her örneğinde aynı şekilde görünür.
- Her görevin kendi
<documentation>bölümü olabilir, böylece aynı süreçteki farklı görevler farklı talimatlar gösterebilir. - Uzun metinler otomatik olarak alt satıra geçer.
- Hiçbir
<documentation>yoksa, hiçbir şey gösterilmez.
<!-- Task with static instructions -->
<userTask id="reviewTask" name="Review Request" flowable:assignee="${initiator}">
<documentation>Please review all attached documents carefully before making your decision.</documentation>
<extensionElements>
<activiti:formProperty id="decision" name="Decision" type="enum" required="true">
<activiti:value id="approve" name="Approve"/>
<activiti:value id="reject" name="Reject"/>
</activiti:formProperty>
</extensionElements>
</userTask>
<!-- Another task with different instructions -->
<userTask id="uploadTask" name="Upload Documents" flowable:assignee="${initiator}">
<documentation>Upload the signed contract and any supporting documents. Maximum 3 files.</documentation>
<extensionElements>
<activiti:formProperty id="file_contract" name="Contract" type="string" required="true">
<activiti:value id="type" name="file"/>
</activiti:formProperty>
</extensionElements>
</userTask>
Not:
<documentation>, Flowable eklentisi değil, standart bir BPMN 2.0 öğesidir. Doğrudan<userTask>öğesinin içine,<extensionElements>ten önce yerleştirilir.