- 27 Nov 2023
- 8 Minutes to read
- DarkLight
Veri Kaynakları
- Updated on 27 Nov 2023
- 8 Minutes to read
- DarkLight
Sorgu ve özel tasarım raporlarınız veya gösterge paneli için oluşturulan veri kümeleridir. Veri kaynaklarını otomatik SQL kodu üreten tasarım modu ile, SQL kodu elle yazarak veya daha önceden oluşturulmuş stored procedure'ler vasıtası ile üç farklı şekilde oluşturabilirsiniz. Oluşturulan bütün raporlar ve gösterge panelleri PaperWork sol menüsündeki raporlar menüsünde yetkiye bağlı olarak görüntülenir.
Kaynak Adı
Oluşturulacak veri kaynağına verilen isimdir.
Yetki Seti
Kullanım yeri Rapor Kaynağı veya Gösterge Paneli ise, bu veri kaynağını raporda kullanmaya yetkili olacak kullanıcıları belirler, kullanım için en az görme yetkisi bulunmalıdır. Bu yetki setinde en az görme yetkisi olmayan kullanıcılar, rapor tasarımında bu veri kaynağını göremezler. Kullanım yeri Rapor ise, raporlar listesinde listeyi görme yetkisi de bu yetkiye bağlıdır.
Tasarım Yetki Seti
Veri kaynağının tasarımı üzerinde yapılacak işlemler için yetki setidir. Bu yetki setinde en az yazma yetkisi bulunmayan kullanıcılar, veri kaynağı üzerinde düzenleme yapamazlar.
Kullanım Yeri
a. Rapor Kaynağı : Veriler rapor tasarımında kullanılacak ise kaynak tipi rapor kaynağı olmalıdır.
b. Rapor : Özel hazırlanmış rapor tasarımına ihtiyaç olmadığı durumlarda, verilerin raporlar sayfasında listelenmesi için kullanılır.
c. Gösterge Paneli : Veriler gösterge paneli tasarımında kullanılacak ise kaynak tipi gösterge paneli olmalıdır.
Rapor sonucu bir tablo (Grid) üzerinde sayfalar halinde gösterilir. Her sayfa geçişinde ilkgili kaynak çalıştırılarak o sayfaya uygun kayıtlar tabloya getirilir. Tablo kolonlarında yapılan filtreleme sadece o sayfada çalışır. Eğer tüm sayfalarda çalışacak bir filtreye ihtiyaç var ise parametre olarak tasarlanmalıdır.
Kaynak Türü
a. Tasarım ile Sorgu : Sistemde var olan sistem tabloları, listeler, arşiv kayıtları ve akış kayıtlarından tasarım ara yüzü ile oluşturulan ve otomatik SQL sorgusu oluşturan veri kaynağı türüdür. Oluşturulan SQL kodu salt okunur olacaktır, gerekli düzenlemeler tasarım ara yüzünden yapılmaktadır. Birden fazla seçim birleştirilebilir (JOIN) ve bu birleştirmelerde kendi oluşturmuş olduğunuz listeler de kullanılabilir. Tasatım ile sorguda nesne no üzerinden eklenti kolonu kullanılabilir.
Kolonlar
Kolonlar bölümünde veri kaynağında bulunması istenen alanlar belirtilir. Sıralarını düzenlemek için veya artan ya da azalan sıralama eklemek için kolon adının solundaki listeden seçim yapılabilir. Tepeye kaydır seçimi ilgili kolonu en başa, aşağı taşı seçimi ise ilgili kolonu en sona taşır. Yukarı ve aşağı kaydır seçenekleri bir ileri veya bir geri şeklinde hareket edilmesini sağlar.
Kolonun adına tıklanırsa, kolon yeniden isimlendirilebilir.
Fonksiyon bölümünde ise, kolon sayısal bir alan değilse sayı ve tekil sayı seçenekleri, sayısal bir alan ise bunlara ilaveten toplam, ortalama, minimum ve maximum seçenekleri gelir. Bu fonksiyonlarla gruplama yapmak mümkündür.
Kriterlerin Kullanımı
Bu bölümde oluşturulan listeye kriter verilebilir, bu kriterler parametre olarakta kullanılabilir. Kriter ekle butonu ile eklediğiniz kriterler "VE" bağlacı ile birbiriene bağlanır. Parametre olarak kullanmak için kriterin solunda bulunan butonu ile çıkan menüden Parametre seçimi yapılmalıdır. Bu durumda rapor çalıştırıldığında bu kriter kullanıcıya sorulacaktır. Kriter silinmek istenirse, yine aynı menüden Sil seçimi yapılarak silinebilir.
"VEYA" kullanmak için kriter eklemeden önce parantez açmak gerekir. Açılan parantezin içine eklenen kriterler birbirlerine veya bağlacı ile bağlanacaktır. Parantez haricinde tekrar kriter eklenirse veya ile yapılan grubun tamamına ve ile bağlanan bir yapı oluşturulabilir.
Aşağıdaki örnekte tasarımda verilen kriterler ve SQL açılımı görülmektedir.
Kriterlerde eşitlik tanımları şu şekildedir :
içeren : verilen kriteri içeren kayıtlar aranır.
içermeyen : verilen kriteri içermeyen kayıtlar aranır.
eşit : verilen kriterin tam karşılığını içeren kayıtlar aranır.
eşit değil : verilen kriterin tam karşılığı içermeyen kayıtlar aranır.
arasında : verilen iki kriter arası aranır, verilen kriterler dahildir.
arasında olmayan : verilen iki kriter arasındaki kayıtların haricinde olan kayıtlar aranır, verilen kriterler dahil değildir.
küçük : verilen kriterden küçük olanlar aranır, kriter dahil değildir.
küçük veya eşit : verilen kriterden küçük olanlar aranır, kriter dahildir.
büyük : verilen kriterden büyük olanlar aranır, kriter dahil değildir.
büyük veya eşit : verilen kriterden büyük olanlar aranır, kriter dahil değildir.
null olan : veri tabanında null olarak görünen kayıtları arar (boşluk null değildir)
null olmayan : veri tabanında null olarak görünen kayıtları arar (boşluk null değildir)
ile başlayan : verilen kriter ile başlayan kayıtlar aranır.
ile başlamayan : verilen kriter ile başlayan kayıtları içermeyen kayıtlar aranır.
listeye bağla : tasarımda tanımlanan listeden, rapor çalıştırma esnasında seçim yapılır.
Bağlantılar
Eğer ihtiyaç olursa, birden fazla tabloyu birbirine bağlamak mümkündür. Aşağıdaki örnekte kullanıcı tablosundan alınan verilerde kod ile bulunan statü durumunu isim olarak yazdırmak için liste tanımlarında oluşturulan bir kullanıcı statü listesi ile bağlandığı görülmektedir. Eşleştirme kullanıcılar tablosundaki durum ile kullanıcı statü listesindeki kodu ile yapılmış ve üstteki listeye kullanıcı statü listesinden statü alanı da eklenmiştir.
Bu tasarım sonucunda şöyle bir liste alırız :
Görüldüğü gibi bağlantı sayesinde kod ile birlikte statü ismi de listeye eklenmiştir.
Eğer birinci tablo önce ikinciyle, sonra üçüncüye gibi bağlanmak isteniyorsa bunu SQL ile tasarımda JOIN vasıtası ile yapabilirsiniz.
Raporda Eklenti Kolonu Kullanma
Raporda oluşturduğumuz listeye bağlı bir belge varsa, rapora "Nesne No" eklemek sureti ile kayda bağlı belge görüntülenebilir.
Bunun için Nesne No alanını listeye ekledikten sonra butonuna basılarak, çıkan menüden "Eklenti Kolonu" seçimi yapılır. Rapor görüntülendiğinde ilk kolonda belgeyi açmak için link görüntülenecektir. Belge bölümü açıldığında yapılabilecek işlemler yetki setine bağlı olarak gösterilir.
Eklenti kolonu kullanılan rapor sadece kullanım yeri "rapor" olarak "tasarım ile sorgu" bölümünde oluşturulabilir, rapor tasarım ekranında kullanılmaz. Yukarıda da açıklandığı gibi eklentili raporda görsel düzenleme bulunmaz.
b. SQL Sorgusu : Editör üzerinden SQL kodu yazılarak veri kaynağı hazırlanabilir.
SELECT
WF.WORKFLOW_ID AS 'AKIŞ NO',
WF.WORKFLOW_NAME AS 'AKIŞ ADI',
WF.CREATE_DATE AS 'OLUŞTURULDUĞU TARİH',
WF.STATE AS 'DURUMU',
WF.VERSION AS 'VERSİYON',
US.USER_NAME AS 'SAHİBİ'
FROM
VW_PW_WORKFLOW AS WF WITH (NOLOCK)
LEFT OUTER JOIN PW_USER AS US WITH (NOLOCK) ON WF.OWNER=US.LOGIN_NAME
LEFT OUTER JOIN PW_SYSOBJECT AS OB WITH (NOLOCK) ON WF.OBJECT_ID=OB.OBJECT_ID
WHERE
OB.IS_DELETED=0
Zamana bağlı ve onaya bağlı olarak silindi işaretlenen kayıtlar, tip üzerinde aynı şekilde kalır. Zamanı geldiğinde veya onay verildiğinde silinir. Bu nedenle üzerinde geri dönüşüm tanımlı tipler üzerinden rapor hazırlanırken PW_SYSOBJECT (Sistem) tablosu ile veri kaynağı birleştirilmeli, IS_DELETED (silindi) kolonu 0 olarak alınmalıdır. Bu şekilde bağlantı yapılmadan sadece tip üzerinden rapor alındığında geri dönüşüm ekranında bekleyenler de rapora yansıyacaktır. Rapora yansımaması için PW_SYSOBJECT (Sistem) tablosu ile veri kaynağı nesne no ile birleştirilmeli ve IS_DELETED (Silindi) kolunu için eşittir 0 olarak kriter verilerek veri kaynağı oluşturulmalıdır. (Üstteki örnekte nasıl çalışacağı gösterilmiştir)
IS_DELETED=0 ise aktif kayıt,
IS_DELETED=1 ise zamana bağlı silinecek kayıt,
IS_DELETED=2 ise onaya bağlı silinecek kayıt anlamına gelir.
c. SQL Stored Procedure : Veritabanında oluşturulan bir stored procedure kullanılarak veri kaynağı oluşturulabilir. Burada dikkat edilmesi gereken husus, hazırlanan stored procedure isminin mutlaka SP_ ile başlaması gerekmektedir. Bunun dışında isimlendirilen stored procedure'ler listede görüntülenmez.
Örnek bir Stored Procedure :
CREATE PROC SP_GET_DATA4TYPE_50 (
@START_TIME DATETIME,
@END_DATE DATETIME,
@TYPE NVARCHAR(20),
@OWNER NVARCHAR(20))
AS
DECLARE
@MSG NVARCHAR(2000),
@SQLSTR NVARCHAR(MAX)
SELECT @SQLSTR='
SELECT
PW_SYSOBJECT.OWNER,
PW_SYSOBJECT.OBJECT_ID,
PW_SYSOBJECT.OBJECT_NAME,
PW_SYSOBJECT.CONTENT_TYPE,
PW_SYSOBJECT.CREATED_DATE,
PW_SYSOBJECT.OBJECT_TYPE,
PW_SYSOBJECT.FORM_NAME
FROM PW_SYSOBJECT(NOLOCK)
WHERE PW_SYSOBJECT.CONTENT_TYPE LIKE ''%'+@TYPE+'%'' AND PW_SYSOBJECT.OWNER LIKE ''%'+@OWNER+'%''';
IF @START_TIME <> @END_DATE
BEGIN
SELECT @SQLSTR+=' AND PW_SYSOBJECT.CREATED_DATE BETWEEN '''+CONVERT(NVARCHAR,@START_TIME,121)+''' AND '''+CONVERT(NVARCHAR,@END_DATE,121)+''''
END
EXECUTE SP_EXECUTESQL @SQLSTR
- Aynı SQL Server üzerinde birden fazla veri tabanı konumlandırılabilmektedir. PaperWork veri tabanının erişilmek istenilen veri tabanı ile aynı SQL Server üzerinde olduğundan emin olunuz. Örneğin PaperWork veri tabanı adının PAPERWORK, erişilecek veri tabanının da ERP olduğunu düşünelim. Her ikisinin de aynı SQL Server üzerinde olması gerekir.
- Yazılan SQL sorguları ve prosedürlerin çalıştırılması için PaperWork kurulumunda belirlenen SQL Server kullanıcısının (genelde paperwork olarak isimlendirilir) yetkileri ile hareket edilir. Bu durumda ilgili SQL kullanıcısının sorgu yapılabilecek veri tabanı üzerinde erişilecek tablolara yetkisinin olması beklenir. Örneğimize göre paperwork SQL kullanıcısının ERP veri tabanında istenilen tablolarda/viewkarda SELECT yetkisi bulunmalıdır.
- Örneğin bir tip alanındaki MUSTERI_NO alanı ile ERP veri tabanı içindeki bir tabloda MUSTERI_NO alanının eşlenerek bir sorgu yapılacağını düşünelim. Bu durumda sorgu aşağıdaki gibi olmalıdır;
Burada diğer veri tabanına ulaşmak için ERP.. yazım şekline dikkat etmek gerekir.
Kullanıcı Parametreleri
Veri kaynaklarında kullanıcı parametreleri kullanılabilir. Böylece rapor, raporu açan kullanıcının bilgilerine göre gelir.
Current.User.Login | Aktif kullanıcı giriş adını ifade eder. |
Current.User.Name | Aktif kullanıcı tam adını ifade eder. |
Current.User.Email | Aktif kullanıcı elektronik posta adresini ifade eder. |
Current.User.Position | Aktif kullanıcı pozisyon adını ifade eder. |
Current.User.Title | Aktif kullanıcı ünvan bilgisini ifade eder. |
Current.User.ExtProp1 .. 15 | Aktif kullanıcı ek özellikleri alanlarını sırası ile ifade eder. 15 Adet ek özellik vardır. |
Current.ApplicationName | Aktif kullanılan ara yüzü ifade eder. HTML5 ara yüzler için Paperwork değerini içerir. |
Tablolar
Veri kaynaklarında tasarım bölümünde kullanılabilecek tablolar şu şekildedir :
Sistem Tabloları
Paperwork içerisinde akışlar, kullanıcılar, yetki setleri, formlar, mesajlar gibi sistemin kendi oluşturduğu verilerin olduğu tablolardır. Bu tabloda bulunan alanlar ve açıklamalarını şu adresden inceleyebilirsiniz.
Listeler
Kullanıcı tarafından liste tanımları menüsü aracılığı ile oluşturulmuş listeler bu bölümde gelir. Oluşturduğunuz listeleri bir tablo gibi bu bölümde kullanabilir, diğer tablolarla birleştirerek kullanabilirsiniz. Liste tanımlarında oluşturulmuş tüm alanların string ifade içerdiği unutulmamalıdır.
SQL Listeler
Veri kaynağında SQL Listeler kullanıldığında liste verileri görüntülenmez. Yalnızca tipi "sabit" olan listeler kullanılmalıdır.
Tipler (Arşiv)
Kabinet Tanımları ile oluşturulmuş olan tip tanımları bu bölümde listelenir. Kabinetlerdeki indeks verilerini buradan alarak diğer tablolarla birleştirebilir, veri kaynağını oluşturabilirsiniz.
Tipler (Dosya Kartı)
Dosya kartı olarak oluşturulmuş olan tip tanımları bu bölümde listelenir. Dosya kartlarındaki indeks verilerini buradan alarak diğer tablolarla birleştirebilir, veri kaynağını oluşturabilirsiniz.
Tipler (Akış)
Süreç taslaklarında hazırladığınız akış tipleriniz bu bölümde listelenir. Akışlarla oluşturulan indeks verilerini buradan alarak diğer tablolarla birleştirebilir, veri kaynağını oluşturabilirsiniz.
Nasıl Yaparım?
Veri Kaynakları ile ilgili videolara şu sayfadan erişebilirsiniz. Aynı sayfada Form Raporu tasarımı da bulunmaktadır.