Makale Özeti

Bu makalede work item xml dökumanın şemasını inceleyip, adım adım sıfırdan bir work item tipi oluşturacağız.

Makale

Work Item Type XML dokümanı yapısı

 

Daha önceki work item özelleştirme başlıklı makalemde work item nedir, neden özelleştirmek gerekir konusuna giriş yapmış ve witexport ve witimport komut satırı araçları ile work item xml dökumanını team foundation server’dan dışarıya almayı (witexport aracı ile) ve tekrar sisteme dahil etmeyi (witimport aracı ile) örneklendirmiştim.

Bu makalede work item xml dökumanın şemasını inceleyip, adım adım sıfırdan bir work item tipi oluşturacağız.

Öncelikle mevcut bir bir work item’ın xml verisini export edelim ve genel hatlarını inceleyelim.

witexport /f c:\tfsfiles\task_template.xml /t BIZT /p testproject /n task

/f : export yapılacak olan dosyanın oluşturulacağı konumdur.Bu örnekte c:\tfsfiles\task_template.xml konumu verilmiştir.

/t : hangi team foundation servera bağlanılacağının belirlendiği parametredir. Bu örnekte BIZT adlı sunucuya bağlanılacaktır.

/p: team foundation server üzerindeki hangi team project üzerinden work item type export edileceğini belirler. Bu örnekte testproject adındaki team projectden export yapılacaktır.

/n: hangi work item type’ın export edileceğinin belirlendiği paramtedir. Bu örnekte task work item type’i belirtilmiştir.

Work Item Type – Genel hatları

Aşağıdaki resimde de gözüktüğü gibi bir work item tipi aşağıdaki temel bölümlerden oluşur. WITD root elemeti altında WORKITEMTYPE elementi yer alır ve bu elemente verilen name özelliği ile work item typein sistemdeki adını belirler. Task,Bug,Requirement gibi.

DESCRIPTION : Work item type in ne iş için kullanılacağı ile ilgili genel bir bilgilendirme metni taşıyan elementdir.

FIELDS: Work item içinde yer alacak field’ların yani alanların tanımlandığı elementtir. Bu element altında tanımlanan fieldlar, form üzerinde gözükmek zorunda olan fieldlar değildir. Work item type form arabirimi üzerinden görüntülenecek ve üzerinde işlem yapılabilecek fieldlar tanımlanabileceği gibi arabirim üzerinde asla gözükmeyecek fieldlarda tanımlanabilmektedir. Ayrıca bu bölüm üzerinde hangi alanın hangi şekilde değere sahip olması gerektiği gibi tanımlamalar yapılır.

WORKFLOW: Work item typein durumlarının tanımlandığı elementtir. Örneğin Active durumda olan bir work item Closed duruma geçirildiğinde ClosedDate alanını otomatik değer atanması, Active duruma geçirilmiş bir work item’in tekrar New durumuna geçirilmemesi yada hangi durumlara geçirilebileceğinin belirlenmesi yapılır.

FORM: Work item typein kullanıcı arayüzünün, hani fieldların görüntüleneceğinin belirlendiği elementdir.

 

Adım adım Work Item Type oluşturma

Work item customization işi ya kendi sürecinize göre bir work item type eklemek için ya da mevcut work item typeları yine sürece entegre etme adına özelleştirme için gerçekleştirilir.

Dağıtım (deployment) yani müştreye uygulamanın yüklenmesi işini work item ile takip etmek adına içerisinde aşağıdaki alanlar olan bir work item tipi oluşturmaya başlayalım adı DagitimPlani olarak belirleyelim.

Yeni DagitimPlani Work Item alanları

Durum : İşin durumu.

MusteriAdi : Hangi müşteriye yükleme yapılacağını belirler.Zorunlu değildir. Eğer bu alana bir değer girilmediyse tüm müşterilerde güncelleme yapılacaktır.

UygulamaAdi: Hangi uygulamanın müşteriye kurulacağını belirler

GerceklesmeTarihi: Hangi tarihte dağıtım işinin gerçekleştiğini belirler.

<?xml version="1.0" encoding="utf-8"?>

<witd:WITD version="1.0" xmlns:witd="http://schemas.microsoft.com/VisualStudio/2005/workitemtracking/typedef">

<WORKITEMTYPE name="DagitimPlani">

<DESCRIPTION>Müşteriye yapılacak dagitim işlerini yönetmek ve planlamak için kullanılır.</DESCRIPTION>

<FIELDS>

<FIELD name="State" refname="System.State" type="String">

<HELPTEXT>İşin durumunu belirler.</HELPTEXT>

</FIELD>

<FIELD name="MusteriAdi" refname="CH.MusteriAdi" type="String">

</FIELD>

<FIELD name="UygulamaAdi" refname="CH.UygulamaAdi" type="String">

<REQUIRED />

</FIELD>

<FIELD name="GerceklesmeTarihi" refname="CH.GerceklesmeTarihi" type="DateTime"/>

</FIELDS>

</WORKITEMTYPE>

</witd:WITD>

 

Yukarıdaki xml elementi dagitimplani work iteminin belirlediğimiz gereksinimlerine göre fieldları içerecek şekilde yazılmıştır.

WORKITEMTYPE elementi içinde name özelliği verilerek yeni work item typein adının DagitimPlani olması sağlanmıştır.

FIELDS elementi içerisinde;

FIELD elemenleri tanımlanır, name alanı alanın adını refname alanı ise alanın daha sonra form üzerine kontrolleri eklerken kullanılacak olan referans adıdır.type özelliği ise bu alanın veri türünün ne olduğunu belirlemektedir.

WORKFLOW ve FORM bölümlerini ekleyelim.

<?xml version="1.0" encoding="utf-8"?>

<witd:WITD version="1.0" xmlns:witd="http://schemas.microsoft.com/VisualStudio/2005/workitemtracking/typedef">

<WORKITEMTYPE name="DagitimPlani">

<DESCRIPTION>Müşteriye yapılacak dagitim işlerini yönetmek ve planlamak için kullanılır.</DESCRIPTION>

<FIELDS>

<FIELD name="State" refname="System.State" type="String">

<HELPTEXT>İşin durumunu belirler.</HELPTEXT>

</FIELD>

<FIELD name="MusteriAdi" refname="CH.MusteriAdi" type="String"/>

<FIELD name="UygulamaAdi" refname="CH.UygulamaAdi" type="String">

<REQUIRED />

</FIELD>

<FIELD name="GerceklesmeTarihi" refname="CH.GerceklesmeTarihi" type="DateTime"/>

</FIELDS>

<WORKFLOW>

<STATES>

<STATE value="Bekliyor"/>

<STATE value="Gerçekleştirildi" />

</STATES>

<TRANSITIONS>

<TRANSITION from="" to="Bekliyor">

<REASONS>

<DEFAULTREASON value="Yeni" />

</REASONS>

</TRANSITION>

<TRANSITION from="Bekliyor" to="Gerçekleştirildi">

<REASONS>

<DEFAULTREASON value="Dağıtım gerçekleştirildi." />

</REASONS>

<FIELDS>

<FIELD refname="CH.GerceklesmeTarihi">

<SERVERDEFAULT from="clock" />

</FIELD>

</FIELDS>

</TRANSITION>

</TRANSITIONS>

</WORKFLOW>

<FORM>

<Layout>

<Group>

<Column PercentWidth="50">

<Control FieldName="CH.MusteriAdi" Type="FieldControl" Label="Müşteri Adı" LabelPosition="Left" />

<Control FieldName="CH.UygulamaAdi" Type="FieldControl" Label="Uygulama Adı" LabelPosition="Left" />

</Column>

<Column PercentWidth="50">

<Control FieldName="System.State" Type="FieldControl" Label="Durum" LabelPosition="Left" />

<Control FieldName="CH.GerceklesmeTarihi" readonly="true" Type="FieldControl" Label="Gerçekleşme Tarihi" LabelPosition="Left" />

</Column>

</Group>

</Layout>

</FORM>

 

</WORKITEMTYPE>

</witd:WITD>

 

WORKFLOW elementi içerisinde ;

STATES elementi ve içerisindeki STATE elementleri ile bu work item typein alabileceği durumlar belirlenmektedir.

TRANSITIONS ve TRANSITION elemenleri ile hangi durumlar arasında geçişlerin yapılabileceği belirlenmektedir.

-Hangi durumdayken hangi duruma geçileceği.
-Bir duruma geçildiğinde yapılacak aksiyonların (bir fielda otomatik değer atanması gibi) belirlenmesi gibi adımlar burada gerçekleştirilir. Örneğin work item durumu Gerçekleştirildi olarak değiştirildiğinde readonly olarak belirlenmiş olan Gerçekleşme Tarihi alanına sistem tarihi otomatik olarak atılmaktadır.

FORM elementi içerisinde;

Bu elementi içerisinde esas olan Control elementidir. Bu element ile fieldlara karşılık gelen kontroller oluşturulabilir. Yukarıdaki örnekte Group kontrol eklenerek form iki sütuna (Column elementi ile) bölünmüştür. Column elementi içerisinde alt alta kontrolleri ekledikçe satılar oluşturulmuş olunur. Bu şekile yukarıdaki form dört hücreye bölünmüş olmaktadır.

Yukarıda oluşturduğumuz work item typeini team foundation içerisine dahil etmek için aşağıdaki komutu çalıştırmamız gerekmektedir.

witimport /f c:\tfsfiles\dagitimplani.xml /t BIZT /p testproject

Bu aracın parametrelerinin görevi witexport aracının parametrelerinin görevi ile neredeyse aynıdır.

 

Yukarıdaki resimde gözüktüğü gibi yeni oluşturduğumuz work item typei work item listesine eklenmiştir.

Dagitimplani form arayüzü ise aşağıdaki şekilde olacaktır.

 

Work item özelleştirme ile ilgili biraz daha detay vermeye çalıştığımız bu makalemizde şüphesiz ki work item xml dökumanın yapısını tam olarak incelemedik. Bunun referansı için msdn’i kullanabilirsiniz. Yada Team Foundation Server Power Toys kurup xml dokümanı ile muhatap olmadan work item özelleştirme işlemini gerçekleştirebilirsiniz.