Logo Objects Rest Service 1.7 versiyonu ile transaction desteği eklenmiştir. 

Transaction yapısı, RESTservisin arka planındaki Logo Objects entegrasyon katmanı üzerindeki nesne yapıları üzerinden sağlanmaktadır. Unity Application metotları manuel transaction yönetimine destek vermediği için transaction yapısına dahil edilmemiştir.

Transaction özelliği iki tip transaction yapısı ile hizmet vermektedir:

  • Virtual Transaction
    İlgili rest istekleri virtual transaction başlatılarak, transactional gönderildiğinde rest servis tarafında bir kuyrukta toplanır ve virtual transaction commit isteği servise gönderildiğinde toplu halde transactional olarak gerçekleştirilir ve işlemlerin sonuçları toplu halde döndürülür
  • Default Transaction (Önerilen)
    Transaction default olarak rest serviste başlatılır, ilgili transactiona dahil edilmek istenen işlemler gönderildikçe sonuçları döner fakat commit edilmez, rest servise commit ya da rollback istekleri gönderildiğinde ilgili işlemler commit edilir veya rollback edilir.

Transaction timeout süresi rest servis yönetim panelinde tanımlanmıştır varsayılan süre 2 dakikadır. Virtual transaction içinde aynı timeout süresi geçerli olmakla birlikte maksimum virtual transaction kuyruk boyutu 10 olarak tanımlanmıştır, aynı şekilde yönetim panelinde transactional işlem sayısı belirtilir.

 

Virtual Transaction


Virtual transaction başlatılması için http://localhost:32001/api/v1/transaction/begin?transactionType=1 çağrısı HttpGet metodu ile çaprılır. İlgili transaction virtual transaction ise query parametrelerinde ?transactionType=1 (Virtual) parametresi ile çağrılır. Çağrı sonucunda transaction için bir Guid veri sorgu sonucu olarak döner.

Virtual veya default transaction işlemlere dahil olarak çağrılarda tek yapılması gereken query parametrelerine ek olarak “transactionId=[TransactionGuid]’ bilgisinin parametre olarak geçilmesidir.


Örnek;

POST http://localhost:32001/api/v1/salesInvoices?transactionId=efe9f548-d96d-429f-acc0-51d28878a38a


Yukarıdaki virtual transaction örneğinde yapılan istekler kuyruğa alınarak işlem transactiona eklendi sonucu dönülerek herhangi bir sonuç nesnesi döndürülmeyecektir. Örnek istek ve response değeri;

Virtual transaction işlemlerini commit ya da rollback etmek için aşağıdaki şekilde POST gerçekleştirilmelidir.

Http://localhost:32001/api/v1/transaction/[TransactionGuid]/commit ya da

Http://localhost:32001/api/v1/transaction/[TransactionGuid]/rollback çağrıları HttpPost olarak çağrılarak gerçekleştirilir.

Virtual transaction herhangi bir hata alınmaması durumunda ilgili tüm işlemleri gerçekleştirir ve işlem sırası ile sonuç nesnelerini toplu olarak döndürür ve rest servisin arka planında veritabanına transactionı commit eder. Virtual transaction işlemi en son aşamaya gelinmeden veritabanında transaction başlatmaz verdiği transactionId guid bilgisi ilgili gerçekleştireceği kuyruğu saklayan key değeridir.

Virtual Transaction herhangi bir işlemde hata alması durumunda otomatik olarak açtığı veritabanı transactionı rollback eder ve hata mesajı ile birlikte transaction rollback edildiği bilgisini sorgu sonucunda döner. (Commit çağrısı için)

Virtual transaction rollback edildiğinde ise sadece hafızadaki kuyruk temizlenir ve herhangi bir veritabanı işlemi gerçekleştirilmez.

Virtual Transaction işlem sayısı yukarıda yönetim panelinde tanımlanan 10 işlem sayısı ile kısıtlıdır. (Önerilen işlem sayısı 10 olarak tanımlanmıştır)


Transaction Default (Önerilen Yöntem)


Transaction aynı virtual transaction işlemindeki gibi transaction url ile çağrılır tek fark transaction type verilmez. Varsayılan transaction tipi default transaction olarak tanımlanmıştır.


http://localhost:32001/api/v1/transaction/begin HttpGet yapılarak çağrılır ve ilgili transactionId guid alınır.

Aynı şekilde transactiona dahil edilmesi istenen işlemlerde query parametresi olarak ? veya &transactionId=[TransactionIdGuid] parametre olarak geçilerek işlemler çağrılır.

Virtual transaction işlemlerinden farklı olarak transactional olarak bu işlemlerin gerçekleştirildiği ve sonuçlarının döndüğünü gözlemleyebilirsiniz.

Transaction işlemlerini commit ya da rollback etmek için yukarıda örnekteki gibi,

Http://localhost:32001/api/v1/transaction/[TransactionGuid]/commit ya da

Http://localhost:32001/api/v1/transaction/[TransactionGuid]/rollback çağrıları HttpPost olarak çağrılarak gerçekleştirilir.

Sonuç bilgisi başarılı ya da hatalı olarak dönecektir, hatalı işlem sonucu döndürülmesi durumunda otomatik olarak transaction rollback edilir.

Telif HakkıKullanım KoşullarıGizlilik
Copyright © 2018 Logo Yazılım