<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>İş Süreci Kurallarının JsonLogic ile Geliştirilmesi için bir Modelleme Ortamı</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Katira Soleymanzadeh</string-name>
          <email>katirasole@gmail.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yiğit Bul</string-name>
          <email>yigit.bul@hermesiletisim.net</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sedat Kulduk</string-name>
          <email>sedat.kulduk@hermesiletisim.net</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sarper Bağcı</string-name>
          <email>sarper.bagci@hermesiletisim.net</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Geylani Kardaş</string-name>
          <email>geylani.kardas@ege.edu.tr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Anahtar Kelimeler: JsonLogic</institution>
          ,
          <addr-line>Model-güdümlü Mimari, Alana-özgü Modelleme Dili, İş Süreci Yönetimi</addr-line>
          ,
          <country>İş Süreci Kuralı</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Ege Üniversitesi Uluslararası Bilgisayar Enstitüsü</institution>
          ,
          <addr-line>35100 Bornova, İzmir</addr-line>
          ,
          <country country="TR">Türkiye</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Hermes İnternet İletişim Yazılım San. ve Tic. A.Ş.</institution>
          ,
          <addr-line>Pasaport, İzmir</addr-line>
          ,
          <country country="TR">Türkiye</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Özet. İş Süreci Yönetimi (BPM) yazılımlarında iş süreçleri ve iş akışlarına ait işletim kurallarının mantık tabanlı oluşturulması için JSON temelli JsonLogic yapısının BPM yazılımlarında yakın zamanda kullanılmaya başlandığı gözlemlenmektedir. Her ne kadar JsonLogic ile iş süreci kurallarının oluşturulması BPM'ler içerisinde bu kuralların çeşitli veritabanlarında saklanmasına ve paylaşımına imkan verse de bu kuralların metinsel sözdiziminin yazılım geliştiricilerin kullandığı genel amaçlı programlama dillerinden farklı olması, geliştiricilerin özellikle komplike iş kurallarının yazımı sırasında zorlanmalarına ve kural hazırlama sürecinin hem uzamasına hem de hatalara daha açık bir hale gelmesine neden olmaktadır. İş süreci kurallarının JsonLogic ile geliştirilmesinde karşılaşılan bu zorlukları minimize etmek amacıyla, bu çalışmada JsonLogic yapılarının bir model-güdümlü mimari kapsamında görsel modellenmesini ve sonra bu modellerden JsonLogic kurallarının otomatik oluşturulmasını sağlayacak bir alana-özgü modelleme dili ve bunu destekleyen bir araç tanıtılmaktadır. Sunulan modelleme ortamının örnek bir durum çalışması üzerinden gerçekleştirilen değerlendirmesinde, sadece JSON ile modelleme imkanı sunan ve JsonLogic'i desteklemeyen mevcut bir araca göre ilgili iş kurallarının daha az görsel bileşen ile daha kolay bir şekilde oluşturulabildiği gözlenmiştir.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>these rules in databases and sharing them between front-end and back-end
systems, the developers may encounter difficulties during the preparation of
complicated business rules with JsonLogic due to its intricate textual syntax which
is too different from the well-known general-purpose programming languages.
This unfamiliar way of rule creation may also lead to a time-consuming and
error-prone development process. In order to eliminate these deficiencies and
facilitate the business rule creation with JsonLogic, we introduce a
domainspecific modelling language and its supporting tool for the visual modelling and
automatic generation of JsonLogic rule structures within a model-driven
architecture. The evaluation, performed inside a case study, showed that the
proposed modelling environment is capable of the construction of business rules
with far less number of components comparing with modelling the same rules
in an existing tool for JSON.
1</p>
      <p>
        Giriş
İş Süreci Yönetimi (ing. Bussiness Process Management) (BPM) iş süreçlerinin
tasarımı, hayata geçirilmesi ve yönetilmesi için çeşitli yöntem ve araçların kullanımını
içermektedir. BPM’ler birçok alanda yaygın olarak kullanılan iş akışı yönetimi sistem
ve yaklaşımlarının birer uzantısı olarak düşünülebilirler [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. BPM yazılımlarında iş
süreçleri ve iş akışlarına ait işletim kuralları çoğunlukla mantık tabanlı olarak
kurgulanmakta ve yönetilmektedir [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Görev ve kaynakların durumunun
belirlenmesi, bunların aktörlere atanması, işletimsel kısıtların belirtilmesi, süreçlerin
yönlendirilmesi, olayların tetiklenmesi gibi bileşenler için kuralların oluşturulmasında
tümevarım / tümden gelimli veya şartlı akıl yürütmeyi sağlayacak mantık kurgularına
ihtiyaç vardır.
      </p>
      <p>
        Karmaşık iş süreci kurallarının mantık tabanlı oluşturulması için JavaScript Nesne
Gösterimi (ing. JavaScript Object Notation) (JSON) [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] mantığı ve bunun üzerine
geliştirilen JsonLogic [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] yapısının profesyonel BPM yazılımlarında yakın zamanda
kullanılmaya başlandığı (örneğin IBM BPM [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], Camunda [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]) gözlemlenmektedir.
Her ne kadar JsonLogic ile iş süreci kurallarının oluşturulması BPM’ler içerisinde bu
kuralların çeşitli veritabanlarında saklanmasına ve paylaşımına imkan verse de bu
kuralların metinsel sözdiziminin yazılım geliştiricilerin kullandığı genel amaçlı
programlama dillerinden farklı olması, geliştiricilerin özellikle komplike iş
kurallarının yazımı sırasında zorlanmalarına ve kural hazırlama sürecinin hem
uzamasına hem de hatalara daha açık bir hale gelmesine neden olmaktadır. İş süreci
kurallarının JsonLogic ile geliştirilmesinde karşılaşılan bu zorlukları minimize etmek
amacıyla, bu çalışmada JsonLogic yapılarının bir model-güdümlü mimari kapsamında
görsel modellenmesini ve sonra bu modellerden JsonLogic kurallarının otomatik
oluşturulmasını sağlayacak bir alana-özgü modelleme dili ve bunu destekleyen bir
araç tanıtılmaktadır.
      </p>
      <p>
        İş süreçlerinin ve iş akışlarının koreografisi ve yönetilmesinde model-güdümlü
mühendislik yaklaşımlarının uzun bir süreden beri izlendiği görülmektedir [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
BPM’ler için çeşitli model-güdümlü mimari uygulamaları ve modelleme dili
geliştirme çalışmaları da (örneğin [
        <xref ref-type="bibr" rid="ref10 ref11 ref12 ref8 ref9">8-12</xref>
        ]) ilgili araştırma alanında güncelliğini
korumaktadır. Ancak mevcut çalışmalarda iş süreci ve kurallarına ait mantığın
JsonLogic ile modellenmesi ve üretilmesi göz önüne alınmamaktadır. Bildiğimiz
kadarıyla ilk kez bu bildiride anlatılan çalışma ile JsonLogic yapılarının
modellenmesi için bir üstmodel geliştirilmiştir ve bu üstmodeli temel alan bir görsel
modelleme ortamı yazılım geliştircilere sağlanarak JsonLogic iş kurallarının otomatik
elde edilmesi mümkün hale gelmektedir.
      </p>
      <p>Bildirinin 2. bölümünde kısaca JsonLogic hakkında bilgi verilmiştir. Geliştirilen
JsonLogic üstmodeli 3. bölümde tanıtılmaktadır. Üstmodele dayalı olarak iş süreci
kurallarının görsel modellenmesini sağlayan sözdizim ve işletimsel semantik sırasıyla
4. ve 5. bölümlerde anlatılmıştır. Geliştirilen dilin ve modelleme aracının kullanımını
örnekleyen bir durum çalışması 6. bölümde yer almaktadır. 5. bölümde, ilgili
literatürdeki önceki çalışmalar anlatılmış; mevcut çalışmalara göre farklar ve katkılar
belirtilmiştir. Son bölümde çalışmadan elde edilen sonuçlar ve ileriye yönelik çalışma
hedefleri yer almaktadır.
2</p>
    </sec>
    <sec id="sec-2">
      <title>JsonLogic</title>
      <p>
        JSON, ilkel ve yapısal veri türlerine sahip, metin tabanlı ve dilden bağımsız bir veri
değişim biçimidir [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Anahtar-değer çifti şeklinde tanımlanan JSON veri biçimi,
diğer veri tiplerine göre (örneğin XML verisi) daha az yer kaplamaktadır. JsonLogic
ise JSON mantığı üzerinde tanımlanan bir yapıdır ve karmaşık mantık kurallarını inşa
etmek, onları birer JSON verisi olarak serileştirmek, uygulamaların ön-uç (ing.
frontend) ve arka-uçları (ing. back-end) arasında paylaşmak ve veritabanlarında saklanmak
için kullanılmaktadır [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Her JsonLogic kuralı bir JSON nesnesidir ve operatör-veri
çifti biçiminde tanımlanmaktadır. Operatör bir JsonLogic yapısında anahtar
konumunda iken bir veya bir dizi argüman değer konumunda yer almaktadır. Her bir
argümanın kendisi de bir mantık kuralı olabilir ve böylece karmaşık kuralları
JsonLogic ile tanımlamak mümkün olmaktadır. Her ne kadar tam bir programlama
dili olmasa da JsonLogic özellikle kuralların birer veri şeklinde saklanmasına ve
böylece kullanıcı etkileşimi ile dinamik olarak oluşturulabilmelerine imkan vermesi
nedeniyle iş süreçlerinin kural tabanlı oluşturulmasında güçlü bir alternatif
olmaktadır.
      </p>
      <p>Aşağıda basit bir JsonLogic iş kuralı örneği verilmiştir. Kuralda eğer bir kişinin
eposta adresi boş (ing. null) değilse ve bu kişeye gönderilen e-posta sayısı üçten azsa
(yani kuralın işletim sonucu mantıksal doğru (ing. true) olacaksa), ilgili kişiye yeni bir
e-posta gönderilecektir.</p>
      <p>JsonLogic kuralı: {"and" : [{ "!=" : [{“var” : “email_address”},null] },{ "&lt;" :
[{“var” : “number_of_sent_mail”},3] }] }</p>
      <p>
        JsonLogic kural ayrıştırıcıları (ing. parser) [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] yazılan kuralların otomatik olarak
Python, JavaScript, PHP ve Ruby’ye dönüştürülmesine ve bu ortamlarda
çalıştırılmalarına olanak sağlamaktadır. Örneğin yukarıda JsonLogic kullanılarak
hazırlanan kuralın ayrıştırıcı kullanılarak elde edilen Python’daki eşdeğer kodu şu
şekildedir:
      </p>
      <p>Python kodu:</p>
      <p>( (email_address != null ) and (number_of_sent_mail &lt; 3) )
3</p>
    </sec>
    <sec id="sec-3">
      <title>JsonLogic Yapıları için bir Üstmodel</title>
      <p>
        JsonLogic mantık kurallarının model-güdümlü olarak geliştirilmesini sağlamak
amacıyla JsonLogic modellerinin oluşturulabileceği bir üstmodel (ing. metamodel) bu
çalışmada hazırlanmıştır. Üstmodelin türetilmesi için JsonLogic yapıları [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] göz
önüne alınmış; ve bu yapıların modellenmesini sağlayacak üstvarlıklar (ing.
metaentity) ve bunların ilişkileri bu üstmodel içerisinde tanımlanmıştır. Geliştirilen
üstmodel Nesne Yönetim Grubu (ing. Object Management Group) (OMG) Üst-varlık
Ortamı (ing. MetaObject Facility) (MOF) [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] uyumludur. Böylece bu üstmodele
göre oluşturulan JsonLogic iş kuralı modelleri OMG Model-güdümlü Mimarisi (ing.
Model-driven Architecture) (MDA) [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] kapsamında XML ile serileştirilebilir ve
Eclipse Modelleme Çerçevesi [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] gibi üst-üstmodelini MOF’un oluşturduğu
modelleme ortamlarında kullanılabilir. Şekil 1’de söz konusu üstmodel
resmedilmiştir. Anlam kaymalarını önlemek amacıyla bildiride üstmodeldeki varlıklar
ve ilişkiler İngilizce orjinal isimleri kullanılarak anlatılmaktadır ve metinde eğik
(italik) olarak yazılmışlardır.
      </p>
      <p>Her bir JsonLogic Element temelde bir AccessingData, Operation veya Log
olabilir. var, missing ve missing_some tiplerinden birine sahip olabilecek bir
AccesingData elemanı, kullanıcı tarafından girilen verinin işlenmesini ve sonucun
döndürülmesini sağlar. Genellikle nesne formatında olan her veri, özel ismi olan bir
var kavramı ile tanımlanır. var kavramı kullanıcı tarafından sağlanan veriyi tanımlar.
missing, JsonLogic modelinde tanımlanan bir veri dizisi içinde bulunmayan
elemanları belirlemede kullanılır. missing_some girdi olarak verilen minimum sayı
kadar verinin bir anahtar dizisi içerisinde olup olmadığını sorgulamayı sağlamaktadır.
Tablo 1’de AccesingData çeşitlerinin JsonLogic kural cümlelerinin oluşturulmasında
kullanımı ve örnek veriler üzerinde bu kuralların işletilmesi sonuçları listelenmiştir.</p>
      <p>Üstmodeldeki Operation üstvarlığının örnekleri bir JsonLogic modelindeki ana
elemanları temsil etmektedir ve JsonLogic kuralları Operation çeşitleri kullanılarak
oluşturulmaktadır. Üstmodelde bu varlığın Logic, Boolean, Numeric, Array ve String
isimli beş alt tipi bulunmaktadır. Bu tiplerin de yine üstmodelde üst sınıf – alt sınıf
kurgusu ile oluşturulan çeşitli alt tipleri vardır.</p>
      <p>Boolean üst-varlığı adından anlaşılacağı üzere mantıksal doğru ve yanlış testleri
için modelde yer alır; or ve and alt-sınıflarına sahiptir. Logic’in tiplerini modelde if,
==, ===, !=, !==, ! ve !! varlıkları temsil eder. if klasik programlama dillerinde
olduğu gibi bir koşulu ve bu koşulun doğru veya yanlış olması durumunda karşılık
gelen işlemleri JsonLogic’te göstermek için kullanılır. Logic’in geriye kalan diğer alt
sınıfları ise girdi yapılan veriler arasındaki eşitlik ya da eşitsizlik durumlarını kontrol
etmeyi sağlar.</p>
      <p>Şekil 1. JsonLogic yapıları için bir üstmodel</p>
      <p>Tablo 1. AccessingData çeşitleri ile hazırlanan bazı JsonLogic kural örnekleri
JsonLogic
Üstvarlığı
var
missing
missing_some
Örnek Kural
{"var":"name"}
{"missing":["name",
“count”]}
{"missing_some":[3,
"age", "count", "Tel"]]}</p>
      <p>Örnek Veri
"age",
{"name":"Ali","age":32}
{"name":"Ali"}
["name",
{"name":"Ali", "age":32}
İşletim
Sonucu
Ali
["age",
"count"]
[]</p>
      <p>Numeric işlem türleri (min, max, between, vb.) girdiler arasındaki büyüklük,
küçüklük gibi durumların kontrolünü ve bir veri kümesindeki en küçük veya en büyük
verinin belirlenmesini sağlayan yapıların JsonLogic’te oluşturulmasını sağlar. Veriler
üzerindeki cebirsel işlemler Numeric’in diğer bir alt sınıfı olan Arithmetic tipindeki
üstvarlıklar ile modelde temsil edilmiştir. map, reduce, merge gibi Array işlemleri
diziler şeklinde ifade edilen veri kümleri üzerine uygulanır. Örneğin map bir dizi
içerisindeki her elemana bir işlemin (toplama, çarpma, vb.) uygulanmasını sağlarken
reduce bir dizideki tüm elemanları tek bir elemana indirger. merge ise birden fazla
diziyi birleştirir.</p>
      <p>Üstmodelde mantık kurallarında yer alan kelimeler üzerindeki işlemleri String
varlığının alt sınıfları temsil etmektedir. Her bir in varlığı tanmlanan bir kuralda veri
konumunda olan ilk argümanın “String” tipinde olan ikinci argümanın içinde olup
olmamasını test eder. Argümanların birleştirilmesi cat işlemi ile sağlanır. “String”
parçalarını elde etmek için substr işlemleri uygulanır. Tablo 2’de bazı Operation
çeşitlerinin JsonLogic iş kuralı cümlelerinin oluşturulmasında kullanımı ve örnek
veriler üzerinde bu kuralların işletilmesi sonuçları listelenmiştir.</p>
      <p>Tablo 2. Operation çeşitleri ile hazırlanan bazı JsonLogic kural örnekleri
JsonLogic Üstvarlığı
ve Alt sınıfı
Logic if
Örnek Kural
{"if" : [{"==" : [{“var”:
“count”}, 3]}, send email, send
sms]}
{"!=":[{“var”:“name”},"Ali"]}</p>
      <p>
        Son olarak, geliştirilen üstmodelde yer alan Log üstvarlığı örnekleri (ing. instance)
özellikle karmaşık JsonLogic kurallarının kontrolü ve hata ayıklamasında çıktıların
Boolean
Numeric
Array
String
==, ===,
!=, !==,
!, !!
or ve and
&gt;, &gt;=, &lt;
ve &lt;=
between
max ve
min
+ , -, *, /
ve %
all,
some,
none
merge
in
in
cat
substr
İşletim
Sonucu
send sms
true
false
false
true
-3
12
true
true
true
"Ali"
[3,"Ali",32]
{"and":[{"==":[{“var”:“count},3
]}, {"==" : [{“var”: “name”},
Ali]}, {"&lt;": [{“var”: “age”},
30]}]}
{"&lt;=" : [{“var”: “age”}, 30]}
{"&lt;": [30, [{“var”: “age”}, 30],
40]} // 30&lt;age&lt;40
{"min":[
        <xref ref-type="bibr" rid="ref2">-1,2,-3</xref>
        ]}
{"+":[
        <xref ref-type="bibr" rid="ref2 ref2 ref2 ref3 ref3">2,3,2,3,2</xref>
        ]}
{"none":[[
        <xref ref-type="bibr" rid="ref1 ref2 ref3">3,2,1</xref>
        ],{"&gt;":[1,{"var":"
"}, 5]} ]}
{"merge":[{"var":"count"},{"var
" : "name"},{"var" : "age"}]}
{"in":["Ali",["Ahmet", "Ayşe",
"Ali", "Gül"] ]}
{"in":["bahar","baharmevsimi"]}
{"substr": [" Email sent by Ali",
15]}
null
null
null
null
null
{"conut":3,
“name”:Ali,“age”
:32}
{“age”:32}
{“age”:32}
{"count":3,
"name":"Ali","ag
e":32}
null
görüntülenmesi amacıyla kullanılmaktadır. Mantıksal doğru / yanlış, sayı veya kelime
tiplerinde çıktılar üretebilir.
4
      </p>
    </sec>
    <sec id="sec-4">
      <title>Görsel Somut Sözdizimin Oluşturulması</title>
      <p>Bir önceki bölümde tanıtılan üstmodele uygun olarak yazılım geliştiricilerin
JsonLogic tabanlı olarak iş süreci kurallarını görsel bir şekilde oluşturması için bu
çalışmada aynı zamanda görsel bir somut sözdizim geliştirilmiştir.</p>
      <p>
        Alana-özgü diller (ing. Domain-specific language) (DSL) [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] oluşturulurken
genellikle bir üstmodele bağlı dil soyut sözdizimini türetme ve devamında bu
sözdizimdeki kavramlar ve bunların örnek modeller üzerindeki temsilleri arasında bir
eşleme sağlayan bir somut sözdizimin geliştirilmesi süreçleri izlenmektedir. Bizim de
bu çalışmada amacımız JsonLogic ile iş süreci kurallarının geliştirilmesinde
kullanılabilecek bir DSL’i oluşturmaktır. Geliştirilen somut sözdizim JsonLogic
öğelerinin kodlanması yerine görsel olarak modellenmesini sağladığından ortaya
konan dilin DSL’den ziyade bir alana-özgü modelleme dili (ing. domain-specific
modeling language) (DSML) ([
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]) olduğunu belirtmekte yarar vardır.
      </p>
      <p>
        3. bölümde verilen üstmodel OMG MDA’ine [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] göre platforma-özel modelleme
seviyesinde bulunmaktadır ve JsonLogic için geliştirdiğimiz DSML’in soyut
sözdizimini oluşturmaktadır. DSML’in kullanılmasını sağlayan somut sözdizim
MetaEdit+ [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] veya Eclipse tabanlı GMF [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ], Sirius [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] gibi model-güdümlü
yazılım geliştirme ortamları kullanılarak oluşturulabilir. Daha önce bu ortamları
kullanarak gerçekleştirilen DSL / DSML geliştirme çalışmalarımızdan (örneğin
[2123]) MOF uyumlu soyut sözdizimlerin bu araçların bünyesine kolaylıkla dahil
edilebilindiğini ve aynı entegre ortamlar içerisinde DSML semantiklerinin de
tanımlanabildiğini gözlemledik. Öte yandan modellemenin web tabanlı ve çevrimiçi
yapılması ve yazılım modellerine birden çok kullanıcı tarafından müdahele gibi
ihtiyaçlar düşünüldüğünde sözü edilen bu araçlar çoğu zaman yetersiz kalmaktadır ve
kullanımları karmaşıklaşmaktadır. Tüm bu ihtiyaçlar göz önünde bulundurularak
JsonLogic DSML’inin somut sözdizimi bu çalışmada Blockly [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ] görsel blok
programlama ortamı üzerine inşa edilmiştir. Blocly ([
        <xref ref-type="bibr" rid="ref24">24-25</xref>
        ]), Scratch [26], Snap! [27]
gibi programlama kütüphaneleri ve araçları son yıllarda giderek popülerleşen blok
tabanlı görsel programlamanın önemli temsilcileridir.
      </p>
      <p>Blockly’de yazılım bileşenleri birbirine bağlanabilen görsel bloklar şeklinde
tasarlanabilir. Web tabanlı ortamı içerisinde bileşenler bir paletten sürükle-bırak
tekniği ile modelleme ortamına taşınabilir ve birer blok olarak modellenebilir. Bloklar
halinde oluşturulan bu yazılım bileşenleri Blockly’nin destek verdiği Python,
JavaScript, PHP ve Lua gibi dillerde implementasyona çevrilebilir [28]. Ayrıca JSON
yapısını üretmek üzere bir Blockly kütüphanesi de bulunmaktadır [29]. Tüm bu
özellikler Blockly’nin bu çalışmada JsonLogic DSML’inin görsel modelleme
ortamını geliştirmek için kullanılmasına neden olmuştur.</p>
      <p>Somut sözdizimin oluşturulması için bir önceki bölümde verilen JsonLogic
üstmodeli varlıklarını ve ilişkilerini gösterecek görsel notasyonlar belirlenmiştir. Bir
kısım üstmodel kavramı için doğrudan bir görsel notasyon (blok sembolü)
belirlenirken geriye kalan kavramlar, blok sembolü
kapsayacağı şekilde model ortamına dahil edilmektedir.</p>
      <p>DSML’inin görsel somut sözdizimi için bu çalışma
notasyonların bir kısmı görülmektedir.
türetilmiş kavramların
Tablo 3’te JsonLogic
kapsamında belirlenen
Tablo 3. JsonLogic DSML’i somut sözdiziminin bazı kavramları ve gösterimleri
Kavram</p>
      <p>Gösterim</p>
      <p>Kavram</p>
      <p>Gösterim</p>
      <p>Kavram</p>
      <p>Gösterim
if
==
!!
and
max
min</p>
      <p>less
between
var
Şekil 2’de JsonLogic tabanlı iş süreci kurallarının model-güdümlü
geliştirilmesini sağlayan web tabanlı aracımıza ait bir ekran görüntüsü verilmiştir.
Blockly ortamı üzerinde geliştirilen araçta sol tarafta JsonLogic somut sözdizimi için
belirlediğimiz görsel notasyonların listesi bir palet içerisinde bulunmaktadır. Palet
içerisinde benzer anlama sahip modelleme bileşenleri aynı kategori içerisine
alınmıştır. Bir yazılım geliştirici bu paletten JsonLogic model elemanlarını
sürüklebırak yöntemi ile araçta orta kısımda bulunan modelleme alanına taşıyarak bu
elemanlardan istenilen sayıda örnekler (ing. instance) oluşturabilir.</p>
      <p>Geliştirilen araç üzerinde JsonLogic iş kuralı modelleri oluşturulurken bir takım
statik semantik kontrolleri de otomatik olarak gerçekleştirilmektedir. Bölüm 3’te
verilen JsonLogic üstmodeli varlıkları ve ilişkileri için tanımlı olan bazı kısıtlara göre
kontroller gerçekleştirilmekte ve somut sözdizim gösterimi farklılaşmaktadır.
Örneğin, “if” kavramına ait görsel Blockly notasyonunun girişi birden fazla
olabileceği için “+” operatörü kullanılarak istenen sayıda girdi eklenebilir. Ancak
kıyaslama kavramlarının (örneğin “==, !, !!”) girdisi maksimum iki ile sınırlı olduğu
için modelleme aracı bir geliştiricinin sadece ikili-giriş blokla gösterim yapmasına
izin vermektedir. Modelleme sırasında girdi tipi kontrolleri de (“var, string, number,
array, true ve false” gibi) araç tarafından yapılmaktadır. Örneğin, “var” kavramı bir
girişli bloktur ve kullanıcıdan gelen veriyi tanımlar. Diğer girdiler, sonlu bir bloktan
tanımlanır ve hiç giriş kısmı yoktur. Bir diğer statik semantik kontrol örneği
“between” bileşeni için verilebilir. “between”’in üstmodeldeki tanımlamasına göre
üçten fazla girdisi olamayacağı için araç bu bileşenin örneklerinin maksimum üç
girişli blok ile modele dahil edilmesine izin verir. Ayrıca “between” kavramının
girdileri sadece “number” ve “var” olabilir ve modelleme alanında blok tasarımları
yapılırken “between” örnekleri için sadece bu tiplerde girdilerin tanımlanmasına izin
verilir. Söz konusu bu kısıt kontrollerinin modelleme sırasında otomatik olarak
gerçekleştirilmesi geliştiricilerin daha doğru JsonLogic kurallarını elde etmelerine
yardımcı olmaktadır.</p>
      <p>Şekil 2. JsonLogic modelleme ortamından bir görünüm
5</p>
    </sec>
    <sec id="sec-5">
      <title>JsonLogic Kurallarının Otomatik Üretilmesi</title>
      <p>Bir DSML ile modellenen yazılımların işletilebilir kodlarının elde edilmesi için bir
dizi dönüşüm kuralına dayalı bir semantik kurgulanabilir [30]. Bu çalışmada
JsonLogic DSML’i ile hazırlanan modellerden JsonLogic yapılarının ve iş süreci
kurallarının otomatik üretilmesi için bir işletimsel semantik de tanımlanmıştır.
Hazırlanan iş kuralı modelleri bloklarla modellendikten sonra bu modeller üzerinde
işletilen modelden metne kurallar ilgili modellere karşılık gelen JsonLogic’in
otomatik üretilmesini sağlarlar. Bu amaçla bir dizi dönüşüm kuralını JavaScript dilini
kullanarak hazırladık. Örneğin aşağıdaki JavaScript dönüşüm kodu geliştirilen bir
Blockly JsonLogic modeli üzerindeki her bir “if” örneği için karşılık gelen JsonLogic
yapısını üretmektedir:</p>
      <p>Bir yazılım geliştiricinin JsonLogic DSML’ini kullanarak hazırladığı iş kuralı
modellerinden JsonLogic kodlarını üretmek için bu JavaScript kodlarını, bir başka
deyişle DSML’imizin işletimsel semantiğinin çalışma mekanizmasını bilmesine gerek
yoktur. Geliştirici iş kurallarına ait görsel modelini hazırlaması yeterli olmaktadır.
Model hazırladıktan sonra aracın Şekil 2’de gösterilen sağ tarafında bu modele ait
otomatik üretilen JsonLogic geliştiriciye gösterilmektedir.
6</p>
    </sec>
    <sec id="sec-6">
      <title>Durum Çalışması</title>
      <p>Hazırlanan JsonLogic DSML’inin ve bunu destekleyen modelleme aracının
kullanımını örneklemek amacıyla bu bölümde Hermes İletişim [31] firması
bünyesinde geliştirilmekte olan Avukat İş Takip Asistanı adlı iş süreci yönetim
yazılımının içerdiği kurallardan birinin model-güdümlü geliştirilmesi göz önüne
alınacaktır. Söz konusu yazılım borç toplayıcı avukatların karmaşık iş süreçlerinin
daha kolay bir şekilde oluşturulması ve yönetilmesi amacıyla kullanılmaktadır. Bir
borç toplayıcı avukat başka kuruluşlara ve/veya kişilere borcu olan bir borçlunun
borçlarını toplama ve bunları asıl alacaklıya geri verme ile yükümlüdür. Borç
toplayıcı avukat, borçluya ulaşmak için telefon görüşmesi, SMS, sesli mesaj veya
ulusal kimlik ile SMS gönderme gibi yolları kullanabilmektedir. Ancak bir borçluya
ulaşmak için, yalnız bu iletişim vasıtalarıyla kalmayıp faklı yollardan, örneğin
borçlunun kefiline, annesine, babasına veya diğer akrabalarına ulaşmaya da
çalışmaktadır. Böyle bir iş sürecinin yönetimi, ilgili iş süreci kuralları iyi
kurgulanmadığında çok karmaşık bir hale gelmektedir.</p>
      <p>Durum çalışmasında borç toplayıcı avukat tarafından tanımlanan bir borçluya
ulaşma sürecinin yönetimi için işletilmesi gereken bir kuralın oluşturulması örnek
olarak verilecektir. Bu kural ve karşılık gelen iş tanımına göre, üç gün boyunca
borçlunun sabit telefonuna ulaşılmaya çalışılır. Eğer borçluya ulaşılamıyorsa, bu sefer
üç gün boyunca borçlunun kefili veya akrabasının telefonuna ulaşılmaya çalışılır.
İlgili kuralın formal tanımı aşağıda verilmiştir. Firmada bu iş kurallarını hazırlayan
yazılım geliştiriciler bu kuralın ilgili iş süreci yönetimi yazılımının içerdiği kuralların
en basitlerinden biri olmasına rağmen JsonLogic notasyonu ile hatasız bir şekilde
hazırlanmasının zahmetli ve zaman alıcı olduğunu bildirmişlerdir.</p>
      <p>Kural: {"if" : [{"&lt;" : [{"var" : "count"},3]},{"and" : [{"!=" : [{"var" :
"tel"},null]},{"==" : [{"var" : "gsm"},null]}]},{"or" : [{"and" : [{"!=" : [{"var" :
"kefilTel"},null]},{"==" : [{"var" : "kefilGsm"},null]}]},{"and" : [{"!=" : [{"var" :
"akrabaTel"},null]},{"==" : [{"var" : "akrabaGsm"},null]}]}]}]}</p>
      <p>Şekil 3’teki ekran görüntüsünde, yukarıda anlatılan borçluya ulaşma iş süreci
kuralının JsonLogic DSML’inin modelleme aracında oluşturulması gösterilmektedir.
Modele karşılık gelen ve otomatik olarak üretilen JsonLogic yapılarından bir bölüm
de şekilde sağ tarafta görülmektedir.</p>
      <p>Gerçekleştirilen durum çalışması aynı zamanda JsonLogic için geliştirilen bu
modelleme ortamının, Blockly’de sadece JSON modellemeye imkan veren [29]’daki
araçla kıyaslanması ve kullanılabilirliğinin değerlendirilmesi açısından da faydalı
olmuştur. Aynı iş kuralı [29]’daki modelleme aracı kullanılarak oluşturulmaya
çalışılmıştır ancak JsonLogic için hazır yapılar yer almadığından ortaya çıkan blok
yapısı, modeldeki “operation” örnekleri göz önüne alındığında, Şekil 3’teki modele
kıyasla yaklaşık 3 kat daha büyük olmuştur. Bu model yer kısıtları nedeniyle bu
bildiride gösterilememiştir. Örneğin [29]’daki araç kullanılarak modelleme yapılmak
istendiğinde Şekil 3’teki iş kuralı modelinin içerdiği her bir “==” JsonLogic yapısı
için en az 2 adet JSON bloğunun hazırlanması gerekmiştir.</p>
      <p>İlgili Çalışmalar
Literatürde yer alan ilgili çalışmalar kural tabanlı iş süreçlerinin model-güdümlü
geliştirilmesi ve JSON/JsonLogic veri ve mantık paylaşımı formatları ile ilgili olarak
iki kategoride ele alınabilir.</p>
      <p>
        İş süreçlerinin otomatik olarak oluşturulması ve yönetilmesinde, iyi bilinen BPMN
[32], YAWL [33] gibi dillerin notasyon ve yapısallığını kullanan çalışmaların yanında
başta model-güdümlü mimarinin kullanıldığı model-güdümlü geliştirme ve DSL /
DSML üretme çalışmaları da giderek popülerleşmektedir. Örneğin Brambilla ve
Pietro [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] yazılım uygulamalarının özellikle kullanıcı etkileşimlerinin tasarlanmasını
ve akışların modellenmesini sağlayan IFML isimli bir dili önermekte ve bu dilin bazı
iş alanlarında kullanımını örneklemektedirler. “Back-end” sistemler ile etkileşimde
bulunan form-tabanlı ya da veri-tabanlı iş uygulamalarının model-güdümlü
geliştirilmesi [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]’da anlatılmaktadır. Benzer şekilde iş uygulamalarının
uygulamayaözel fonksiyonlarının IIS*CFuncLang isimli bir DSL ve araç seti ile
platformbağımsız bir seviyede nasıl tanımlanacağı ve otomatik üretileceği bir eğitim bilgi
sisteminin geliştirilmesi durum çalışması üzerinden [34]’te anlatılmıştır. BPMN
modellerinin İş Süreci Çalıştırma Dili (BPEL) modellerine eşlenmesi ve BPMN
modellerindeki güncellemelerin BPEL modellerine yansıtılması için bir metot [35]’te
sunulmuştur.
      </p>
      <p>
        MDD4CCA isimli DSL [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] bütünleşik içerik uygulamalarının form, gezinme, iş
akışı, içerik, vb. bakışaçıları kullanılarak model-güdümlü geliştirilmesini
sağlamaktadır. Benzer şekilde Bicevska ve ark. [36] iş süreçlerinin modellenmesini
bir DSL kullanımı üzerinden sağlamıştır ve modellerden iş süreçlerinin çalıştırılma
tanımları olay tabanlı mimariyi de içerecek şekilde üretilebilmiştir. Yakın zamanda
Ferry ve ark. [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] bir “Hizmet olarak Altyapı” (ing. Infrastructure as a Service) (IaaS)
için bulut uygulamalarının oluşturulması ve bulut servisi sağlayıcılarından bağımsız
olarak bu uygulamaların yönetilmesi için bir model-güdümlü yaklaşım sunmuşlardır.
Bir diğer DSL olan MAML [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] farklı mobil uygulamalar için iş süreçlerinin
modelgüdümlü geliştirilmesini ve bu uygulamalar için yerel kaynak kodların otomatik
üretilmesi sağlamaktadır. Son olarak [37]’de servis-yönelimli mimari için iş
süreçlerinin yönetimini sağlayan ve çeşitli soyutlama seviyelerine (örneğin mantıksal
veya teknik) göre bu mimariye ait yazılım tasarımlarının geliştirilmesini
modelgüdümlü mühendislik temelleri ile gerçekleştirmeye izin veren bir yaklaşım
tanıtılmıştır.
      </p>
      <p>Yukarıda değinilen tüm bu iş akışlarının model-güdümlü geliştirilmesi ve iş akışı
DSL’lerini oluşturma çalışmalarında iş akışlarının koreografisi ve yönetilmesi için
gerekli olan iş mantığının ve kısıtlarının üretilen çözüme özel bir şekilde sunulduğu
ve bu spesifik çözümlerin JSON veri değişimi formatının kullanımını ve bizim
çalışmamızdaki gibi JsonLogic’e dayalı iş mantığının modellenmesini
desteklemedikleri görülmektedir.</p>
      <p>
        JSON göz önüne alındğında araştırmacıların daha çok bu veri değişim formatının
veritabanları vb. kaynaklardan veri çekmede kullanımı üzerine çalışmalar yürüttüğü
görülmektedir. Örneğin Bourhis ve ark. [38] JSON dokümanları için yapısal bir
model önermişlerdir ve bu modeli kullanarak JSON dokümanlarında gezinmeyi
sağlayacak bir sorgu dili tanımlamışlardır. Özellikle üstveri tanımı eksikliğinden yola
çıkılarak [39]’da JSON için bir şema tanımlanmaya çalışılmış; bu şemanın JSON
dokümanlarının geçerlenmesinde kullanımı tarif edilmiştir. JSON verilerinin daha
etkin ve paralel bir şekilde sorgulanabilmesi amacıyla [40]’da bir sorgu işlemcisi
geliştirilmiştir. Çok büyük veri setlerinde bile veri yükleme maliyetlerinin önerilen
işlemcinin içerdiği yeniden yazma kuralları ile düşürüldüğü gösterilmiştir. JSON
üzerine gerçekleştirilen bu çalışmaların hiçbirinde JSON yapılarının görsel
modellenmesi ve bu modeller üzerinden otomatik üretilmesi göz önüne alınmamıştır.
Bizim çalışmamıza benzer bir şekilde Blockly [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ] altyapısı ile JSON yapılarını
modellemeyi sağlayan bir araç [29]’da bulunmaktadır. Ancak bu araçta da JsonLogic
mantığı desteklenmemektedir. Bu bildiride tanıtılan model-güdümlü JsonLogic
geliştirme mimarisinin hem JSonLogic’in üstmodelini ilk kez tanımlama hem de bu
üstmodele dayalı olarak JsonLogic için yeni bir DSML sunma özellikleri ile JSON ve
JsonLogic üzerine gerçekleştirilen tüm bu çalışmalara katkı verdiğine inanılmaktadır.
8
      </p>
    </sec>
    <sec id="sec-7">
      <title>Sonuç</title>
      <p>İş süreci kurallarının JsonLogic ile oluşturulması sırasında kullanılabilecek bir
modelleme dili ve bunu destekleyen bir yazılım aracı geliştirilmiştir. JsonLogic’in bir
MDA kapsamında platforma özel modelleme düzeyinde yer alabilecek bir üstmodeli
türetilmiş; bu üstmodeldeki varlık ve ilişkilere dayan bir görsel somut sözdizim
oluşturulmuştur. JavaScript ile yazılan ve modelden metne dönüşümlere dayalı bir
işletimsel semantik sayesinde de modellenen iş kurallarına karşılık gelen JsonLogic
yapıları otomatik olarak üretilebilmektedir. Tüm bu sözdizim ve semantiklerin
birleşimi ile ortaya konulan JsonLogic DSML’ini yazılım geliştiricilerin
kullanabilmesi için Blockly üzerine inşa edilmiş web tabanlı bir modelleme aracı da
geliştirilmiştir. Sunulan modelleme ortamının örnek bir durum çalışması üzerinden
gerçekleştirilen değerlendirmesinde salt JSON ile modelleme imkanı sunan [29]’daki
araca göre ilgili iş kurallarının daha az görsel bileşen ile daha kolay bir şekilde
oluşturulabildiği gözlenmiştir.</p>
      <p>JsonLogic DSML’inin görsel sözdiziminin kullanışlılığının geliştirilmesi için
dildeki notasyonların ifade gücü ve kullanıcılar tarafından benimsenmesi gibi
açılardan değerlendirilmesi yakın zamanda hedeflenen çalışmalarımızdan biridir. Bu
geliştirmeyi yapmak için Moody’nin “notasyonların fiziği” prensiplerine [41] göre
mevcut JsonLogic DSML’inin bir değerlendirmesi planlanmaktadır. DSML’in
JsonLogic yapılarını otomatik üretme ve iş kuralı geliştirme zamanını indirgeme
açılarından niceliksel bir değerlendirmesinin çoklu durum çalışması üzerinden
yapılması da ileriye yönelik planladığımız çalışmalar arasındadır.</p>
    </sec>
    <sec id="sec-8">
      <title>Kaynaklar</title>
      <p>25. Pasternak E., Fenichel, R., Marshall, A. N.: Tips for creating a block language with
blockly. In: 2017 IEEE Blocks and Beyond Workshop, pp. 21-24. IEEE, Raleigh, NC,
USA (2017).
26. Resnick, M., Maloney, J., Monroy-Hernandez, A., Rusk, N., Eastmond, E., Brennan, K.,
Millner, A., Rosenbaum, E., Silver, J., Silverman, B., Kafai, Y.: Scratch: programming for
all. Communications of the ACM 52(11), 60-67 (2009).
27. Snap!, https://snap.berkeley.edu/, son erişim: 15/11/2018.
28. Blockly, https://developers.google.com/blockly/, son erişim: 15/11/2018.
29. An editor for JSON structures, http://ens-lg4.github.io/MenulyJSON/, son erişim:
15/11/2018.
30. Bryant B. R., Gray, J., Mernik, M., Clarke, P. J., France, R. B., Karsai, G.: Challenges and
Directions in Formalizing the Semantics of Modeling Languages. Computer Science and
Information Systems 8(2), 225-253 (2011).
31. Hermes İnternet İletişim, https://www.hermesiletisim.net/, son erişim: 15/11/2018.
32. Chinosi, M., Trombetta, A.: BPMN: An introduction to the standard. Computer Standards
&amp; Interfaces 34(1), 124-134 (2012).
33. van der Aalst, W. M. P., ter Hofstede, A. H. M.: YAWL: yet another workflow language.</p>
      <p>Information Systems 30(4), 245-275 (2005).
34. Popovic, A., Lukovic, I., Dimitrieski, V., Djukic, V.: A DSL for modeling
applicationspecific functionalities of business applications. Computer Languages, Systems &amp;
Structures 43, 69-95 (2015).
35. Radhakrishnan, G., Liu, L., Aggarwal, A., Saxena, V.: Roundtrip merge of bpel processes
and bpmn models. US patent no: US20100057482A1.
36. Bicevska, Z., Bicevskis, J., Karnitis, G.: Models of Event Driven Systems.</p>
      <p>Communications in Computer and Information Science 615, 83-98 (2016).
37. Benaben, F., Truptil, S., Mu, W., Pingaud, H., Touzi, J., Rajsiri, V., Lorre, J. P.:
Modeldriven engineering of mediation information system for enterprise interoperability.</p>
      <p>International Journal of Computer Integrated Manufacturing 31(1), 27-48 (2018).
38. Bourhis, P., Reutter, J. L., Suarez, F., Vrgoc, D.: JSON: Data model, Query languages and
Schema specification. In: 36th ACM SIGMOD-SIGACT-SIGAI Symposium on Principles
of Database Systems, pp. 123-135. ACM, Chicago, IL, USA (2017).
39. Pezoa, F., Reutter, J. L., Suarez, F., Ugarte, M., Vrgoc, D.: Foundations of JSON Schema.</p>
      <p>In: 25th International Conference on World Wide Web, pp. 263-273. ACM, Montreal,
Quebec, Canada (2016).
40. Pavlopoulou, C., Preston Carman, Jr, E., Westmann, T., Carey, M. J., Tsotras, V. J.: A
Parallel and Scalable Processor for JSON Data. In: 21st International Conference on
Extending Database Technology, pp. 576-587. Vienna, Austria (2018).
41. Moody, D.: “The “physics" of notations: toward a scientic basis for constructing visual
notations in software engineering. IEEE Transactions on Software Engineering 35(6),
756779 (2009).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>van der Aalst</surname>
            ,
            <given-names>W. M. P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>ter Hofstede</surname>
            ,
            <given-names>A. H. M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weske</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <source>Business Process Management: A Survey. Lecture Notes in Computer Science</source>
          <volume>2678</volume>
          ,
          <fpage>1</fpage>
          -
          <lpage>12</lpage>
          (
          <year>2003</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          :
          <article-title>From process logic to business logic-A cognitive approach to business process management</article-title>
          .
          <source>Information &amp; Management</source>
          <volume>43</volume>
          (
          <issue>2</issue>
          ),
          <fpage>179</fpage>
          -
          <lpage>193</lpage>
          (
          <year>2006</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3. JSON, https://www.json.org/, son erişim:
          <volume>15</volume>
          /11/
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4. JsonLogic, http://jsonlogic.com/, son erişim:
          <volume>15</volume>
          /11/
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>IBM</given-names>
            <surname>Business Process</surname>
          </string-name>
          <string-name>
            <surname>Manager</surname>
          </string-name>
          , https://www.ibm.com/us-en/marketplace/businessprocess-manager, son erişim:
          <volume>15</volume>
          /11/
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Camunda</surname>
            <given-names>BPM</given-names>
          </string-name>
          :
          <article-title>Workflow and Decision Automation Platform</article-title>
          , https://camunda.com/, son erişim:
          <volume>15</volume>
          /11/
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Perez</surname>
            ,
            <given-names>J. M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ruiz</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Piattini</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>MDE for BPM: A Systematic Review</article-title>
          .
          <source>Communications in Computer and Information Science</source>
          <volume>10</volume>
          ,
          <fpage>127</fpage>
          -
          <lpage>135</lpage>
          (
          <year>2006</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Brambilla</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fraternali</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Interaction Flow Modeling Language: Model-Driven UI Engineering of Web and Mobile Apps with IFML</article-title>
          . Morgan Kaufmann, Waltham, MA, USA (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Majchrzak</surname>
            ,
            <given-names>T. A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ernsting</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kuchen</surname>
          </string-name>
          , H.:
          <article-title>Achieving business practicability of modeldriven cross-platform apps</article-title>
          .
          <source>Open Journal of Information Systems</source>
          <volume>2</volume>
          (
          <issue>2</issue>
          ),
          <fpage>3</fpage>
          -
          <lpage>14</lpage>
          (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Challenger</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Erata</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Onat</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gezgen</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kardas</surname>
          </string-name>
          , G.:
          <article-title>A Model-Driven Engineering Technique for Developing Composite Content Applications</article-title>
          .
          <source>In: Symposium on Languages, Applications and Technologies</source>
          , pp.
          <volume>11</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>11</lpage>
          :
          <fpage>10</fpage>
          .
          <string-name>
            <surname>Maribor</surname>
          </string-name>
          ,
          <string-name>
            <surname>Slovenia</surname>
          </string-name>
          (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Ferry</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Almeida</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Solberg</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>The MODAClouds Model-DrivenDevelopment</article-title>
          . In: Di Nitto E.,
          <string-name>
            <surname>Matthews</surname>
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Petcu</surname>
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Solberg</surname>
            <given-names>A</given-names>
          </string-name>
          . (eds):
          <article-title>Model-Driven Development and Operation of Multi-Cloud Applications</article-title>
          . pp.
          <fpage>23</fpage>
          -
          <lpage>33</lpage>
          , SpringerBriefs in
          <source>Applied Sciences and Technology</source>
          . Springer, Cham (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Rieger</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kuchen</surname>
          </string-name>
          , H.:
          <article-title>A process-oriented modeling approach for graphical development of mobile business apps</article-title>
          .
          <source>Computer Languages, Systems &amp; Structures</source>
          <volume>53</volume>
          ,
          <fpage>43</fpage>
          -
          <lpage>58</lpage>
          (
          <year>2018</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>OMG</given-names>
            <surname>Meta-object Facility</surname>
          </string-name>
          , https://www.omg.org/mof/, son erişim:
          <volume>15</volume>
          /11/
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <given-names>OMG</given-names>
            <surname>Model-driven Architecture</surname>
          </string-name>
          , http://www.omg.org/mda/, son erişim:
          <volume>15</volume>
          /11/
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15. Eclipse Modeling Framework Technology, http://www.eclipse.org/modeling/emft/, son erişim:
          <volume>15</volume>
          /11/
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Fowler</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Domain-Specific Languages</surname>
          </string-name>
          .
          <string-name>
            <surname>Addison-Wesley</surname>
            <given-names>Professional</given-names>
          </string-name>
          , Westford, MA, USA (
          <year>2011</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Gray</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tolvanen</surname>
            ,
            <given-names>J-P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kelly</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gokhale</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Neema</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sprinkle</surname>
          </string-name>
          , J.:
          <article-title>Domain-Specific Modeling</article-title>
          . In Fishwick, P. A. (ed):
          <source>Handbook of Dynamic System Modeling</source>
          . pp.
          <fpage>1</fpage>
          -
          <lpage>7</lpage>
          , CRC Press, Boca Raton, FL, USA (
          <year>2007</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18. MetaEdit+
          <article-title>Domain-Specific Modeling (DSM) environment</article-title>
          , https://www.metacase.com/products.html, son erişim:
          <volume>15</volume>
          /11/
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19. Eclispe Graphical Modeling Framework, http://www.eclipse.org/modeling/gmp/, son erişim:
          <volume>15</volume>
          /11/
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20. Eclipse Sirius, https://www.eclipse.org/sirius/, son erişim:
          <volume>15</volume>
          /11/
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Saritas</surname>
            ,
            <given-names>H. B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kardas</surname>
          </string-name>
          , G.:
          <article-title>A model driven architecture for the development of smart card software</article-title>
          .
          <source>Computer Languages, Systems &amp; Structures</source>
          <volume>40</volume>
          (
          <issue>2</issue>
          ),
          <fpage>53</fpage>
          -
          <lpage>72</lpage>
          (
          <year>2014</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Kardas</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tezel</surname>
            ,
            <given-names>B. T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Challenger</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Domain-specific modelling language for beliefdesire-intention software agents</article-title>
          .
          <source>IET Software</source>
          <volume>12</volume>
          (
          <issue>4</issue>
          ),
          <fpage>356</fpage>
          -
          <lpage>364</lpage>
          (
          <year>2018</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Challenger</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tezel</surname>
            ,
            <given-names>B. T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Alaca</surname>
            ,
            <given-names>O. F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tekinerdogan</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kardas</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>Development of semantic web-enabled BDI multi-agent systems using SEA_ML: an electronic bartering case study</article-title>
          .
          <source>Applied Sciences</source>
          <volume>8</volume>
          (
          <issue>5</issue>
          ),
          <fpage>1</fpage>
          -
          <lpage>32</lpage>
          (
          <year>2018</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Fraser</surname>
          </string-name>
          , N.:
          <article-title>Ten things we've learned from Blockly</article-title>
          .
          <source>In: 2015 IEEE Blocks and Beyond Workshop</source>
          , pp.
          <fpage>49</fpage>
          -
          <lpage>50</lpage>
          . IEEE, Atlanta,
          <string-name>
            <surname>GA</surname>
          </string-name>
          , USA (
          <year>2015</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>