StringList ve Dokümana Eklenmesi

Erkan Sezer

Oluşturduğumuz doküman classlara tek bir değer değilde birden fazla değer yani bir listeyi set etmek istersek aşağıdaki işlemleri yapmak durumundayız.

Öncelikle oluşturacağımız dokumanın properties değerini yada değerlerine ulaşmamız gerekiyor. Daha sonra com.filenet.api.collection.StringList package`sini import ederiz ve StringList tipinde listler hazırlar ve insert edeceğimiz değerleri bu listeye ekleriz.

Eklenen bu listeyi de oluşturacağımız dokümanın doküman class`ına ekleriz. Artık dokümanımız bir array içeren değere sahip olacaktır.


16 Şubat Çarşama 2011


Choice List : Item Value ve Display Name

Erkan Sezer

FileNet FEM ile oluşturduğumuz Choice Listlerin Item Value ve Item Display Name değerlerini kod ile select edebilirz ve ekranda bunları istersek bu comboya veya listboxa insert edebiliriz, tabiki isteğe bağlı olarak bunları generic listlere veya istediğimiz diğer işlemler tabi tutabiliriz.

Öncelikle FetchInstance ile Choice List set edilir ve daha sonra Java.API ile com.filenet.api.admin.Choice package`ı projemize ekler Choice nesnesini oluşturarak Choice List nesnesi get_ChoiceValues().iterator() ile iterasyona sokulur.

Her iterasyonu Choice`e cast ederiz ve choice.get_ChoiceStringValue() ile Choice List`imizin Value değerine; choice.get_DisplayName() ile de Display name değerine ulaşırız.

15 Şubat Salı 2011


FileNet 4.5.1 Connection WSE 3.0

Erkan Sezer

FileNet 3.5.2 versiyonunda da olduğu gibi 4.5.1 versiyonunda da Microsoft WSE ile username password istemeden sisteme connection atabiliriyoruz.

FileNet 4.5.1 de özellikle development kısmında eskiye göre daha stabil ve daha organize bir durum var. Artık classların Interface`lerden türediğini görmek bunun en güzel örneği ve isimlendirmelerin düzeltilmesi de harika.

3.5.2 ile 4.5.1 arasında WSE konusunda en temel farklılık versiyonlarda oluşuyor, artık WSE 3.0 kullanıyoruz ve tabiki  KerberosToken ile username password istemediğimiz gibi UsernameToken kullanarak da kullanıcıdan bu iki parametreyi isteyerek LDAP doğrulaması yaptırmamız mümkün, tercih size kalıyor.

Ayrıca client kurulum yaparakda aynen FileNet 3.5.2 versiyonunda da oluğu gibi connection oluşturabilir ve gerekli işlemlerinizi yapabilirsiniz.

13 Mayıs Perşembe 2010


FileNet API ile Doküman Kopyalama

Erkan Sezer

FileNet 3.5.X versiyonunda dokümanı locale kopyalarken öncelike dokumanı set eder ve daha sonra ne yaptığını bvilmediğimiz ve sadece isimlendirmeden yola aıkacağımız bir metod kullanırdık. Doc.CopyContent olarak kullandığımız bu metod ile aslında tam olarak ne yaptığımızı bilmiyorduk , kopyalıyor ama nasıl kopyalıyorduk ne kullanıyorduk hiçbir fikrimiz yoktu.

Ayrıca bunu COM API ile yapıyor ve VB 6.0 ile .NET için kullanmış olduğumuz dokümanı set etmek daha farklıydı ve önce VB 6.0 ve daha sonrada bunu C# da yapmak isteyenler için tam bir eziyet haline geliyordu.

.NET API 4.X versiyonunda sonra geldi ve birçok işlemi standart hale getirdi , işte burda da dokümanı FileNet`den daha doğrusu File Store`dan alıp locale kopyalama işi de standart hale getirilmiş oldu. Bu işlem içi stream sınıflarını kullanıyoruz , tabiki mantıklısı da bu , C# ile her türlü dosya okuma , yazma , XML okuma , yazma gibi işlemleri Stream`lerle yaparken bir dokümanı FileNet`den neden değişik standart olmayan bir metod ile kopyalıyoruz , bunu zaten anlamamıştım , FileNet 4.X ve benim bu derdime çare bulmuş :) aslında çok güze ve şık olmuş..


07 Şubat 2010 Pazar


FileNet .NET API

Erkan Sezer

FileNet 4.5.1 versiyonu IBM`in son çıkardığı versiyondur ve burda 3.5.X versiyonuna göre 4.X ve 4.5.X versiyonunda büyük major farklılıklar göze çarpmaktadır.

Öncelikle FileNet`e nasıl connect olacağımızla ilgili değişikliğe bakacağız? Daha önce biz COM API kullanıyorduk ve bununla birlikte Java API desteğı ve Web service desteği sunuluyordu. Microsoft kullanıcılarını sevindiren bir haber : FileNet artık size .NET API desteği de sunmaktadır.

Eğer Java API kullanmışsanız nerdeyse bire bir aynı gibidir. Bu bizi COM API kullanmanın zorluğundan kurtardığı gibi , FileNet için bir standart oluşturma , performans , daha kolay kodlama (eğer Java API  ve object oriented biliyorsaniz) vb birçok özellik sağlamaktadır.

Öncelikle .NET API kullanacaksanız ve bununla FileNet`e connect olacaksanız bir müjde artık client kuruluma ihtiyacınıoz olmayacak. WSE 3.0 kullanarak Kerbores Token ile user name ve password`a ihtiyaç duymadan FileNet`e bağlanabileceksiniz.Tabiki isterseniz Username Token ile de username ve password ile de FileNet`e connect olabilirsiniz. Çok güzel dediğiniz duyar gibiyim :)

Ayrıca 4.X versiyonu ile birlikte gelen .NET API`si hep interfancelerden türemekte ve buda bize eğer object oriented mantığınız oluşmuşsa büyük kolaylıklar sağlamaktadir.


07 Şubat 2010 Pazar


Filenette Document Security

Erkan Sezer

Uzun suredir Filenet hakkinda biseyler yazmadigimi farkettim, simdi document securitysi hakkinda biseyler yazacagim.

Olusturdugumuz dokumanlara FEM den Document Class ekleyerek istedigimiz security leri olusturuyoruz. Peki bunu kodla nasil olustururduk , devamli Default Instance Security tabinda islemler mi yapacagiz? Tabiki bizim gibi yazilimcilar icin bu biraz kolaylik saglasa da cok da iyi bisey degil. Bundan dolayi asagida kodla nasil Default Instance Security de yaptigimiz islemi dokuman bazinda yapari bunu anlatacagim.

Oncelikle dokumanlar icin AccessPermission i kullanmamiz gerekecek. Burda AccessPermission tipinde bir Instance aliyoruz (CreateInstance) Bu islem Filenet 4.5 de Interfaceler araciligi ile daha da standart hale getirildi.

Daha sonra aldigimizin bu Instance in bazi degerlerini set etmemiz gherekecek. AccessMask degerini IdmAccessLevel enumi ile , AccessMask  degerini IdmAccessType ile ve GranteeName degerini de Active Directory de bulunan herhangi bir grup adi ile set ederek Document in permission metodu ile dokumana olusturulan security eklenir ve son olarak da dokuman Save edilir.

Simdi gidip document in Security sine bakarsak Active Directory de bulunan ve bizimde GranteeName e set ettigimiz kullaniciyi veya kullanici grubunu goruruz.


19 Temmuz 2009 Cumartesi


Filenet CEWS

Erkan Sezer

Filenet ile şimdiye kadar Dokuman Ekleme , silme , versiyonlama , folderlama gibi işlemler yaptık. Bunları COM API ile gerçekleştirdik Her zaman Filenet`in çok komplike ve mükemlle bir sitem olduğudan bahsediyoruz. Şimdi güzel bir konudan daha bahsedeceğim.

COM API ile yaptığımız bütün işlemleri , Dokuman Ekleme , silme , versiyonlama bu versiyonlama major de minor de olabilir , folder oluşturma , property set etme ve buna benzer bir çok özelliği hiçbir şekilde bilgisayarınıza dll yüklemeden de yapabiliriz. Tabiki bunun yolu web service.

Filenet FEM`den , COM API ile veya da CEWS dediğimiz Content Engine Web Service ile bunları yapabilmeye olanak sağlamaktadır. CEWS filenetin kendi web service`idir ve Filenet kurduğumuz makinada bu bulunmaktadır.

Web service`i call ederek content ile ilgili  işlemleri yapabilmek bizim için çok büyük kolaylık.


19 Ocak 2009 Pazartesi


Filenette Folder Oluşturmak

Erkan Sezer

Filenette folder oluşturma işlemini anlatacağım. Tabiki öncelikle bu folderın hangi class yani folderdan türeyeceğini bilmemiz gerekiyor. Hangi folder türeteceğimizi bildiğimizi varsayıyoruz ve oluşturacağımız foldera da sadece 1 adet properties ekleyeceğimizi fazrediyoruz.

Öncelikle şunu unutmamalıyız: Filenet tarafinda bu folder classları ve set edeceğimiz propertinin foldera atanmış olması gerekmektedir. Yani bu işlemi 2 taraflı yapmalıyız, öncelikle Filenet tarafini daha sonra da .NET ` den ya da daha basit haliyle VB`den COM API kullanarak bu folderı oluşturmalıyız. Ben ikinci kısmının nasıl yapılacağını kodlarla anlatacağım.. VB den kodlarımızı .NET` e çevirmak zaten çok koly bundan dolayı kodlarımızı VB`de yazacapım.

    Dim RootFolder As FNCE.Folder
    Set RootFolder = FirstObjectStore.RootFolder
    If ObjectExist(FirstObjectStore, "/" & " Folder_Ismi ") Then
        Exit Sub
    End If
    Set NewFolder = FirstObjectStore.CreateObject("Folder_Clası")
    Set NewFolder.Parent = RootFolder.SubFolders("Parent_Folder")
    NewFolder.FolderName = "Goruntulenmesini_Istedigimiz_Isim"
    NewFolder.SetValue "Folder_Propertiesi", "Erkan_Sezer"
    NewFolder.Save

Bu küçük kod bloğu bize Root Folder`ın altında yeni bir folder oluşturmamızı sağlayacaktır.

29 Aralık 2008 Pazartesi


Filenette Doküman Select Etmek - 3

Erkan Sezer

Daha önce filenetten dokümanları nasıl select edebileceğimize dair 2 yazı yazmıştık. Burda da dokümanları foldera select atarak elde edeceğiz.

Öncelikle tabiki filenete logon olup Authorization işlemini gerçekleştireceğimiz belirtmemize artık gerek kalmadığı düşünüyorum. Tabiki daha sonra select ifademizi yazacağız ve bu select ifademizde dokümana değil foldera select atacağız.

SELECT [Column1] ,[Column2], [Column3] FROM [Table_Folder] NOLOCK

Burdaki Table_Folder folder clasını temsil ediyor ve NOLOCK dda deadlock`ı önlemek için kullanılıyor. Daha sonra elde edilen folderin ID değeri ile bu folderi set edeceğiz.

Şimdi elimizde bir folder var ama hiç döküman yok , peki dokümanlara nasıl ulaşacağız?  Burda yapmamız gereken for each ifadesi ile folderın içinde bulunan dokümanlara ulaşmaktır. COM API kullandığımızı düşünüyoruz ve aşağıdaki kodu bize bunu sağlayacaktır.

For Each NewDoc In NewFolder.ContainedDocuments
    Dokümanla ilgili işlemler
Next

Peki bunu .NET de nasıl yaparız dersek :) nerdeyse aynı

foreach (Document NewDoc in NewFolder.ContainedDocuments)
{
     Dokümanla ilgili işlemler
}

Şuan dokümana 2 farklı şekilde ulaşabildik ve dokümanların ID değerlerine ulaştığımızda da onları set ederek istersek major veya minor versiyon yaparız , contenti ile oynayabiliriz veya istediğimiz değerler set edebiliriz. Dokümana ulaştıktan sonra yapacaklarımız sizlerin hayalgücü ile sınırlıdır.

26 Aralık 2008 Cuma


Filenette Doküman Select Etmek - 2

Erkan Sezer

Bir önceki konumuzda filenette dokümanlara nasil select atabileceğimizden bahsettik, şimdi bununla ilgili olarak bir örnek yapacağız.

COM API`yi kullandığımızı daha önceden de yazmıştık. Select örneğiminden önce tabiki Filenet`e login olacak ve Authorization işlemini gerçekleştirmeliyiz. Daha sonra select örneğimiz aşağıdaki gibi olacaktır.

SELECT  [Column1] ,[Column2], [Column3]  FROM [Table] NOLOCK 

Bu select ifadesinde Column isimleri tabiki dokümana select attiğimiz için doküman propertiesleri kadar olacaktır.

Tabiki burda kullandığımız Table ismi de dokumanin properties`i olmalıdır. Yani burda folder`a değil dokümana select atıyoruz, aynı mantıkla folder`a da select atabilmekyiz fakat ordan dokümanlara ulaşmak için biraz daha değişik bir mantık oluşturmalıyız.

Bu select sonucunda bize dönen recordset bizim dokumanlarımızdır. Tabiki dokuümanlarımızı da set etmek için recordset içinden bize dönen ID`ler ile dokümanlarımızı Set etmemiz gerekecektir.

25 Aralık 2008 Perşembe


Filenette Doküman Select Etmek - 1

Erkan Sezer

Filenet`e eklediğimiz dokümanları ekranda göstermek istiyorsak bunu bikaç şekilde yapabilmekteyiz. Bunlardan ilkini anlatacağım.

Öncelikle oluşturduğumuz bütün dokümanlar `Document` clasından türemektedir. Bu bilgi bize eğer Document class`ına select attğımızda bize record set sonucunda dönecektir. Kısacası dokümana select atacağız.

Eğer biz Document classından kendimize ait yeni dokümanlar oluşturmussak sadece oluşturulan dokümanların türediği instancein sybolic name`ine de select atarsak bu bize sadece o class`a ait dokümanları verecektir.

Select ifadesi aynen sqldeki select ifadesidir fakat biz COM API ile Filenet gönderdiğmiz select ifadesini filenet kendi serviceleri ile almakta ve bize select sonucunu vermektedir. Bu arada filenet bu select üzerinde işlem yapmaktadır. Eğer evet viewerdan application tabindan bunu izlersek bize nasil bir select sunduğunu göreceksiniz.

Filenet arka planda bir database kullanmaktadır , Oracle veya Sql Server olacabilecek bu database , sizinde yukarda anlatttıklarımdan anlayacağınız gibi bütün dokümanlarla, folderlar , classlarla ve kullanılan birçok özelliği databasede tutmaktadır. İşte select ifademizin record seti bize bu databaseden gelen değerlerdir.

19 Aralık 2008 Cuma


Object Store Set Etmek

Erkan Sezer

Filenette dokuman ile ilgili çok fazla işlemi FEM`den yaptığımız gibi COM API kodlari ile veya Filenet`in kendi web servisi ile yapıyoruz. Peki kullandığımız Object Store ` u nasil set editoruz.

Bunu hem VB de hem de C# ile kısaca açıklayacağım. Öncelikle filenete login olduktan sonra , Object Store`u set eder ve daha sonra da Authorization işlemini gerçekleştiririz.

VB:
 Set ObjStore = TheNetwork.LocalDomain.ObjectStores.item(Object_Store_Ismi)
 ObjStore.Authorize

C#:
ObjctStore = TheNetwork.LocalDomain.ObjectStores.Item(ref Object_Store_Ismi);
ObjctStore.Authorize()

C#` da dikkat etmemiz gereken Object_Store_Ismi değişkeninin bir obje olduğudur.

02 Aralık 2008 Salı


FileNette Dokümanı Versiyonlama

Erkan Sezer

Filenetde doküman versiyonlarken yapılan en büyük yanlışlardan biri; dokümana content eklediğimizde veya content eklemeden de versiyonlama yaparken ,  dokümanın rezerve edildiğini unutarak bu işlemin yeni doküman eklerken uygulanan işlemin uygulanmasıdır. Tabiki bu da hata alacak ve dokümanı versiyonlayamayacağız. Bunun için yapmamız gereken;

Doc.Checkin degil , Doc.Reservation.Checkin işlemi olmalıdır.

Aynı şekilde dokümana content eklerken de Doc.ContentElements.Add değil , Doc.Reservation.ContentElements.Add işlemi olmalıdır. Bu şekilde işlemimiz başarılı şekilde gerçekleştirilecektir.


25 Kasım 2008 Salı


FileNette Dokümana İkinci Content Ekleme

Erkan Sezer

Filenete kaydettiğimiz belgenin contentini aşağıdaki kod blogu ile filenete gonderiyoruz. Peki ben ikinci bir content göndermek istersem ne yapacağım? Aslında çok basit , aynen aşağıdaki kodu tekrar edersek ikici bir contnet eklemiş oluyoruz.

Document.ContentElements.Add(Contrans, ref Before, ref After);

Koda baktığımızda dikkat etmemiz gereken bir diğer konu , Before ve After i Type.Missing ile oluşturduğumuzdur. Filenet tarafında ise ; belgenin tüm property lerine bakarsak da belgeye 2 adet content eklemiş olduğumuzu göreceğiz. Sizinde tahmin edebileceğiniz gibi bu çok kullanışlı bir durum. İkinci content her türlü XML , TXT , DOC vb olabilir.

19 Kasım 2008 Çarşamba


FileNet COM API ile Check-in İşlemi

Erkan Sezer

Filenete herhangi bir dökumanın contentini göndermek istiyoruz, filenet bu konuda bize COM API desteği sunmaktadır. COM API ile vb kullanarak çok basit şekilde dökumanı check-in işlemine tabi tutariz. Fakat bu .NET ile biraz daha karmaşık duruma geliyor. Bunun sebeplerinden biri VB de optinal değerleri girmemiz gerekmiyor ve dökuman check-in işlemi gerçekleştiriliyor. Fakat .NET  ise optinal değerleri göstermiyor ve bizde göndermemiz gereken parametrenin ne olduğunu bulmak için çok zorlanıyoruz. Bu konuda google da bize yardımcı olamıyor :)

Bunun çözüm yöntemi ise VB projesinde optional olan değerler yerine .NET de bu değerleri Object ContentSource = Type.Missing şeklinde tanımlıyarak function veya procedure lere gönderiyoruz. Bu da sorunumuzu çözüyor.

Kısacası Type.Missing bize optional parametrelerin default değerlerini veriyor.

19 Kasım 2008 Çarşamba