Otomasyon kurallarının ifadeleri, değerleri ve operatörleri
Bu bölüm, otomasyon kurallarında ifadelerin kullanımına ilişkin açıklamaları içerir: hangi ifadeler, değerler (değişkenler) ve operatörler vardır ve bunlar kural oluşturulurken sistemde nasıl uygulanır. Kurallarda kullanılmak üzere birçok değer ve operatör mevcuttur. İfadeler türlerine göre gruplandırılmış ve aşağıda kullanım örnekleriyle birlikte verilmiştir.
Terminoloji
Otomasyon kuralları bağlamında, farklı yorumlara sahip olan aşağıdaki terimler kullanılır:
İfade - bir değer(ler) ve bir operatör(ler) içeren yapı.
Değer (değişken) - belirli bir değer (sayılar, metin, mantıksal değerler, tarihler vb.).
Operatör - bir eylemdir. Operatör bir komut belirler veya koşulları birbirine bağlar: değerlerle tam olarak ne yapılması gerektiğini belirtir.
Örnek: some_expression: a + 3, burada some_expression ifadenin adıdır, a + 3 doğrudan ifadedir, a ve 3 değerlerdir (veya değişkenlerdir), + ise operatördür.
Temel prensipler
Lütfen dikkat edin: ifadeler, daha sonra otomasyon kuralının koşulunda ve eylemlerinde kullanılan değerleri hesaplar. İfade bloğunun her satırının bir adı ve bir formülü vardır: isim: ifade (yukarıdaki örnekte olduğu gibi: some_expression: a + 3). İsim, kuralın değeri (değişkeni) haline gelir ve daha sonra koşullarda, eylemlerde ve sonraki ifadelerde kullanılabilir.
İfade şu formatta yazılır:
ifade_adı: değer
İfade adı Latin harfleri, rakamlar ve alt çizgilerden oluşur. Değer olarak şunlar kullanılabilir:
- alana veya ilişkili kayda bağlantı:
requested_by,requested_by.manager,requests[first]; _wasekiyle alanın önceki değeri:status_was,team_was,custom_fields_was.priority;- tek veya çift tırnak içinde bir satır;
- sayı:
10,3.5; - statik değer:
accepted,incident,high; - kullanıcı alanı değeri:
custom_fields.priority; - bulunan kayıt:
find(person, "ivan@example.com"); - bulunan birkaç kayıt:
find_all(ci, "server"); - tam metin arama sonucu:
search(req, "printer"); - yeni oluşturulan kayıt:
new(task)veyanew(task, template_name); - karşılaştırma, formül, üçlü operatör veya fonksiyon.
! işareti` bir değere referans vermeden önce, eğer mantıksal bir yorumlama destekliyorsa, mantıksal değeri ters çevirir. Dizeler ve mantıksal olmayan diğer değerler için, bu, değeri bir metin işlemine dönüştürmez, ancak mantıksal bir negatif olarak kullanılır.
Eğer isim mevcut kaydın alanları, daha önce hesaplanmış ifadeler, önceden tanımlanmış değerler ve sayılar arasında bulunamazsa, sistem onu statik bir dize olarak değerlendirir. Bu nedenle, önceden belirlenmiş değerlerin sabit kümeleri genellikle tırnak işaretleri olmadan yazılır: status = completed.
İfade adları, ayrılmış kelimelerle ve iç bağlam anahtarlarıyla çakışamaz. Bir ifadeye index, errors veya safe_attachments adı verilemez; ayrıca, koşul dili tarafından kullanılan önceden tanımlanmış değerler ve adlar da ayrılmıştır.
Temel prensipler - tür dönüşümleri ve boş değerler
Sistem, kullanıcının türleri açıkça belirtmesini gerektirmez. Hesaplama sırasında değerleri gerekli biçime dönüştürür:
mantıksal değer: herhangi bir boş olmayan değer doğru olarak kabul edilir;
satır: kayıtlar konu, isim veya görüntülenen isim üzerinden görüntülenir, 100 öğeye kadar olan diziler virgülle birleştirilir, büyük diziler eleman sayısı olarak gösterilir;
sayı: sayısal dizeler, sayılar, diziler ve kayıtlar dahili kurallara göre sayıya dönüştürülür;
tarih/saat: ISO8601 standardında tarihler ve saatler ile tarih/saati destekleyen nesneler tanınır;
dizi: normal diziler, ActiveRecord mimari şablonu (pattern) bağlantıları ve gecikmeli ilişkiler desteklenir.
Boş bir değer genellikle daha fazla hesaplamayı durdurur ve boş bir sonuç verir. İstisnalar belirtilmiştir: örneğin, empty? ve blank? boş bir değerde "doğru" değerini döndürür.
Önceden tanımlanmış değerler
Lütfen dikkat: eğer isim mevcut kaydın bir alanı olarak veya daha önce hesaplanmış bir ifade olarak bulunamazsa, sistem önceden tanımlanmış değerler kümesini kontrol eder.
| Anlamı | Sonuç | Amaç |
|---|---|---|
now |
geçerli tarih ve saat | geçerli ana göre hesaplamalar için kullanılır |
today |
geçerli tarih | geçerli güne göre hesaplamalar için kullanılır |
true |
temel mantıksal değer true |
doğruluk sabiti |
false |
temel mantıksal değer false |
yanlış sabiti |
empty |
özel boş dize | bir değeri boş dizeyle karşılaştırmak için kullanılır |
nil |
boş sonuç (sıfır) | eksik bir değerin sabiti |
null |
boş sonuç (sıfır) | alternatif nil |
updated_by |
değişikliği gerçekleştiren kişi | bu otomasyon kuralının ait olduğu kaydı güncelleyerek otomasyon kuralının yürütülmesini başlatan kişi) / değişikliğin kaydedilmiş bağlamından, mevcut kullanıcı oturumundan veya doğrulama modundan alınır |
triggered_at |
UTC'de tetiklenme zamanı | kuralın yürütme bağlamından alınır; eğer yoksa, geçerli an kullanılır |
rule_account |
kural alanı | otomasyon kuralının tanımlandığı alan (kuralın ait olduğu alan) |
rule_app_instance |
kurulu uygulama kuralları | kuralın geldiği uygulama (varsa) |
related_note |
`ilgili yorum (otomasyon kuralının uygulandığı anda oluşturulmuş) | yorum eklenmesiyle ilişkili tetikleyiciler için kullanılabilir; yorum oluşturulmadıysa değer boştur; «Yorum eklendiğinde» tetikleyicisini kullanırken, otomasyondan sorumlu kullanıcının yorumu okuma hakları varsa bu değer her zaman mevcuttur |
related_internal_note |
ilgili dahili yorum (otomasyon kuralının yürütüldüğü anda oluşturulan dahili yorum) | dahili yorum eklenmesiyle ilgili tetikleyiciler için kullanılabilir; eğer yorum oluşturulmamışsa, değer boştur |
Önemli: İfadenin üst seviyesinde, daha önce hesaplanmış bir ifadenin adı, geçerli kaydın alanına göre önceliklidir. Dizi fonksiyonlarının içinde, geçerli nesnenin bir dizi elemanı olduğu durumlarda, eleman alanları üst seviye ifadenin adından önce okunur.
Alanın önceki değerleri
Alan tanımlayıcısı, bu alanın değerini bulmak için kullanılabilir. Örneğin, iş akışının "Konu" alanının geçerli değerini almak için aşağıdaki ifadeyi kullanabilirsiniz:
- workflow.subject
Ancak, kayıt alanının önceki değerini, yani kaydın kaydedilmesinden ve otomasyon kuralının tetiklenmesinden önce alanın sahip olduğu değeri de bulmak mümkündür.
Bu, alan tanımlayıcısından sonra _was eklenerek yapılır. Örneğin, iş akışındaki "Konu" alanı için ifade şu şekilde görünür:
- workflow.subject_was
_was eki, kuralın tetiklendiği andaki alan değerine atıfta bulunur.
Önceki değerler yalnızca kuralı tetikleyen kayıt için kullanılabilir. Dizi filtresinin içinde, bunlar dizi elemanına ait değildir; şablon kontrol modunda, *_was üst seviye dışında kullanıldığında sistem bir hata ekler.
| Sözdizimi | Sonuç | Amaç |
|---|---|---|
field_was |
alanın önceki değeri | kaydın eski ve yeni durumunu karşılaştırmak için kullanılır |
custom_fields_was.kod |
özel alanın önceki değeri | kullanıcı alanlarındaki değişiklikleri kontrol etmek için kullanılır |
custom_data_was.kod |
kullanıcı alanının önceki değeri | kullanıcı verileri için tarihsel kayıt seçeneği |
Mantıksal operatörler
Şunlar için kullanılır:
A değeri veya B değeri
A değeri ve B değeri
| İfade örnekleri | Sonuç |
|---|---|
| a or b (örneğin, eğer a doğruysa, o zaman b ya doğrudur ya da yanlıştır) | doğru (true) |
| a or b (örneğin, eğer b doğruysa, o zaman a ya doğrudur ya da yanlıştır) | doğru (true) |
| a or b (örneğin, a yanlış ve b yanlış) | yanlış (false) |
| a and b (örneğin, a doğru ve b doğru) | doğru (true) |
| a and b (örneğin, a yanlıştır ve/veya b yanlıştır) | yanlış (false) |
İfade Biçimleri: Karşılaştırma - Eşitlik
İçin kullanılır:
değer-A = değer-B
değer-A != değer-B
| Sözdizimi | Argümanlar | Sonuç | Amaç |
|---|---|---|---|
sol = sağ |
iki değer | doğru veya yanlış | eşitliği kontrol eder |
sol != sağ |
iki değer | doğru veya yanlış | eşitsizliği kontrol eder |
sol < sağ |
iki değer | doğru veya yanlış | soldaki değerin sağdakinden küçük olup olmadığını kontrol eder |
soldaki <= sağdaki |
iki değer | doğru veya yanlış | soldaki değerin sağdakinden küçük veya ona eşit olup olmadığını kontrol eder |
soldaki > sağdaki |
iki değer | doğru veya yanlış | soldaki değerin sağdakinden büyük olup olmadığını kontrol eder |
sol >= sağ |
iki değer | doğru veya yanlış | sol değerin sağ değere eşit veya daha büyük olup olmadığını kontrol eder |
sol contains sağ |
iki değer | doğru veya yanlış | değerin dahil olup olmadığını kontrol eder |
sol *= sağ |
iki değer | doğru veya yanlış | alternatif olarak contains işlemi |
sol starts_with sağ |
iki değer | doğru veya yanlış | bir dizenin veya değerin başlangıcını kontrol eder |
sol ^= sağ |
iki değer | doğru veya yanlış | alternatif olarak starts_with işlemi |
sol ends_with sağ |
iki değer | doğru veya yanlış | bir dizenin veya değerin sonunu kontrol eder |
sol $= sağ |
iki değer | doğru veya yanlış | alternatif olarak ends_with işlemi |
sol is_blank |
tek değer | doğru veya yanlış | boş değeri kontrol eder |
sol is_present |
tek değer | doğru veya yanlış | boş olmayan değeri kontrol eder |
sol in [değer1, değer2] |
değer ve dizi | doğru veya yanlış | değerin diziye dahil olup olmadığını kontrol eder |
sol not_in [değer1, değer2] |
değer ve dizi | doğru veya yanlış | değerin diziye dahil olmadığını kontrol eder |
in ve not_in içindeki dizi köşeli parantez içinde yazılır. Dizi elemanları dizeler, değerlere referanslar veya diğer basit değişkenler olabilir.
Karşılaştırmalar değerleri karşılaştırılabilir bir biçime getirir. Tarihler tarih olarak, sayılar sayı olarak, sabit değer kümeleri kendi kümeleri içindeki konumlarına göre, diğer değerler ise dizeler olarak karşılaştırılır. contains için dizi, elemanların dize gösterimlerinin bir kümesi olarak kontrol edilir; starts_with ve ends_with için ise sırasıyla ilk veya son eleman kontrol edilir.
Dizilerde boş bir dizi [] desteklenir. Geriye dönük uyumluluk için, dizi elemanlarında boşluk içeren bazı tırnaksız dize değerlerine de izin verilir, ancak yeni kurallar için dizeleri tırnak içinde yazmak daha iyidir.
| Örnek ifadeler | Sonuç |
|---|---|
| 'text' = 'text' | doğru (true) |
| 'text' != 'text' | yanlış (false) |
| '' = 'text' | yalan (false) |
| 'text' = "" | yalan (false) |
| '' = "" | doğru (true) |
| "a\"b" = 'a"b' | doğru (true) |
| 'a\'b' = "a'b" | doğru (true) |
| status = in_progress | doğru (true) |
| status = assigned | yanlış (false) |
| team = 'Database Administration' | doğru (true) |
| team = 9 | yalan (false) |
| team.id = 9 | doğru (true) |
| team.id = 12 | yalan (false) |
Karşılaştırma - Daha Az, Daha Fazla (örnekler)
Kullanıldığı durumlar:
değer-A < değer-B
değer-A <= değer-B
değer-A > değer-B
değer-A >= değer-B
| Örnek ifadeler | Sonuç |
|---|---|
| ‘a’ < ‘a’ | yalan (false) |
| ‘a’ <= ‘a’ | doğru (true) |
| ‘a’ > ‘a’ | yalan (false) |
| ‘a’ >= ‘a’ | doğru (true) |
| ‘a’ < ‘b’ | doğru (true) |
| ‘b’ > ‘a’ | doğru (true) |
| ‘a’ > ‘b’ | yanlış (false) |
| ‘’ < ’text’ | doğru (true) |
| ‘text’ > ’’ | doğru (true) |
| status < completed | doğru (true) |
| status < registered | yanlış (false) |
| completed < status | yanlış (false) |
| registered < status | doğru (true) |
| team < ‘Application Development’ | yanlış (false) |
| team < ‘Service Desk’ | doğru (true) |
| ‘Application Development’ < team | doğru (true) |
| ‘Service Desk’ < team | yalan (false) |
| team.id < 100 | doğru (true) |
| team.id < 1 | yanlış (false) |
| 100 < team.id | yanlış (false) |
| 1 < team.id | doğru (true) |
Karşılaştırma - İçerir (örnekler)
Kullanılır:
dizideki değer
dizide olmayan değer
| Örnek ifadeler | Sonuç |
|---|---|
| a in [a,b] | doğru (true) |
| a not_in [a,b] | yanlış (false) |
| b in [a,b] | doğru (true) |
| c in [a,b] | yalan (false) |
| ab in [a,b] | yalan (false) |
| ab in [] | yalan (false) |
| ’’ in [] | doğru (true) |
| ’’ in [a,b] | yanlış (false) |
| ’’ in [a,,b] | doğru (true) |
| a in [ a , b ] | doğru (true) |
| status in [in_progress] | doğru (true) |
| status in [assigned, accepted, in_progress, waiting_for_customer] | doğru (true) |
| status in [assigned,completed] | yanlış (false) |
| team in [Application Development,Database Administration,Service Desk] | doğru (true) |
| team in [Application Development,Service Desk] | yalan (false) |
| team.id in [8,9,10] | doğru (true) |
| team.id in [11,12,13] | yanlış (false) |
| 11.0 in [11,12,13] | doğru (true) |
| 11 in [11.0,12.0,13.0] | doğru (true) |
| team.id in [8.0,9.0,10.0] | doğru (true) |
| team.id in [8.1,9.1,10.1] | yanlış (false) |
Karşılaştırma - Benzer şekilde (örnekler)
Kullanılan operatörler:
* operatörü ‘contains’
^ operatörü ‘starts_with’
$ operatörü ‘ends_with’
| İfade örnekleri | Sonuç |
|---|---|
‘ivan.ivanov@proproduct.ru’ *= ‘ivanov’ |
(true) |
‘ivan.ivanov@proproduct.ru’ ^= ‘ivanov’ |
(false) |
‘ivan.ivanov@proproduct.ru’ *= ‘ivan’ |
(true) |
‘ivan.ivanov@proproduct.ru’ ^= ‘ivan’ |
(true) |
‘ivan.ivanov@proproduct.ru’ $= ‘ivan’ |
(false) |
‘ivan.ivanov@proproduct.ru’ $= ‘proproduct’ |
(false) |
‘ivan.ivanov@proproduct.ru’ $= ‘proproduct.ru’ |
(true) |
Karşılaştırma - Varlık (örnekler)
Kullanıldığı durumlar:
değer boş
değer mevcut
| İfade örnekleri | Sonuç |
|---|---|
| team.name is_blank | (false) (takım adı zorunludur, çünkü bir değer içermelidir) |
| request.custom_fields.my_date is_present | (true), eğer UI genişletme alanı "my_date" tanımlanmışsa ve boş olmayan bir değer içeriyorsa, (false) aksi takdirde |
Formüller
Kullanılan operatörler:
+ ‘toplama’ veya ‘birleştirme’ operatörü
- ‘çıkarma’ operatörü
* ‘çarpma’ operatörü
/ bölme operatörü"
% modül çarpma operatörü"
Lütfen dikkat edin, + işareti, solundaki değer bir metin dizesi ise "birleştirme" operatörü olarak işlev görür. Aksi takdirde, "toplama" operatörü gibi davranır.
| Sözdizimi | Argümanlar | Sonuç | Amaç |
|---|---|---|---|
sol + sağ |
iki değer | sayı, dize, tarih/saat, süre veya dizi | sayıları toplar, dizeleri birleştirir, tarih/saate saniye veya süre ekler, uyumlu dizileri birleştirir |
sol - sağ |
iki değer | sayı, tarih/saat veya süre | sayıları çıkarır, tarih/saatten saniyeleri veya süreyi çıkarır, iki tarih/saat arasındaki süreyi döndürür |
sol * sağ |
iki değer | sayı | sayısal değerleri çarpar |
sol / sağ |
iki değer | sayı veya nil |
sayısal değerleri böler; sıfıra bölündüğünde boş sonuç döndürür |
sol % sağ |
iki değer | sayı veya nil |
bölünmenin kalanını döndürür; sıfıra bölündüğünde boş bir sonuç döndürür |
sol and sağ |
iki değer | mantıksal değer (doğru/yanlış) | mantıksal VE, her iki değer mantıksal biçime getirildikten sonra |
sol or sağ |
iki değer | mantıksal değer (doğru/yanlış) | mantıksal VEYA her iki değer de mantıksal forma getirildikten sonra |
Formül zincirinde sistem operatörlerin önceliğini dikkate alır: %, ardından * ve /, ardından + ve -, ardından and, ardından or.
| Örnek ifadeler | Sonuç |
|---|---|
1 + 1 |
2.0 |
2 – 1 |
1.0 |
2 * 5 |
10.0 |
6 / 3 |
2.0 |
15 % 6 |
3.0 |
1 1 1 + 1 |
4.0 |
1 + 2 * 6 % 4 |
5.0 |
‘start’ + ‘_at’ + ’ field’ |
alan "start_at" |
1 + team.name |
1.0 |
1 + team.id |
8.0 |
2.0 + team |
9.0 |
team + 3.0 |
10.0 |
created_at + 3.days |
Yaratılış tarihinden 3 gün sonra |
team.id + ’ – ’ + team.name |
7.0 |
’’ + team.id + ’ – ’ + team.name |
7 – Service Desk |
‘{{team_id}} – {{team_name}}’ |
7 – Service Desk |
created_at – 4.hours |
yaratılış tarihinden 4 saat önce |
5 / 5 |
1.0 |
5 / 0 |
nil |
Değişkeni elde etme yolu (değer yolu)
Değişkeni çıkaran ifade her zaman otomasyon kuralının tanımlandığı kayıtla başlar.
Başlangıç değeri belirlendikten sonra, yol eklenebilir, örneğin:
1 request.requested_by.manager.name
2 requests[first].subject
3 find_all(ci, "server").select(status = in_production).map(name).join(", ")
| Sözdizimi | Argümanlar | Sonuç | Amaç |
|---|---|---|---|
.field |
alan adı veya kayıtla bağlantı | alan değeri veya ilişkili kayıt | geçerli değerin özelliğine veya bağlantısına gider |
.custom_fields.kod |
kullanıcı alanı kodu | kullanıcı alanı değeri | custom_fields'den kullanıcı alanını okur |
.custom_data.kod |
kullanıcı alanı kodu | kullanıcı alanı değeri | kullanıcı verilerine erişim için tarihsel seçenek |
[first] |
yok | dizinin ilk elemanı | koleksiyonun ilk elemanını döndürür |
[last] |
hayır | dizinin son elemanı | koleksiyonun son elemanını döndürür |
[N] |
pozisyon numarası | dizi elemanı | pozisyona göre elemanı döndürür, pozitif pozisyonlar 1'den, negatif pozisyonlar ise dizinin sonundan başlar |
[#ID] |
kayıt kimliği | dizi elemanı | belirtilen kimliğe sahip kaydı dizide arar |
["isim"] |
dize | dizi elemanı | dizide konuya (subject) göre bir kayıt arar, eğer varsa, aksi takdirde isme (name) göre arar |
[ifade] |
sayı veya dize içeren ifade adı | dizi elemanı | başka bir ifadenin değerini indeks veya isim olarak kullanır |
[N..M] |
iki pozisyon | dizinin bir kısmı | eleman aralığını döndürür; pozitif pozisyonlar 1'den başlar |
Eğer indeks bir diziye uygulanmıyorsa, çalıştırıldığında boş bir sonuç döndürülür; şablon kontrol edildiğinde sistem bir doğrulama hatası ekler.
Kullanılabilir alanlar, kaydın türüne göre değişir. Sunucu, her kayıt türü için izin verilen özniteliklerin listesini sınırlar: örneğin, istekte durum (status), konu (subject), "kim tarafından talep edilen" kişi (başlatıcı) (requested_by), "talep edilen" kişi (requested_for), hizmet bileşeni (service_instance), ekip (team), üye (member), kullanıcı alanları (custom_fields), yorumlar (notes), etiketler (tags) ve diğer alanlar mevcuttur; sırayla görevin kendi kümesi vardır. Alanların tam listesi büyüktür ve kodda "beyaz liste" (whitelist) olarak saklanır; alanlara erişim sözdizimi açıklanıyor ve kayıt türlerine göre tüm beyaz liste tekrarlanmıyor.
custom_fields / custom_data içindeki yol, ifadenin hesaplanması sırasında UI genişletme şemasına göre kontrol edilmiyor. Kural yürütüldüğünde, sistem kullanıcı alanlarını anahtar-değer biçiminde (karma (hash) bir veri yapısı olarak okur ve belirtilen anahtara göre değeri döndürür; anahtar yoksa sonuç boş olur. Doğrulama ve şablon modunda sistem, belirli bir alan için aktif UI genişletme şemasını bilmiyor ve kullanıcı alanının değerini bir dize olarak değerlendiriyor.
Eski isimlerin bir kısmı geriye dönük uyumluluk için alternatif olarak desteklenmektedir: custom_data değeri custom_fields değerine karşılık gelir; sorgu ve görev için change değeri iş akışına (workflow) karşılık gelir; change_type değeri workflow_type değerine karşılık gelir; workflow_manager değeri hizmette change_manager değerine karşılık gelir; sürümde changes değeri workflows değerine karşılık gelir; yorumda internal değeri internal_account değerine karşılık gelir; alanda sitename değeri onun kimliğine karşılık gelir.
Aşağıda ifadelerin kullanımına ilişkin örnekler verilmiştir.
| İfade örnekleri | Sonuç |
|---|---|
| status | onaylandı (approved) |
| workflow.status | ilerleme askıya alındı (progress_halted) |
| created_at | 2017-09-12T14:00:00Z |
| planned_duration | 8 |
| workflow.tasks[first] | 1. iş akışı görevi |
| workflow.tasks[1] | 1. iş akışı görevi |
| workflow.tasks[last] | iş akışının son görevi |
| workflow.tasks[-1] | iş akışının son görevi |
| workflow.tasks[#20122] | iş akışında 20122 kimliğine sahip görev |
| workflow.tasks[1].custom_fields.name | iş akışı görevinden "name" kimliğine sahip UI uzantısı alanının değeri |
| workflow.tasks[1].custom_fields.你好,世界 | iş akışı görevinden "你好,世界" kimliğine sahip UI genişletme alanının değeri |
| workflow.tasks[#20122].subject | Denetleyici onayını değiştir (Change controller approval) |
| workflow.tasks[“Change controller approval”].id | 20122.0 |
| workflow.tasks[‘Change controller approval’] | 20122.0 |
| workflow.tasks[first].notes[first].text | iş akışının ilk görevinin ilk yorumundan metin |
| workflow.tasks[first].notes[first].person.name | iş akışının ilk görevinin ilk yorumunu ekleyen kişinin adı |
Dizilerle manipülasyonlar
Dizi fonksiyonları, bir koleksiyona veya diziye nokta aracılığıyla uygulanır. Eğer orijinal değer boşsa, çoğu fonksiyon boş bir sonuç döndürür; empty? "doğru" değerini döndürür.
| Fonksiyon | Argümanlar | Sonuç | Ayrıntılar |
|---|---|---|---|
.join("ayırıcı") |
ayırıcı dize | dize | dizinin her elemanını bir dizeye dönüştürür ve elemanları belirtilen ayırıcı ile birleştirir |
.map(alan) |
dizi elemanına göre alana referans | değer dizisi | her eleman için belirtilen alanı veya yolu hesaplar ve bir sonuç dizisi döndürür; doğrulama modunda iç içe diziler yasaktır |
.select(koşul) |
ikili karşılaştırma | eleman dizisi | koşulun doğru olduğu elemanları bırakır; koşul, dizinin geçerli elemanı bağlamında hesaplanır |
.reject(koşul) |
ikili karşılaştırma | eleman dizisi | koşulun doğru olduğu elemanları hariç tutar |
.detect(koşul) |
ikili karşılaştırma | bir eleman veya boş sonuç | koşulun doğru olduğu ilk elemanı döndürür |
.any? |
hayır | mantıksal değer (doğru/yanlış) | dizide en az bir elemanın varlığını kontrol eder |
.any?(koşul) |
ikili karşılaştırma | mantıksal değer (doğru/yanlış) | dizinin en az bir elemanının koşulu sağlayıp sağlamadığını kontrol eder |
.all?(koşul) |
ikili karşılaştırma | mantıksal değer (doğru/yanlış) | dizinin tüm elemanlarının koşulu sağlayıp sağlamadığını kontrol eder |
.none? |
hayır | mantıksal değer (doğru/yanlış) | dizide hiçbir eleman olmadığını kontrol eder |
.none?(koşul) |
ikili karşılaştırma | mantıksal değer (doğru/yanlış) | dizinin hiçbir elemanının koşulu sağlamadığını kontrol eder |
.empty? |
hayır | mantıksal değer (doğru/yanlış) | dizinin boş olup olmadığını kontrol eder; boş bir başlangıç değeri için "doğru" döndürür |
.count |
hayır | sayı | eleman sayısını döndürür |
.count(koşul) |
ikili karşılaştırma | sayı | koşulu sağlayan elemanların sayısını döndürür |
.size |
yok | sayı | eleman sayısını döndürür |
.size(koşul) |
ikili karşılaştırma | sayı | count(koşul) gibi çalışır: koşulu sağlayan elemanları sayar |
.sum |
hayır | sayı | elemanları sayılara dönüştürür ve toplamı döndürür |
.sum(koşul) |
ikili karşılaştırma | sayı | elemanları sayılara dönüştürür ve koşulun doğru olduğu değerleri toplar |
.min |
hayır | bir eleman veya boş sonuç | boş elemanları kaldırır ve minimum değeri döndürür |
.max |
hayır | bir eleman veya boş sonuç | boş elemanları kaldırır ve maksimum değeri döndürür |
size ve empty? fonksiyonları bir dizeyle de çalışabilir, ancak yine de sözdizimi bir dizi fonksiyonuyla aynıysa, yine de dizi fonksiyonlarına aittirler. Tip kontrolü sırasında sistem, dizeyi ve koleksiyonu birbirinden ayırır. sum(koşul) için koşul elemanlar sayısal biçime dönüştürüldükten sonra kullanılır; eğer kayıtları alanlara göre filtrelemek gerekiyorsa, önce select(koşul), ardından map(sayısal_alan) ve ancak ondan sonra sum kullanmak daha iyidir.
Koleksiyonun çıkarılması için yol (örnekler)
Bir koleksiyonu çıkaran ifade her zaman otomasyon kuralının tanımlandığı bir kayıtla başlar veya find_all işlemini kullanır.
| Örnek ifadeler | Sonuç |
|---|---|
| cis | Mevcut görevle ilgili tüm KE'ler |
| workflow.requests[first].cis | İlk iş akışı isteğiyle ilgili tüm KE'ler |
| cis.size | Mevcut görevle ilişkili KE sayısı |
| cis.count | Mevcut görevle ilişkili KE sayısı |
| workflow.tasks.select(status = registered) | İş akışı görevleri, "Kayıtlı" statüsüne sahip olanlar |
| workflow.tasks.reject(status = registered) | "Kayıtlı" statüsüne sahip olmayan iş süreci görevleri |
| workflow.tasks.select(status = failed) + workflow.tasks.select(status = rejected) | "Başarısız" durumundaki iş akışı görevleri ile "Reddedildi" durumundaki iş akışı görevlerinin birleşimi |
| cis.empty? | Doğru, eğer mevcut göreve hiçbir KE bağlı değilse, aksi takdirde yanlış |
| cis.any? | Doğru, eğer mevcut göreve en az bir KE bağlıysa, aksi takdirde yanlış |
| cis.any?(status = in_production) | Doğru, eğer mevcut göreve üretimde statüsünde herhangi bir KE bağlıysa, aksi takdirde yanlış. Göreve hiçbir KE bağlı değilse yanlış döndürür. |
| cis.all?(status = in_production) | Eğer mevcut görevle ilgili tüm KE'lerin durumu "üretimde" ise Doğru, aksi takdirde Yanlış. Eğer göreve hiçbir KE bağlı değilse true değerini döndürür |
| cis.none?(status = in_production) | Doğru, eğer mevcut göreve "üretimde" statüsündeki KE'ler bağlı değilse, aksi takdirde yanlış. Göreve KE'ler bağlı değilse doğru döndürür |
| workflow.tasks.select(category = approval).reject(finished_at != nil) | İş akışıyla ilgili henüz tamamlanmamış tüm onay görevleri |
| workflow.tasks.select(category = implementation).map(member) | İş akışıyla ilgili uygulama görevlerinin tüm katılımcıları |
| person.permissions.detect(account = ‘dc’).workflow_manager | Bu kişi veri merkezi alanında iş akışlarının yöneticisi midir? |
Kayıtların aranması ve oluşturulması, ayrıca ilişkili olmayan kayıtların çıkarılması dahil
Otomasyon kuralı tanımlanmış bir kayıtla ilişkili olmayan kayıtları aramak ve çıkarmak, ayrıca kayıt oluşturmak için aşağıdaki fonksiyonlar mevcuttur.
Bu fonksiyonlar, ifadenin noktaya ve yol fonksiyonlarına kadar olan başlangıç değeri olarak kullanılır.
| Sözdizimi | Argümanlar | Sonuç | Amaç |
|---|---|---|---|
find(tip, değer) |
kayıt tipi, sayı veya dize | bir kayıt veya boş sonuç | belirli bir kaynak değerine göre mevcut tipte bir kayıt arar |
find_all(tip, değer) |
kayıt türü, sayı, dize veya sayı/dize dizisi | kayıt dizisi | mevcut türde tüm uygun kayıtları arar |
search(tür, dize) |
kayıt türü, arama satırı | kayıt dizisi, maksimum 50 | kullanıcıya sunulan belirli türdeki kayıtlarda tam metin araması yapar |
new(task) |
oluşturulan kaydın türü | yeni görev | bellekte daha sonra eylemlerle doldurulacak yeni bir görev oluşturur |
new(task, şablon) |
oluşturulan kaydın türü, isim/kimlik/şablon kaydı | uygulanan şablonla yeni görev | yeni bir görev oluşturur ve bulunan görev şablonunu uygular |
Find ve find_all için 'request' modeli bir talebe, change geçmiş adı ise bir iş akışına (iş akışı) dönüştürülür. Account (alan) ve Customer (müşteri) için, ayrıca izin verilen öznitelikleri veya ikame sütunu olmayan türler için arama yapılamaz.
search için türün global aramayı desteklemesi gerekir. Sonuçlar ayrıca kullanıcının görüntüleme erişimine göre filtrelenir.
new değeri şu anda yalnızca task (görev) oluşturmayı desteklemektedir. Şablon iletilmişse, şablon değeri bir sayı, bir dize veya bulunan bir görev şablonu kaydı olmalıdır.
Arama örnekleri.
| İfade örnekleri | Sonuç |
|---|---|
| find(person, ‘singileeva.klavdiya@pro-product.ru’) | Singileeva Klavdiya |
| find(person, ‘singileeva.klavdiya@pro-product.ru’).job_title | Singileeva Klavdiya’nın pozisyonu |
| find(person, workflow.requests[first].custom_fields.email) | İlk iş akışıyla ilişkili UI uzantısının e-posta alanında belirtilen e-posta adresine dayalı yüz kaydı |
| find(service_instance, 2334) | 2334 kimliğine sahip hizmet örneği |
| find(service_instance, 'Minsk Network') | "Minsk Ağı" hizmetinin örneği |
| find(ci, predecessors[first].custom_fields.ci_id) | Önceki görevin UI uzantısında seçilen KE kimliğine göre KE araması yapın. |
| find(ci, 'unknown') | Sıfır (nil) |
| find_all(person, 'Singileeva Klavdiya') | Singileeva Klavdiya adıyla kayıtlı tüm kişilerin listesi |
| find_all(ci, custom_fields.impacted_assets) | Çoklu yanıt seçenekli UI uzantıları alanında seçilen tüm KE’lerin dizisi |
| search(ci, ‘SPARCS’).detect(status = in_production) | “SPARCS” anahtar kelimesiyle yapılan küresel arama sonucunda elde edilen, en fazla 50 öğe içeren listeden, hizmette olan tüm KE’lerin dizisi. |
Yeni kayıtların oluşturulmasına ilişkin örnekler (sadece görevler için).
| İfade örnekleri | Sonuç |
|---|---|
| new(task) | Kurallar alanında yeni bir boş görev oluşturuldu |
| new(task, ‘Finalize the change plan’) | Sağlanan şablona dayalı yeni bir görev |
Dizelerle yapılan işlemler
Dize fonksiyonları, orijinal değeri bir dizeye dönüştürür; ancak to_date_time fonksiyonu, değeri tarih/saate dönüştürür. Eğer orijinal değer boş ise, empty? ve blank? "doğru" değerini, present? ise "yanlış" değerini döndürür, diğer fonksiyonlar ise boş bir sonuç döndürür.
| Fonksiyon | Argümanlar | Sonuç | Ayrıntılar |
|---|---|---|---|
.size |
yok | sayı | dizenin uzunluğunu döndürür |
.length |
yok | sayı | dizenin uzunluğunu döndürür |
.strip |
hayır | satır | satırın başındaki ve sonundaki boşlukları siler |
.lstrip |
hayır | satır | satırın başındaki boşlukları siler |
.rstrip |
hayır | satır | satırın sonundaki boşlukları siler |
.squish |
hayır | satır | en dıştaki boşlukları siler ve satır içindeki boşluk dizilerini sıkıştırır |
.squeeze |
hayır | satır | Ruby dilinin dize işlemi kurallarına göre tekrarlanan karakterleri sıkıştırır |
.reverse |
yok | dize | dizeyi ters sırayla döndürür |
.upcase |
yok | dize | dizeyi büyük harfe çevirir |
.downcase |
yok | dize | dizeyi küçük harfe çevirir |
.swapcase |
hayır | dize | harflerin büyük/küçük harf durumunu tersine çevirir |
.capitalize |
hayır | dize | ilk harfi büyük, diğerlerini küçük yapar |
.titleize |
hayır | satır | sonuçtan karakterleri silmeden, ilk harfi büyük olacak şekilde kelimeleri büyük harfle yazılmış hale getirir |
.empty? |
hayır | mantıksal değer (doğru/yanlış) | boş bir dizeyi kontrol eder |
.blank? |
hayır | mantıksal değer (doğru/yanlış) | boş bir dizeyi veya boşluklardan oluşan bir dizeyi kontrol eder |
.present? |
hayır | mantıksal değer (doğru/yanlış) | boş olmayan bir değeri kontrol eder |
.to_number |
yok | sayı | dizeyi kayan sayıya dönüştürür |
.to_date_time |
yok | tarih | saat veya boş sonuç |
.split("ayırıcı") |
dize | dize dizisi | dizeyi belirtilen ayırıcıya göre böler |
.split(/düzenli_ifade/) |
düzenli ifade | dize dizisi | dizeyi düzenli ifadeye göre böler |
.match?("dize") |
dize | mantıksal değer (doğru/yanlış) | dizeyle eşleşmeyi, kaçışlı bir şablon olarak kontrol eder |
.match?(/düzenli_ifade/) |
düzenli ifade | mantıksal değer (doğru/yanlış) | düzenli ifadeye göre eşleşmeyi kontrol eder |
.start_with?(değer) |
değer | mantıksal değer (doğru/yanlış) | dizenin iletilen değerle başlayıp başlamadığını kontrol |
.exclude?(değer) |
değer | mantıksal değer (doğru/yanlış) | dizenin iletilen değeri içermediğini kontrol eder |
.slice(N) |
sayı | dize | N konumundan sonuna kadar olan dizenin bir kısmını döndürür; pozitif konum 1'den başlar |
.slice(N, uzunluk) |
iki sayı | dize | belirtilen uzunlukta N konumundan itibaren dizenin bir kısmını döndürür; pozitif konum 1'den başlar |
.ljust(uzunluk) |
sayı | satır | satırı sağdan belirtilen uzunluğa kadar boşluklarla tamamlar |
.ljust(uzunluk, yer tutucu) |
sayı ve değer | dize | belirtilen doldurucu ile sağdan dizeyi tamamlar |
.rjust(uzunluk) |
sayı | dize | belirtilen uzunluğa kadar sola boşluklarla dizeyi tamamlar |
.rjust(uzunluk, yer tutucu) |
sayı ve değer | dize | belirtilen yer tutucu ile dizeyi soldan tamamlar |
.replace("ne", "ne_ile") |
satır ve satır | satır | ilk satırın tüm oluşumlarını ikinci satırla değiştirir |
.replace(/düzenli_ifade/, "ne_ile") |
düzenli ifade ve dize | dize | düzenli ifadenin tüm eşleşmelerini ikinci dizeyle değiştirir satır |
.replace(/düzenli_ifade/, "ne_ile") |
düzenli ifade ve dize | dize | düzenli ifadenin tüm eşleşmelerini ikinci dizeyle değiştirir |
Tırnak içindeki dize argümanları, kural değerlerinin interpolasyonunu gerçekleştirir. Düzenli ifadeler 4 saniyelik bir süreyle çalıştırılır; bu süre aşıldığında sistem bir yürütme hatası ekler ve boş bir sonuç döndürür.
Aşağıda, otomasyon kurallarında dizelerle yapılan işlemlere dair örnekler verilmiştir.
| Örnek ifadeler | Sonuç |
|---|---|
| ’ hello’.lstrip | Başlangıçtaki boşluğu kaldırır (‘hello’). |
| ’hello ’.rstrip | Satırın sonundaki boşlukları kaldırır (‘hello’). |
| ‘hello’.start_with?(‘hell’) | Doğru. Doğru, eğer dize belirtilen son eklerden biriyle başlıyorsa. |
| ‘hello’.end_with?(‘lo’) | Doğru. Doğru, eğer dize belirtilen son eklerden biriyle bitiyorsa. |
| ‘table’.match?(‘bl’) | Doğru. "Doğru" değeri, eğer şablon satırda bulunursa. |
| s=‘foo’, s.include?(‘f’) | Doğru. Doğru, eğer self başka bir dize içeriyorsa. |
| s=‘foo’, s.exclude?(‘t’) | Doğru. Doğru, eğer self başka bir dize içermiyorsa. |
| ‘hello’.ljust(10) | Eğer tam sayı dizenin uzunluğundan büyükse, dizeyi sola doldurulmuş olarak döndürür. |
| ‘hello’.rjust(10, ‘oh’) | Eğer tam sayı dizenin uzunluğundan büyükse, sağa hizalanmış doldurma ile dizeyi döndürür. |
| subject.size | Karakter sayısı 28'dir. |
| subject.length | Karakter sayısı 28'dir. |
| ’ spacey string ’.strip | Başlangıç ve bitiş boşluklarını kaldırın. |
| ’ spacey string ’.squish | Birden fazla boşluğu tek bir boşlukla değiştirin ve başlangıç ile bitiş boşluklarını silin. |
| ’ spaceeeey ssstring ’.squeeze | Aynı karakter dizilerini tek bir karakterle değiştirin. |
| ‘desserts’.reverse | Sembolleri değiştir (‘stressed’). |
| ‘r-service’.upcase | Tüm harfler büyük harflidir. |
| ‘R-SERVICE’.downcase | Tüm harfler küçük harflidir. |
| ‘hI tHERE’.swapcase | Küçük harften büyük harfe ve bunun tersi de geçerlidir (‘Hi There’). |
| ’ ’.empty? | Doğru. Eğer dize boşsa veya sadece boşluk içeriyorsa "doğru" değerini döndürür. |
| ’ ’.blank? | Doğru. Eğer dize boşsa veya sadece boşluk içeriyorsa "doğru" değerini döndürür. |
| ’ ’.present? | Yalan. Eğer dize boşluk dışındaki karakterleri içeriyorsa "doğru" değerini döndürür. |
| ‘break-me-up’.split(‘-’) | Dizeyi sınırlayıcıya göre dizeler dizisine böl ([‘break’, ‘me’, ‘up’]). |
| ‘break-me-up’.split(/[eau]+/) | Dizeyi sınırlayıcıya göre dizeler dizisine böl normal ifadenin ([‘br’, ‘k-m’, ‘-’, ‘p’]). |
| ‘break-me-up’.slice(3) | Belirtilen index.md dosyasından başlayarak bir satır almak ve devam etmek (‘eak-me-up’). |
| ‘break-me-up’.slice(-5) | Belirtilen index.md dosyasından başlayarak bir satır almak ve devam etmek (‘me-up’). |
| ‘break-me-up’.slice(3,2) | Belirli bir index.md dosyasından sabit sayıda karakter almak (‘ea’). |
| ‘break-me-up’.replace(‘-’, ’ ’) | Tüm oluşumları başka bir dizeyle değiştirin (‘break me up’). |
| ‘break-me-up’.replace(/[eau]+/, ‘*’) | Düzenli ifadenin tüm oluşumlarını başka bir dizeyle değiştirin (‘br*k-m*-*p’). |
| ‘break-me-up’.replace(/([eau]+)/, ‘\1’) | Tüm düzenli ifade oluşumlarını, yakalama gruplarını kullanarak başka bir dizeyle değiştirin. (‘br*ea*k-m*e*-*u*p’). |
| [‘break’,‘me’,‘up’].join(’ and ’) | Belirtilen ayırıcı kullanılarak dizi elemanlarını birleştirmek (‘break and me and up’). |
| ‘10.428571428571429’.to_number | Dizeyi sayıya dönüştür (10.428571428571429). |
Sayılarla manipülasyonlar
Sayısal fonksiyonlar, orijinal değeri bir sayıya dönüştürür. Eğer değer boşsa, fonksiyon boş bir sonuç döndürür.
| Fonksiyon | Argümanlar | Sonuç | Ayrıntılar |
|---|---|---|---|
.round |
yok | sayı | sayıyı tam sayıya yuvarlar |
.round(hassasiyet) |
sayı | sayı | sayıyı belirtilen sayıda basamağa yuvarlar |
.to_string |
hayır | dize | sayıyı dizeye dönüştürür |
Aşağıda otomasyon kurallarında kullanım örnekleri verilmiştir.
| Örnek ifadeler | Sonuç |
|---|---|
| 10.428571428571429.to_string | Sayıyı dizeye dönüştür (‘10.428571428571429’). |
| 10.428571428571429.round | Tam sayıya yuvarlama (10). |
| 10.428571428571429.round(2) | Belirtilen ondalık basamağa yuvarlama (10.43). |
Tarih ve saat manipülasyonu
| Sözdizimi | Neye uygulanır | Sonuç | Amaç |
|---|---|---|---|
.seconds / .second |
sayı | süre | sayıyı saniye olarak yorumlar |
.minutes / .minute |
sayı | süre | sayıyı dakika olarak yorumlar |
.hours / .hour |
sayı | süre | sayıyı saat olarak yorumlar |
.days / .day |
sayı | süre | sayıyı gün olarak yorumlar |
.weeks / .week |
sayı | süre | sayıyı hafta olarak yorumlar |
.months / .month |
sayı | süre | sayıyı ay olarak yorumlar |
.years / .year |
sayı | süre | sayıyı yıl olarak yorumlar |
.ago |
sayı veya süre | tarih/saat | süreyi geçerli andan çıkarır; eğer solda bir sayı varsa, bu saniye olarak kabul edilir |
.from_now |
sayı veya süre | tarih/saat | mevcut ana süre ekler; eğer solda bir sayı varsa, bu saniye olarak kabul edilir |
.is_monday ... .is_sunday |
tarih/saat | mantıksal değer (doğru/yanlış) | haftanın gününü kontrol eder |
.year, .month, .day |
tarih/saat | sayı | yılı, ayı veya günü döndürür |
.hour, .minute, .second |
tarih/saat | sayı | saati, dakikayı veya saniyeyi döndürür |
.day_of_week |
tarih/saat | sayı | haftanın gününün numarasını döndürür |
.day_of_year |
tarih/saat | sayı | yılın gün numarasını döndürür |
.utc |
tarih/saat | tarih/saat | aynı zaman noktasını Evrensel Koordineli Zaman'da (UTC) döndürür |
.in_time_zone(saat kayış) |
bir dize veya dizeyi veren bir değer | tarih/saat | tarihi/saati belirtilen saat dilimine çevirir; saat dilimi bilinmiyorsa hata ekler |
.iso8601 |
hayır | satır | ISO8601 formatında tarih/saat döndürür |
Lütfen dikkat edin: bazı değerler, alan kaydı alanları olmasa da, nokta aracılığıyla nitelikleri destekler.
Lütfen dikkat edin: tarih ve saat fonksiyonları .in_time_zone(saat_dilimi) ve .iso8601 öncelikle orijinal değeri tarih/saate dönüştürmeye çalışır. Dizeler yalnızca ISO8601 tarih standardı (YYYY-AA-GG) veya ISO8601 saat standardı formatında tanınır.
Aşağıda otomasyon kurallarında kullanım örnekleri verilmiştir.
| İfade örnekleri | Sonuç |
|---|---|
| now | >1. saniye önce <1. saniye şu andan itibaren (>1.seconds.ago <1.seconds.from_now) |
| today | >1 gün önce <1 gün gerçek andan itibaren (>1.day.ago <1.day.from_now) |
| 1.second.ago | >2 saniye önce <0 saniye şu andan itibaren (>2.seconds.ago <0.seconds.from_now) |
| 2.seconds.ago | >3 saniye önce <1 saniye önce (>3.seconds.ago <1.second.ago) |
| 1.minute.ago | >61 saniye önce <59 saniye önce (>61.seconds.ago <59.seconds.ago) |
| 2.minutes.ago | >121 saniye önce <119 saniye önce (>121.seconds.ago <119.seconds.ago) |
| 1.hour.ago | >61 dakika önce <59 dakika önce (>61.minutes.ago <59.minutes.ago) |
| 2.hours.ago | >121 dakika önce <119 dakika önce (>121.minutes.ago <119.minutes.ago) |
| 1.day.ago | >25 saat önce <23 saat önce (>25.hours.ago <23.hours.ago) |
| 2.days.ago | >49 saat önce <47 saat önce (>49.hours.ago <47.hours.ago) |
| 1.week.ago | >8 gün önce <6 gün önce (>8.days.ago <6.days.ago) |
| 2.weeks.ago | >15 gün önce <13 gün önce (>15.days.ago <13.days.ago) |
| 1.month.ago | >32 gün önce <27 gün önce (>32.days.ago <27.days.ago) |
| 2.months.ago | >63 gün önce <56 gün önce (>63.days.ago <56.days.ago) |
| 1.year.ago | >366 gün önce <364 gün önce (>366.days.ago <364.days.ago) |
| 2.years.ago | >732 gün önce <729 gün önce (>732.days.ago <729.days.ago) |
| 1.second.from_now | >0.saniye.şimdiden_itibaren <2.saniye.şimdiden_itibaren (>0.seconds.from_now <2.seconds.from_now) |
| 2.seconds.from_now | >1.saniye.şimdiden_itibaren <3.saniye.şimdiden_itibaren (>1.seconds.from_now <3.second.from_now) |
| 1.minute.from_now | >59.saniye.şimdiden_itibaren <61.saniye.şimdiden_itibaren (>59.seconds.from_now <61.seconds.from_now) |
| 2.minutes.from_now | >119.saniye.şimdiden_itibaren <121.saniye.şimdiden_itibaren (>119.seconds.from_now <121.seconds.from_now) |
| 1.hour.from_now | >59 dakika şu andan itibaren <61 dakika şu andan itibaren (>59.minutes.from_now <61.minutes.from_now) |
| 2.hours.from_now | >119 dakika şu andan itibaren <121 dakika şu andan itibaren (>119.minutes.from_now <121.minutes.from_now) |
| 1.day.from_now | >23.saat.şimdiden_itibaren <25.saat.şimdiden_itibaren (>23.hours.from_now <25.hours.from_now) |
| 2.days.from_now | >47.saat.şimdiden_itibaren <49.saat.şimdiden_itibaren (>47.hours.from_now <49.hours.from_now) |
| 1.week.from_now | >6.gün.şimdiden_itibaren <8.gün.şimdiden_itibaren (>6.days.from_now <8.days.from_now) |
| 2.weeks.from_now | >13.gün.şimdiden_itibaren <15.gün.şimdiden_itibaren (>13.days.from_now <15.days.from_now) |
| 1.month.from_now | >27 gün gerçek andan itibaren <32 gün gerçek andan itibaren (>27.days.from_now <32.days.from_now) |
| 2.months.from_now | >56.gün.şimdiden_itibaren <63.gün.şimdiden_itibaren (>56.days.from_now <63.days.from_now) |
| 1.year.from_now | >364.gün.şimdiden_itibaren <366.gün.şimdiden_itibaren (>364.days.from_now <366.days.from_now) |
| 2.years.from_now | >729.gün.şimdiden_itibaren <732.gün.şimdiden_itibaren (>729.days.from_now <732.days.from_now) |
| planned_duration.hours.from_now | >79.saat.şimdiden_itibaren <81.saat.şimdiden_itibaren (>79.hours.from_now <81.hours.from_now) |
| now.year | Yıl, örneğin, 2019 |
| now.month | Yılın ayı, örneğin üçüncü (Mart) |
| now.day | Ayın günü, örneğin 21 |
| now.hour | Örneğin öğleden sonra saat 19 |
| now.minute | Örneğin bir saatin dakikası, 45 |
| now.second | Örneğin, bir dakikanın saniyesi 12'dir. |
| now.day_of_year | Örneğin yılın günü, 80 |
| now.day_of_week | Haftanın günü, örneğin 4 (perşembe) |
| now.is_monday | Gün - Pazartesi, örneğin yalanlar |
| now.is_tuesday | Gün - Salı, örneğin yalanlar |
| now.is_wednesday | Gün çarşambadır, örneğin yalanlar |
| now.is_thursday | Gün - Perşembe, örneğin yalanlar |
| now.is_friday | Gün - Cuma, örneğin yalanlar |
| now.is_saturday | Gün - Cumartesi, örneğin yalanlar |
| now.is_sunday | Gün - Pazar, örneğin yalanlar |
| now.utc | UTC saat diliminde tarih ve saatin çakışması |
| custom_fields.my_date_time.to_date_time | Kullanıcı alanlarından elde edilen tarih ve saat dize değerini tarih ve saat formatına dönüştürün. |
| now.in_time_zone(person.time_zone) | Kişinin saat diliminde tarih ve saatin çakışması |
| now.in_time_zone(rule_account.time_zone) | Tarih ve saat, kuralın oluşturulduğu uzayın saat dilimiyle aynıdır. |
| now.in_time_zone(‘Minsk’) | Belirtilen saat diliminde aynı tarih ve saat |
| now.iso8601 | Aynı tarih ve saat, ISO8601 standardı formatında |
| duration(created_at, now) | Yaratılış ile şimdiki an arasındaki dakika sayısı |
| template.support_hours.target_at(now, 8.hours, ‘Moscow’) | Hedef süre, istek şablonundan alınan destek saatlerine, başlangıç saatine ve süresine göre hesaplanmıştır, Moskova saat dilimi için |
Takvim manipülasyonu
Takvim fonksiyonları takvim türündeki bir değere uygulanır. Eğer orijinal değer bir takvim değilse, fonksiyon boş bir sonuç döndürür ve kural kontrolü sırasında sistem bir hata ekler.
| Fonksiyon | Argümanlar | Sonuç | Ayrıntılar |
|---|---|---|---|
.target_at(başlangıç, süre) |
tarih/saat, sayı veya süre değeri | tarih/saat | hedef zamanı takvime göre hesaplar: başlangıç zamanından çalışma süresini ekler; süre saniye cinsinden iletilir ve fonksiyon içinde dakikaya çevrilir |
.target_at(başlangıç, süre, saat dilimi) |
tarih/saat, süre, saat dilimi dizesi | tarih/saat | aynı, ancak belirli bir saat dilimiyle |
.duration(başlangıç, bitiş) |
iki tarih/saat | sayı | takvimdeki iki an arasındaki çalışma süresini hesaplar |
.duration(başlangıç, bitiş, saat dilimi) |
iki tarih/saat, saat dilimi dizesi | sayı | aynı, ancak belirli bir saat dilimiyle |
Eğer saat dilimi iletilmemişse, otomasyon kuralının uzay saat dilimi kullanılır. Eğer iletilen saat dilimi bilinmiyorsa, sistem bir hata ekler ve boş bir sonuç döndürür.
Üçlü ifadeler - Üçlü operatörler
| Sözdizimi | Argümanlar | Sonuç | Amaç |
|---|---|---|---|
| koşul ? eğer_evet : eğer_hayır | koşul ve iki değer | iki değerden biri | koşul boş değilse ikinci değeri, aksi takdirde üçüncü değeri döndürür |
| koşul then eğer_evet else eğer_hayır | koşul ve iki değer | iki değerden biri | ternary operatörün alternatif yazımı |
Kuralın şablon modunda kontrol edilmesi sırasında her iki sonucun da uyumlu bir türe sahip olması gerekir. Örneğin, bir dalda bir kayıt döndürüp diğer dalda bir kayıt dizisi döndürmek mümkün değildir.
| İfade örnekleri | Sonuç |
|---|---|
| true then ‘yes’ else ‘no’ | Evet (‘yes’) |
| !true then ‘yes’ else ‘no’ | Hayır (‘no’) |
| is_assigned then teamA.id else teamB.id | takım kimliği A, eğer is_assigned doğruysa |
| true ? ‘yes’ : ‘no’ | Evet (‘yes’) |
| !true ? ‘yes’ : ‘no’ | Hayır (‘no’) |
| is_assigned ? teamA.id : teamB.id | takım kimliği A, eğer is_assigned doğruysa |
Dizelerin enterpolasyonu
İfadeler içinde ifadeler kullanılabilir. Ancak bir ifade yalnızca daha önce tanımlanmışsa kullanılabilir, bu nedenle ifadelerin sırası önemlidir. Aşağıdaki örnek çalışır, çünkü "note" ifadesi "hello_note" ifadesinde kullanılmadan önce tanımlanmıştır:
- note: notes[last]
- hello_note: “hello {{note}}”
İfadelerin sırasını, her ifadenin başka bir ifadede kullanılmadan önce tanımlanmasını sağlamak için yukarı veya aşağı sürükleyerek değiştirebilirsiniz.
Kural düzenleyici ipuçları
Kural düzenleyici, sunucu meta verilerinden fonksiyonların, operatörlerin, önceden tanımlanmış değerlerin, türlerin ve izin verilen alanların listelerini alır. Bu nedenle, ipuçlarındaki fonksiyon adları sunucu sabitlerine karşılık gelir: eğer bir fonksiyon array_functions, string_functions, number_functions, date_time_functions veya calendar_functions içinde varsa, editör onu ifadenin uygun bir yerinde gösterebilir.
İpuçları, belirli bir geçerli değer türüne bağlıdır:
- dizi fonksiyonları yalnızca koleksiyon değerleri için gösterilir;
- dize fonksiyonları yalnızca dizeler için;
- sayısal fonksiyonlar yalnızca tam ve kesirli sayılar için;
- tarih/saat fonksiyonları yalnızca tarih, saat ve olay tarih/saatinin kesin olarak sabitlendiği türler için;
- takvim fonksiyonları - sadece takvim için;
find,find_all,searchvenewdeğerlerin başında gösterilir, eğer geçerli konum aynı tipteki başka bir fonksiyonun içinde değilse;_wasiçin ipuçları, geçerli tipin izin verilen alanlarından oluşturulur ve koleksiyon alanları için gösterilmez.
Bununla birlikte, bazı tutarsızlıklar mevcut olabilir:
| Senaryo | Sunucu | Editör |
|---|---|---|
start_with?(...), end_with?(...), include?(...), exclude?(...) |
Argüman bir değişken olabilir. | Parametrelerin doğrulanması, tırnak içinde bir dize veya split / match? için olduğu gibi bir düzenli ifade alır. Değişken, editör hatası olarak vurgulanabilir. |
ljust(uzunluk, yer tutucu), rjust(uzunluk, yer tutucu) |
İkinci argüman değişken olabilir. | İkinci argüman tırnak içinde bir dize olarak kabul edilir. |
target_at(başlangıç, süre) |
İkinci argüman bir değişken veya tam sayı olabilir ve çalışma zamanı değeri tam sayıya dönüştürür. | Editör kontrolü ikinci argüman için tam sayı türünü bekler. |
find, find_all, search için modeller |
Çalışma zamanı ayrıca bazı türlerin kullanımını yasaklar: örneğin, find(account, ...) ve find(customer, ...) kullanılamaz. |
Model adı ipuçları, çalışma zamanının daha sonra reddedeceği türü gösterebilir. |
| Parametresiz dizi fonksiyonlarında parantezler | Parametresiz any?, none?, empty?, count, size, sum, min, max izinlidir; filtre yalnızca bazı fonksiyonlar için izinlidir. |
Editör, sunucu listesindeki tüm isimleri gösterir. Kullanıcı, filtresiz bir fonksiyona manuel olarak parantez eklerse, vurgulama sunucu verileriyle uyuşmayabilir. |
Böylece, fonksiyon adlarına göre editör ipuçları sunucuyla senkronize edilmiştir, ancak editör tüm argüman seçenekleri için tam bir kopya değildir. Bir anlaşmazlık durumunda, gerçeğin kaynağı sunucu ve ifade çalışma zamanı düğümleri olmaya devam eder.