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:

  1. Bir görevde, kullanıcı normal bir form alanına metin girer (süreç değişkeni olarak saklanır).
  2. Sonraki bir görevde, aynı değişken label tü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" + label tü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 label türü ipucunu bir default değ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.