İş nesneleri arasında bağlantı kurulmak isteniyorsa kullanılabilir. Aşağıdaki Diyagramı kullanarak anlatmaya çalışalım.
Diyagram üzerinde oluşturduğumuz projenin ilişkisel bağlantıları bulunmaktadır. Örnek olarak courseSlip ve course arasındaki ilişkinin nasıl kurulduğunu göstereceğiz. Bu bağlantıyı gerçekleştirmek için iki yöntem bulunmaktadır.
1- Table Üzerinden Link Oluşturma
Bu yöntem Table'lar üzerinden Bağlantı(Link) Kurulmasına yardımcı olan yöntemdir.
- CourseSlip tablosu kaydın yapılmak istendiği alan
- CourseSlip ekranının Table'ının tanımlandığı CustomTable Ekranı açılır. Table Link Properties kısmında sağ klik > Add butonuna tıkladıktan sonra link oluşturma ekranı açılır.
- Açılan ekranda ilişki türü belirlenir.
Alias: Link'in çağrılması için verilen isim.
Cardinality: Bağlantı türü seçilir.
Linked Table: Bağlayacağımız tablo seçilir.
Relation: İlişkinin türünü belirtir:
owner: Tanım yapılan tablodaki kayıtların, ilişkili tablodaki kayıtların sahibi olduğu anlamına gelir. Genellikle ilişkili olunan tablo tanım yapılan tablodaki verilere ait detay bilgiler tutar. Örneğin, faturaya ait satırlar gibi.
reference: Tanım yapılan tablodaki kaydın, ilişkili tablodaki kayıtlardan birine işaret ettiğini belirtir. Bu iki tablonun kayıtları arasında sahiplik / aitlik ilişkisi yoktur. Tablolardan birindeki kayıtlar diğerindeki kayıtları işaret eder. Örneğin, fatura içinde kullanılan cari hesap bilgisi. Varsayılan seçenek budur.
Reference Count: Genellikle ilişki türü reference olan tablolardaki kayıtlar arasında referans toplama işleminin yapılıp yapılmayacağını belirtir. Referans toplama işlemi bir kayda işaret eden başka kayıtların bulunması durumunda bu kaydın silinmesini engelleyen bir mekanizmadır. Bu özelliğin değeri true ise, ilişkili olunan tablodaki kayıtların silinmesi öncesinde bu tablodan kayıtların kendilerine işaret edip etmedikleri kontrol edilir ve işaret eden kayıt olması durumunda silme işlemine izin verlmez. Değeri false ise bu kontroller yapılmaz. Varsayılan değeri false'tur.
Authorize: Bu bağlantı ile takılan veri nesnelerinin otomatik yetkilendirmeye dahil olup olmadıklarını belirtir.
Auth Mode: Bu bağlantı ile takılan veri nesnesi birden fazla yetki modu tanımlıyorsa, bu bağlantının hangi modu kullandığını belirtir.
Link Condition: "$master.COURSEREF" courseslip ekranında bulunan courseRef'i. "$detail.LOGICALREF" course tablosunun LOGICALREF'idir, aşağıdaki gibi bunları bağlarız. Ok tuşuna basarak link tanımlama işlemi tamamlanır.
- Son adım olarak "OK" butonu ile işlem tamamlanır. İki table arasında ki bağlantıyı kurmak için oluşturduğumuz kursLink bağlantısının KursSlip'in CBO'su içinden çağrılması gerekir. CBOKursSlip açılır ve Link Field Definitions (Preffered) kısmına sağ klik > Add tıklanır.
- Gelen ekranda hazır olarak tanımladığımız kursLink en üste gelmektedir. Diğer alanlarıda ilişki türlerini belirlemek için kullanabiliriz.
Alias: Table'da oluşturulan linkin alias'ının seçildiği yer.
Member Name: Link'e verilmek istenen isim.
Description: Açıklama Alanı.
Member Type: Bağlantı türü secilir. Object (1-1) ya da Collection (1-N)
Linked Object Type: Bağlayacağımız tablonun CBO sunu seçeriz (CBOCourse).
Link Join Type: Bağlantı türünü belirtir. Veri nesnesi okunurken bağlı olunan veri nesnesini okuyacak sorgunun nasıl bir bağlantı içereğini belirtir.
Link Optimization: Bağlantılı olan veri nesnelerinin okunup okunmayacağını optimize etmek için nasıl bir yöntem izleneceğini belirler. Bir veri nesnesi okunurken bağlı olduğu veri nesneleri de okunur. Bu noktada bağlantılı nesne için veri tabanında koşulu sağlayan kayıt olmayabilir. Veri katmanı bu işlemde veri tabanına gitmeden bir optimizasyon yapmaya çalışır ve veri tabanında olması mümkün olmayan nesneler için veri tabanı sorgusu oluşturmadan okuma işlemini yapmadan devam eder. Bu optimizayonun nasıl yapılacağını bu özellik belirler.
Apply Constraints: Bağlantılı olan veri nesnelerinin kaydedilmesi sırasında koşul ifadesindeki hangi ifadelerin kaydedilecek nesne üzerine yansıtılacağını belirler.
Cascade Options: 4 adet opsiyon içerir;
Read: Veri nesnesi veri tabanından okunurken bu bağlı nesnelerin de okunup okunmayacağını belirtir.
Inserts: Veri nesnesi veri tabanına eklenirken bu nesnelerin de eklenip eklenmeyeceğini (kaydedilip kaydedilmeyeceğini) belirtir.
Updates: Veri nesnesi değişiklik sonrası veri tabanına kaydedilirken bu nesnelerin de kaydedilip kaydedilmeyeceğini belirtir.
Deletes: Veri nesnesi veri tabanından silinirken bu nesnelerin de silinip silinmeyeceğini belirtir.
Linked Object Index: Link kurulacak olan veri nesnesinin indexidir.
Authorize: Bu bağlantı ile takılan veri nesnelerinin otomatik yetkilendirmeye dahil olup olmadıklarını belirtir.
Auth Mode: Bu bağlantı ile takılan veri nesnesi birden fazla yetki modu tanımlıyorsa, bu bağlantının hangi modu kullandığını belirtir.
- Son olarak tanımlamalar bittiğinde 'OK' butonu ile işlemi tamamlamış oluruz.
2- CBO(Custom Business Object) Üzerinden Link Oluşturma
Bu yöntem CBO üzerinden Bağlantı(Link) Kurulmasına yardımcı olan yoldur. Sadece Custom Business Object' ler kullanılır.
- CourseSlip tablosu kaydın yapılmak istendiği alan
- CourseSlip ekranı'nın CBO'sunun tanımlandığı CustomBusinessObject ekranı açılır, field definitions sekmesine tıklanır. Aşağıdaki resimde "Link Field Definition(Deprecated)" listesinde sağ klik > ADD buttonuna tıklayıp bir link oluşturma ekranı açılır.
- Açılan ekranda ilişki türü belirlenir.
Member Name: Link'e verilmek istenen isim.
Description: Açılama Alanı.
Member Type: Bağlantı türü secilir. Object (1-1) ya da Collection (1-N)
Linked Object Type: Bağlayacağımız tablonun CBO sunu seçeriz (CBOCourse).
Link Condition: "$master.COURSEREF" courseslip ekranında bulunan courseRef'i. "$detail.LOGICALREF" course tablosunun LOGICALREF'idir, aşağıdaki gibi bunları bağlarız. Ok tuşuna basarak link tanımlama işlemi tamamlanır.
- Son Adım Olarak "OK" butonu ile işlem tamamlanır. İki table arasında ki bağlantı kurulmuş olur.