|
Fonksiyon Türleri |
|
|
MoreMotion Application Studio ile uygulama geliştirirken değişik yerlerde ve farklı amaçlarla fonksiyonlar kullanırız. Başlangıçta nerede hangi tür fonksiyonların kullanılacağı biraz karışık görülebilir. Bu bölümün amacı zihinlerde oluşan bu karışıklığı gidermektir. Bir uygulama geliştirirken kullanılabilecek fonksiyonlar, türleri açısından üçe ayrılır 1. Derleme Zamanı Fonksiyonları: CScript Fonksiyonları ( % Fonksiyonlar) Sayfalar içinde kullanılan elemanların tüm özellikleri içinde kullanılabilirler. Baş taraflarında '%' karakteri bulunan bu fonksiyolar derleme sırasında işletilirler. Derleme işlemi tamamlandıktan sonra eleman özelliklerinde bu fonksiyonlardan eser kalmaz. Eğer, örneğin, bir metin elemanının "Değer" özelliğinde "Sayfa Adı: %vof(PAGE_NAME)" şeklinde bir metin varsa derleme işlemi sırasında %vof(PAGE_NAME) fonksiyonu çalışacak ve güncel sayfanın değerini döndürecektir. Sonuçta "Sayfa Adı: Ürünler" benzeri bir metin elde edilmiş olacaktır. Bakın Derleme Zamanı Fonksiyonları 2. Çalışma Zamanı Fonksiyonları: MScript Fonksiyonları ( @ Fonksiyonlar ) MScript fonksiyonları MoreMotion AF tarafından bir isteğin işlenmesi sırasında çalıştırılırlar. Herhangi bir metin içine gömülmüş olan MScript fonksiyonlarını çalıştırmak için, kendi yazdığımız Java sınıfları içinde de MoreMotion'in çözümleyicisini çağırabiliriz. Örnek: String sql = request.resolve(s); Benzer şekilde, MoreMotion AF, dinamik veritabanı sorgulamaları sağlamak için, veri kaynağı tanımlamaları içinde yer alan MScript fonksiyonlarını çözümler. Bakın MScript Fonksiyonları MScript Fonksiyonları nerelerde kullanılabilir?
SELECT * FROM musteriler WHERE NO = @vof(i:NO)
Bu örnekte, SQL ifadesi içinde yer alan @vof(i:NO) fonksiyonu SQL işletilmeden önce, "NO" adlı istek parametresinin değeri ile değiştirilecektir. MoreMotion Programlama Arayüzünü kullanarak MScript fonksiyonlarını çözümleme Eğer bir Aksiyon Servisi, Veri Servisi veya İşlem Sınıfı geliştiriyor isek, String nesneleri içinde yer alan MScript fonksiyonlarını MoreMotion programlama arayüzünü kullanarak çözümleyebiliriz. // Servis içinde String cozumlenmisMetin = request.resolve(metin);
// İşlem Sınıfı içinde String cozumlenmisMetin = resolve(str);
3. Dönüşüm Zamanı Fonksiyonları: XSL Fonksiyonları XSL Fonksiyonları XSL Dönüşümü sırasında harekete geçerler. Bu, bir isteğin yapılması ile başlayan sürecin son adımıdır.
MoreMotion Application Studio, eleman özellikleri içinde XSL foksiyonlarını kolaylıkla yazmayı sağlayan "$vof()" adında bir makro sağlar. Derleme işlemi sırasında gerçek XSL fonksiyonlarına dönüştürülen bu makro sayesinde daha okunaklı ve daha kısa tanımlamalar ile XSL fonksiyonları üretilebilir. Örnekler:
Aklımızda tutmamız gereken, gerek kendi yazdığımız XSL kodları, gerekse $vof() makrosu aracılığıyla üretilmiş olan XSL fonksiyonları yukarıda verilen adımların en sonunda, yani 4. adımda aktif hale geleceklerdir. Daha önce değil. Bu nedenle, aşağıdaki veritabanı sorgusu içinde $vof() makrosu yanlış kullanılmıştır ve sorgu hiç bir zaman bir sonuç kümesi döndürmeyecektir. select * from musteriler where AD = '$vof(AD)'
Tabi eğer, musteriler tablosu içinde AD alanını değeri "$vof(AD)" olan bir kayıt varsa durum değişir :)) Daha açık söylemek gerekirse, MScript kullanmamız gereken yerlerde XSL fonksiyonları kullanamayız.
Fonksiyonların İç İçe kullanımı MScript fonksiyonları ve XSL fonksiyonları beraberce kullanılamazlar ancak CScript fonksiyonları, MScript fonksiyonları ile veya XSL fonksiyonları ile birlikte kullanılablir. Aşağıdaki, geçerli bir kullanımdır. $vof(%vof(name))
%vof(name) bir CScript fonksiyonudur ve güncel elemanın adını döndürür. Eleman adının "EPOSTA" olduğunu varsayalım. %vof(name) çözümlendikten sonra geriye sadece $vof(EPOSTA) kalacaktır. $vof(EPOSTA) ise sonrasında <xsl:value-of select="EPOSTA"/> olarak açılacaktır. Bir başka örnek: Veritabanından bağımsız bir uygulama geliştirmek istediğimizi düşünelim. Bu nedene kullanılan veritabanı türünü kontrol edip sorgumuzu ona göre şekillendirmemiz gerekiyor. Bunu aşağıdaki gibi MScript fonksiyonları kullanarak yapabiliriz.
Aşağıdaki örnek ise bize daha iyi bir performans sağlayacaktır.
Birinci örnekte veritabanı kontrolu her defasında yapılmakta iken, ikinci örnekte sadece derleme sırasında yapılıyor. Sorgu içinde yer alan CScript fonksiyonları çözümlendikten sonra s:dbtye derleme parametresinin değerinin 'mysql' olduğunu varsayarsak, sonuç şöyle olacaktır: INSERT INTO orders (NAME) VALUES('@vof(i:NAME)') selecT LAST_INSERT_ID() as v:ORDER_ID;
Bakın Derleme Parametreleri.
|