FileNet 3.5.2`den FileNet 4.5.1`e Upgrade

Erkan Sezer

Kurumun uzun süredir yapmak istediği ama bazı problemlerden dolayı gerçekleştiremediği FileNet Upgrade Projemiz Nisan ayı içinde başarılı şekilde gerçekleştirildi. Uzun süredir çok yoğun şekilde bunun üzerinde çalışıyorduk ve Türkiye`de de ilk bizim gerçekleştirmiş olmamız bizim içinde büyük bir moral kaynağı oldu.

Öncelikle neler yaptık? Content tarafı için tüm kodlarımızı değiştirdik, COM API yerine FileNet`in 4.X ile kodlamalar için uygulamaya aldıpı FileNet.API `yı kullandık. Tabi bu süreç biraz zor oldu, en baştan kodları yazmak ve tümden yeni İnterfaceleri öğrenmek bayağı zamanımızı aldı. Geçiş sonrası düşünemediğimiz tek konu sanırım bize geri dönen hata mesajlarının değişmiş olduğuydu ama yine de çok güzel bir geçiş gerçekleştirdik, iş kesen bir durum oluşmadı.

Process tarafında ise işimiz biraz daha zordu, konfigurasyonların düzeltilmesi süreçlerin yeni proda atılması, yeni serverlardaki konfigürasyonlar gibi sorunlar bizi çok da yordu fakat tüm bunlara rağmen geçiş çok güzeldi ve benim açımdan çokda zevkliydi.

Gelelim teşekkürlere :)

Yöneticim Yavuz Selim Keresteci , çalışma arkadaşlarımız Esra Şenol ve Mehmet Salih Avınç`a, IBM`den Ömer Sever`e , eski yöneticim ve FileNet Trainer`imiz Muhammet Ali Hançer`e katkılarından , yardımlarından ve problemlerimizin çözümündeki aşırı çalışmalarından dolayı teşekkür ederiz.


15 Mayıs 2010 Cumartesi


IBM P8 Ürün Ailesi (Content İçin)

Erkan Sezer

FileNet ile ilgili bir kaynakta okuduğum bir bilgiyi paylaşmak istiyorum , IBM P8 Platformunun content bazılı ürünleri aşağıda liste halinde bulabilirsiniz. Aslında bu kadar geniş bir ürün yelpazesi olduğunu düşünmüyordum , bunu okuyunca öğrenecek daha çok fazla şey olduğunu gördüm :)

IBM FileNet Content Manager

IBM FileNet Forms Manager

IBM FileNet Image Manager Active Edition

IBM FileNet Content Federation Services

IBM FileNet Team Collaboration Manager

IBM FileNet Web Site Manager

IBM FileNet Capture Desktop

IBM FileNet Capture Professional

IBM FileNet Content Services

IBM FileNet Document Publisher

IBM FileNet Fax

IBM FileNet IDM Desktop

IBM FileNet Image Services

IBM FileNet Remote Capture Services

IBM FileNet Report Manager

IBM FileNet Site Publisher

IBM FileNet Web Services/Open Client

IBM FileNet Connectors for SharePoint®

Kaynak :  IBM Filenet Content Manager Implementation Best Practices and Recommendations (Redbooks)


07 Şubat 2010 Pazar


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 Core Components

Erkan Sezer

Process Engine , Application Engine ve Content Engine Filenet P8 platformunun Core componentleridir. Bunları kısaca açıklayacak olursak;

Process Engine:Workflow olarak adlandıracağımız Business Process leri oluşturmamızı , yönetmemizi , simule etmemizi ve modellemizi sağlayan core componentteir. Kendi içinde bulunan componentlarla anlatılanları sağlamaktadır.

Content Engine:Genellikle Administrator`ların kullandığı Workflow ve Custom objeleri kolayca yönetmemizi sağlar. Adminler content engine vasıtası ile her türlü objeyi, property`i , class`ı , storage vb objeleri kolay ve zahmetsiz şekilde oluşturur , yönetirler.

Application Engine: En basit açıklamayla process ve content kısmını host etmemizi sağlar. Yani Workplace , Java Appletleri ve develop edeceğimiz uygulama için bizlere gerekli olan web service ve dll leri sağlar. Yani process engine ile content engine`i için bize presentation layer vazifesi görür.


26 Ocak 2009 Pazartesi


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 Perşembe


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