Ana içeriğe geç

Veri Şablonları

Emakin'deki veri şablonları, veri modellerini metin veya HTML gibi çeşitli çıktı biçimlerine dönüştürür. Bu şablonlar, form denetimleri ve e-posta şablonları dahil olmak üzere farklı Emakin bileşenlerinde kullanılır. Şablonlarda çift küme ayraçları içine yerleştirilmiş XPath sorguları kullanılır {{ ve }}.

Örneğin, veri modelinde "username" adlı bir alan varsa temel bir şablon şöyle olur:

1
Hello {{ username }}!

"username" alanı "Madonna" içeriyorsa oluşturulan çıktı şöyle olur:

1
Hello Madonna!

Tüm XML değerleri doğası gereği dizeler olarak ele alınır; bu nedenle otomatik veri türü biçimlendirmesi yapılmaz. Sayıları veya tarihleri biçimlendirmek için açık tür dönüştürme ya da biçimlendirme işlevleri gerekir.

Kültür Desteği

Veri şablonları kültüre duyarlıdır ve biçimlendirmeyi belirtilen kültüre göre uyarlar. Kültür genellikle kullanıcı tercihlerinden alınır ancak açıkça da ayarlanabilir. Kültür belirtilmezse değişmez kültür kullanılır.

Betiklerde Kültür Belirtme

Aşağıdaki JavaScript örneği, belirli bir kültür ('tr-TR' - Türkçe) kullanılarak biçimlendirme yapılmasını gösterir:

1
2
3
4
5
var myNode = $Xml.Parse("<Customer><Name>John</Name><BirthDate>2014-01-31T09:00:00+02:00</BirthDate></Customer");
var result = myNode.Format('<p>{{Customer/BirthDate}}</p>', {
    Culture: 'tr-TR'
});
// result : <p>31.1.2014 09:00:00 +02:00</p>

Veri Türü Biçimlendirme

Metin Biçimlendirme

Metin veya dize değerleri örtük bir biçimlendirme uygulanmadan oluşturulur.

Sayı Biçimlendirme

"Sum" ve "Count" gibi işlevler sayıları doğrudan döndürürken, açık tür dönüştürme gerektiğinde number() işlevi kullanılabilir. Sayı değerleri varsayılan olarak ondalık kurallara göre biçimlendirilir.

Örnekler:

Şablon Çıktılar Kültür
{{ 12345678912345 }} 12345678912345
{{ 123456.78912345 }} 123456.78912345
{{ number(123456.78912345678912345) }} 123456.789123457
{{ format( number(123456.789) ) }} 123456.789
{{ format( number(123456789) ) }} 123456789
{{ format( number(123456789), 'n') }} 123,456,789.00
{{ format( number(123456789), 'n') }} 123.456.789,00 tr-TR
{{ format( number(123456789), 'n0') }} 123,456,789
{{ format(number(123456789), 'c') }} 123.456.789,00 ₺ tr-TR

Tarih Biçimlendirme

Şablon sistemi, "YYYY-MM-DDTHH:MM:SSTZ" biçiminde biçimlendirilmiş XML tarih türlerini otomatik olarak tanır. Emakin, veri modelindeki tarih değerleri için bu biçimi tutarlı olarak kullanır. Diğer biçimlerdeki tarihler dize olarak ele alınır.

Örnekler ( MyDate 'in içerdiği varsayıldığında: 2014-01-31T09:00:00+02:00):

Şablon Çıktılar Kültür
{{ MyDate }} 01/31/2014 16:04:12 +02:00
{{ format(MyDate,'dd/MM/yyyy') }} 31/01/2014
{{ format(MyDate) }} 31.1.2014 09:00 tr-TR
{{ format(MyDate,'d') }} 31/01/2014
{{ format(MyDate,'D') }} 15 Haziran 2009 Pazartesi en-US
{{ format(MyDate,'o') }} <br>2014-01-31T09:00:00+02:00<br>

Betik örneği

1
2
3
4
var myNode = $Xml.Parse("<Customer><Name>John</Name><BirthDate>2014-01-31T09:00:00+02:00</BirthDate></Customer");
var result = myNode.Format('<p>Birth date : {{Customer/BirthDate}}</p>');

// result : <p>Birth date : 01/31/2014 09:00:00 +02:00</p>

Betik örneği

Tarih düğümünden saati kaldırmanın bir yolu:

1
2
3
4
$Xml.SetValue('Test/testdate', new DateTimeOffset());  // testdate will be saved to an XML as "2015-11-12T15:27:16.2568549+02:00"
$Xml.SetValue('Test/testdate2', $Xml.Format("{{ format(Test/testdate,'yyyy-MM-dd') }}"));  // testdate2 will be saved to an XML as "2015-12-11"

// result : 2015-12-11

format() İşlev Seçenekleri

İlgili format() işlevi, çıktıyı özelleştirmek için çeşitli seçenekler sunar. Ayrıntılar için aşağıdaki tabloya bakın. Kullanılabilir seçeneklerin ve davranışlarının veri türüne göre değişebileceğini unutmayın.

Veri Türü Biçim Seçeneği Açıklama Örnek Veri Çıktı
Dize Dizeyi otomatik algılamayla yazdır <script>alert('hello')</script><div>hello</div> <div>hello</div>
Dize Dizeyi otomatik algılamayla yazdır 12.345 12.3
Dize Dizeyi otomatik algılamayla yazdır 12 12
Dize Dizeyi otomatik algılamayla yazdır 2022-05-07T00:00:00+03:00 07.05.2022 00:00
Dize Dizeyi otomatik algılamayla yazdır Doğru / true ✓ (U+2713)
Dize Dizeyi otomatik algılamayla yazdır Yanlış / false ✕ (U+2715)
Dize html Dizeyi kodlanmış HTML metni olarak yazdır <script>alert('hello')</script><div>hello</div> <script>alert('hello')</script><div>hello</div>
Dize safe Tehlikeli etiketleri çıkararak değeri güvenli HTML olarak yazdır <script>alert('hello')</script><div>hello</div> <div>hello</div>
Dize dize Dizeyi herhangi bir kodlama uygulamadan yazdır <script>alert('hello')</script><div>hello</div> <script>alert('hello')</script><div>hello</div>
Sayı n0 Sayıyı ondalık basamak olmadan tam sayı olarak yazdır 12.345 12
Sayı n1 Sayıyı noktadan sonra 1 basamak olacak şekilde ondalık olarak yazdırır 12.345 12.3
Boole Değeri Unicode onay işareti olarak yazdırır Doğru / true ✓ (U+2713)
Boole Değeri Unicode onay işareti olarak yazdırır Yanlış / false ✕ (U+2715)
DateTime Tarih değerini kullanıcının yerel ayar tercihine göre yazdırır 2022-05-07T00:00:00+03:00 07.05.2022 00:00
DateTime o Tarihi ISO biçiminde yazdırır 2022-05-07T00:00:00+03:00 2022-05-07T00:00:00+03:00
DateTime m Tarihi dinamik biçimde biçimlendirerek yazdırır 2022-05-07T00:00:00+03:00 2 gün önce
DateTime dd/MM/yyyy Tarihi belirtilen tarih biçiminde yazdırır 2022-05-07T00:00:00+03:00 07/05/2022

Koşullu Biçimlendirme

Koşullu işleme aşağıdaki söz dizimi kullanılarak gerçekleştirilir:

1
2
if XPathCondition then Template
if XPathCondition then Template else Template

Örnek:

Temel kullanım

1
{{ if Customer/Type = 'A' then <div>Important !</div> }}>

else yan tümcesiyle temel kullanım

1
{{ if Customer/Type = 'A' then <div>Important !</div> else <div>{{Customer/Name}}</div> }}>

Yinelenen Şablonlar

Bir şablonu birden çok düğüme uygulamak için şu söz dizimini kullanın:

1
ItemXPath => Template

Bu işlem, eşleşen her öğe üzerinde yinelenir ItemXPath ve şablonu uygular.

Örnek:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{{ SAMPLE REPORT
<h1>{{Customer/Name}}</h1>
<table>
    {{ Rows/Row =>
    <tr>
        <td>{{Date}}</td>
        <td>{{Description}}</td>
    </tr>
    }}
</table> }}

Aşağıdaki çıktıyı oluşturur:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
SAMPLE REPORT
<h1>John</h1>
<table>
    <tr>
        <td>2010-01-01</td>
        <td>description</td>
    </tr>
    <tr>
        <td>2015-01-01</td>
        <td>other description</td>
    </tr>
</table>

Öznitelikle Yineleme

Öznitelik x-repeat şablonları yinelemek için kullanılan => söz dizimine alternatif sunar. Özellikle, söz diziminin etiketlerin bozulmasına yol açabileceği HTML oluşturma işlemlerinde kullanışlıdır. Örneğin: =>

1
2
3
4
5
6
7
{{ SAMPLE REPORT
<table>
    <tr x-repeat="Rows/Row">
        <td>{{Date}}</td>
        <td>{{Description}}</td>
    </tr>
</table> }}

Bu öznitelik herhangi bir öğeyle kullanılabilir. Örneğin, "li" etiketiyle de kullanılabilir.

1
2
3
4
5
6
{{
<ul>
    <li x-repeat="Rows/Row">
        <span>{{Date}}</span>
    </li>
</ul> }}

Özyinelemeli Yineleme Şablonları

Özyinelemeli yineleme için şu söz dizimini kullanın:

1
ItemXPath =>> Template

Şablon, her yinelemenin sonuçlarına özyinelemeli olarak uygulanır.

Örnek:

1
2
3
4
5
{{ <h1>SAMPLE REPORT</h1>
{{ Sections/Section =>>
<h2>{{Name}}</h2>
<p>{{Body}}</p>  }}
}}

sonuç:

1
2
3
4
5
<h1>SAMPLE REPORT</h1>
<h2>My Section</h2>
<p>Section content</p>
<h2>Sub Section</h2>
<p>Child section content</p>

Şablon Değişkenleri

Şablonlarda hem özel süreç değişkenleri hem de sistem özellikleri kullanılabilir. İstemci tarafı ve sunucu tarafı betiklerinin değişken bağlamları farklıdır.

İstemci Tarafı Şablon Değişkenleri

İstemci tarafı betiklerde (ör. form betiklerinde) kullanılabilir:

Değişken Adı Açıklama
$staticUrl Statik kaynaklar için temel URL. Statik kaynakların temel adresi. (ör.: https://static.emakin.com/ )
$applicationUrl Uygulamanın temel URL'si. (ör.: https://mydomain.emakin.com/app/ )
$Process Geçerli sürecin benzersiz kimliği
$FolderName Süreci içeren dizinin adı
$CustomVariable Süreç içinde tanımlanan özel değişkenler

Sunucu Tarafı Şablon Değişkenleri

Sunucu tarafı betiklerde (ör., pre/post-work betiklerinde) kullanılabilir:

Değişken Adı Açıklama
$ApplicationName Bir uygulamanın adı. (ör. emakin.com )
$ApplicationUrl Uygulamanın temel URL'si
$Domain.Name Alanadının adı
$Domain.Url Alanadının URL'si
$Domain.LogoUrl Alanadı logosunun URL'si
$CustomVariable Süreç içinde tanımlanan özel değişkenler

Şablon Değişkenleri için Özel Bağlamlar

Aktivite Bildirimleri: Aktivite bildirimlerinde, sunucu tarafı değişkenlerine ek olarak şunlar kullanılır:

Değişken Adı Açıklama
$Id Bir iş adımının kimlik numarası
$WorkItem WorkItem nesnesi (özelliklere nokta gösterimiyle erişin, ör., $WorkItem.Instance.Number)
$Recipients Virgülle ayrılmış alıcı adları
$Url Bir iş adımının URL'si. (ör.: https://mydomain.emakin.com/app/?/workitem=1234 )
$AssignedTo Atanmış kullanıcıların virgülle ayrılmış kullanıcı adları

Kullanıcı Kaydı: Kullanıcı kaydı şablonlarında, sunucu tarafı değişkenlerine ek olarak şunlar kullanılır:

Değişken Adı Açıklama
$Ticket Kimlik doğrulama belirteci
$DisplayName Kullanıcının görünen adı