Gantt aracı, projelerin zaman çizelgelerini görsel olarak planlamak ve takip etmek için kullanılır.
Hangi görevin ne zaman başladığını, ne zaman biteceğini ve ne kadarının tamamlandığını gösterir. Aynı zamanda görevler arasındaki bağlantıları da (önce-sonra ilişkisi) gösterebilir.
Araç Kutusunda Görünüm Free Formdaki Görünüm
Responsive Formda Görünüm
Uyumluluk
| Free Form | Responsive Form | Mobile |
Gantt Aracının Özellikleri:
Type: Eklenen form aracının alan türünü gösterir. Burada yer alan değer değiştirilemez.
Name: Eklenen form aracına bir isim verilir. Form içerisinde kullanılacak aksiyonlarda, Gantt_1 alan ismi olarak burada tanımlanan alan ismi kullanılır.
Edit Form: Gantt şemasında kullanılacak verilerin alınacağı formu belirtir. Bu form, projelere ait bilgilerin kaynağını oluşturur.
Bulunduğunuz modülde tanımlı olan tüm formlar (örneğin, proje formları) bu alanda listelenir. Sağ tarafta bulunan küçük üçgen ikonuna tıklanarak formlar açılır ve ilgili form seçimi yapılabilir.
Completion- Heading-Start-Finish: Bu başlık altında yazılan tüm alanlar, edit formun alanlarıyla eşleştirme yapılacak alanlardır. Seçim yaptığınız alanlar edit form içindeki alanlara karşılık gelmektedir ve eşleştirmeleri bu detaya göre yapılmalıdır.
| Edit forma ait tabloyla ilgili Data Query alanına sorgu yazılmazsa ‘Completion- Heading-Start-Finish’ alanlarında listeleme işlemi gerçekleşmez. Edit form seçilmeli daha sonra Data Query alanına sorgu yazılmalı sonrasında bu dört alanlar doldurulmalıdır. |
Completion: Gantt şemasındaki görevin yüzde kaç tamamlandığı göstermek için tanımlanacak alandır.
| Completion % değeri için Edit Form üzerinden giriş yapılırken değer yüzde formatında değil, ondalık formatta girilmelidir. |
Örneğin, %5 olarak görünmesini istediğiniz bir tamamlanma oranını Edit Form’dan girerken 0.05 şeklinde, %50 için 0.5, %100 için 1 şeklinde değer girilmelidir. Bu sayede Gantt aracı, tamamlanma yüzdesini doğru şekilde hesaplayıp çubuk grafikte gösterebilir.
Heading: Seçilen formda başlık (tanım) alanı olarak kullanılır. Genellikle projelerin veya görevlerin adlarının bulunduğu sütun seçilir.
Bu alan, aksiyon içerisinde Client tarafında yer alan Gantt şemasında Description sütunu altında görüntülenir. Gantt şemasında satırlar ve alt kırılımlar (hiyerarşik yapı) bu alandaki değerler üzerinden listelenir.
Bu nedenle, Heading alanı olarak proje adı, görev adı gibi tanımlayıcı bilgilerin bulunduğu bir alanın seçilmesi önerilir.
Start:Başlangıç tarihinin girildiği alanın ismi seçilir.
Finish:Bitiş Tarihinin girildiği alanın ismi seçilir.
Main Task:Bu alan sorgunuzdan (veritabanı tablonuzdan) gelen ve kaydedilen projelerin birbiriyle ilişkisini göstermek için kullanılır. Bu alan, projelerin birbirine nasıl bağlı olduğunu ifade eden bir ID değerini içerir.
Eğer tablonuzda projeler arası hiyerarşiyi gösteren bir ParentID alanı varsa, bu alan "Main Task" olarak kullanılır. Örneğin:
- Ana (baba) projelerin ParentID değeri 0 olarak tanımlanır. Bu projeler herhangi bir başka projeye bağlı değildir.
- Alt (çocuk) projelerin ParentID değeri ise bağlı oldukları ana projenin UserTableID değeridir.
Bu yapı sayesinde projeler arası hiyerarşik ilişki tanımlanabilir. Gantt şeması gibi yapılarda bu ilişki, görevlerin (task'ların) birbirine olan bağlılıklarını göstermek için kullanılır.
Connection Form:Gantt şemasında görevler arası bağlantıların tanımlandığı form alanıdır. Bu alan, kullanıcı arayüzünde (client tarafında) projeler arasında ok çizilerek görevler arası ilişki oluşturulduğunda, ilişkili kayıtların veri tabanına kaydedildiği formu belirtmek için kullanılır.
Resource ID: İlişkili kayıtların veri tabanına kaydedildiği formda, görevler arası bağlantıda okun başlangıç (kaynak) noktasını temsil eden alandır. Başka bir deyişle, bağlantının hangi görevden çıktığını belirten referans alandır.Okun çıktığı görevin ID bilgisini tabloda tutar.
Target ID: Target ID, ilişkili kayıtların veri tabanına kaydedildiği formda, görevler arası bağlantıda okun yöneldiği yani bağlandığı hedef görevi temsil eden ve bu göreve ait ID bilgisini tutan alandır.
Time Interval: Time Interval, Gantt şemasında görevlerin zaman çizelgesinde hangi aralıklarla gösterileceğini belirleyen ve dakika cinsinden tanımlanan parametredir. Bu alan sayesinde görevler örneğin her 15, 30 veya 60 dakikada bir olacak şekilde zaman eksenine yerleştirilir. Gösterim detay seviyesi bu süreye göre ayarlanır.
Help Text: Form aracı üzerine Mouse ile gelindiğinde açıklama çıkması için girilen metindir.
Height/Width: Form aracının yüksekliğini ve genişliğini düzenler.
From left-top: Form aracının soldan ve üstten uzaklığını düzenler.
| (Width)Genişlik alanı ve From left-top alanı Responsive Formlardan kaldırılmıştır. |
Connection Query(Sql Server): Gantt şemasında görevler arasında bağlantı (bağımlılık) varsa, bu bağlantıların sistem tarafından okunup görselleştirilebilmesi için kullanılan SQL sorgusudur. Görevlerin birbirine nasıl bağlandığını gösteren ilişkisel veriler bu sorgu aracılığıyla getirilir. Eğer görevler arası bağlantı kullanılmıyorsa, bu alanın boş bırakılması durumunda Gantt şeması yine çalışır; sadece bağlantılar (oklar) görünmez. Bağlantılı veri, ayrı bir ilişkisel yapıdaysa bu sorgu aracılığıyla tanımlanmalıdır. Ancak tüm veriler tek bir sorguda gösteriliyorsa sadece Data Query yeterlidir.
Data Query: SQL Query alanı, Gantt şemasında listelenecek görevlerin sistem tarafından hangi verilerle oluşturulacağını belirleyen sorgunun yazıldığı alandır. Bu alana yazılan sorgu, Gantt şemasında görevlerin nasıl sıralanacağını, hangi tarih aralıklarında görüneceğini ve hangi görevlerin birbirine bağlı olduğunu belirleyen temel verileri sağlar.
Ayrıca bu sorguda, görevler arası hiyerarşik yapının oluşturulabilmesi için ParentID alanı mutlaka yer almalıdır. ParentID, bir görevin hangi ana göreve bağlı olduğunu belirten alandır. Eğer bu alan kullanılmazsa, Gantt şeması görevleri yalnızca düz liste olarak görüntüler ve alt görev – üst görev ilişkisini kuramaz. Bu nedenle ParentID hem görevlerin iç içe gösterilebilmesi hem de görev yapısının mantıksal olarak gruplandırılabilmesi için zorunlu bir alandır. Özellikle ana görevlerin ParentID değeri 0 olmalı, alt görevler ise bağlanacakları üst görevin ID’sini taşımalıdır.
| Data Query sorgusunda CONVERT Kullanımının Önemi |
Bazı Gantt bileşenleri UserTableID ve ParentID gibi alanların mutlaka int tipinde olmasını bekler.
Eğer bu alanlar NVARCHAR, VARCHAR, UNIQUEIDENTIFIER veya farklı bir türde ise, Gantt çizelgesi çalışmayabilir ya da bağlantılar görünmeyebilir Bu sebeple;
*CONVERT(INT, UserTableID) AS UserTableID,
*CONVERT(INT, ParentID) AS ParentID
şeklinde tür dönüşümleri yapmak zorunlu olabilir.
Fit Horizantal: Kullanıcının ekranında, form aracını tam ekrana sığdırır.
Display: Bu alan ‘No’ olarak ayarlandığında, ilgili Form aracı ekranda görünmez hale gelir.
Gantt Örneği:
Projelerin takibini yapabileceğimiz ve bu süreçte Gantt aracını kullanacağımız bir senaryo oluşturalım. Bu senaryoda, birbirine bağlı projeleri görebilecek, projelerin ne zaman başlayıp ne zaman biteceğini takip edebilecek ve tamamlanma yüzdelerini görüntüleyebileceğiz. Ayrıca, bu bilgileri kullanıcı tarafında (client) görebilir ve Gantt üzerinden kolayca düzenleyebiliriz.
Gantt aracını kullanabilmek için iki adet forma ihtiyacımız vardır. Öncelikle, projelerin kayıt edileceği bir form ( tablo) oluşturalım. Bu forma proje adı, başlangıç ve bitiş tarihleri, tamamlanma yüzdesi ve Parent ID (üst proje kimliği) alanlarını ekleyelim.
Client tarafından birkaç proje kaydı girelim.
Eklenen kayıtları görüntülemek için, Projects tablomuzdan aşağıdaki sorguyu kullanabiliriz: SELECT
Projects.UserTableID,
Projects.ProjectName,
Projects.StartDate,
Projects.EndDate,
Projects.CompletionRate,
Projects.ParentID
FROM
dbo.Projects WITH (NOLOCK)
Bu sorgunun çıktısı aşağıdaki gibidir:
Daha sonra, görevler arasındaki bağlantıların tanımlanacağı ProjectConnections adlı yeni bir form oluşturalım. Bu forma SourceID ve TargetID isimli alanlar ( figure box'lar) ekleyip kaydedelim.
Oluşturduğumuz bu form, Gantt elemanının özellikler bölümündeki Connection Form alanına atanacaktır. Ayrıca, aynı özellikler bölümünde bulunan ResourceID ve TargetID alanlarına da, bu formdaki karşılık gelen alan isimleri (SourceID ve TargetID) girilecektir.
Son olarak, report tipi bir form oluşturalım. Ardından, sol taraftaki elemanlar menüsünden Gantt aracını seçip bu forma sürükleyip bırakalım.
Daha sonra, Gantt aracının özellikler bölümüne geçelim. İlk olarak, görevlerin Gantt şemasında görüntülenebilmesi için Data Query alanına aşağıdaki sorguyu yazalım:
SELECT
Convert(int,UserTableID) AS UserTableID,
Projects.ProjectName,
Projects.StartDate,
Projects.EndDate,
Projects.CompletionRate,
Convert(int,ParentID) AS ParentID
FROM
dbo.Projects WITH (NOLOCK)
Sorgu tanımlandıktan sonra, Gantt aracının üzerinde bulunan alanları bu sorguya uygun şekilde doldurmalıyız. Heading alanına proje adını gösteren ProjectName, Start ve Finish alanlarına sırasıyla StartDate ve EndDate, tamamlanma oranını gösterecek alana CompletionRate, görev hiyerarşisini kurabilmek için de ParentID yazılmalıdır. Ayrıca bu şemada projeler arası bağlantı kurulacaksa, bağlantıların tutulduğu form da tanımlanmalıdır. Gantt aracının özelliklerinde yer alan Connection Form alanına bağlantı formunun adı yazılır. Kaynak ve hedef görevleri temsil eden Resource ID ve Target ID alanlarına da ilgili connection formda yer alan SourceID ve TargetID gibi alan adları yazılarak bağlantı kurulabilir.
Bu ayarlamalar yapıldıktan sonra, projelerin ne zaman başlayıp bittiğini, birbirine nasıl bağlı olduğunu ve ilerleme yüzdelerini görselleştirilmiş şekilde izleyebiliriz. Üstelik bu bilgileri Gantt şeması üzerinden doğrudan güncellemek de mümkündür. Projeyi kaydedelim ve run tuşu ile Client ekranına gidelim.
Gantt aracının client ekranındaki görünümü:
Xpoda Client’ta Gantt şeması:
1)Görev ve alt görevleri başlangıç/bitiş tarihleriyle birlikte tablo ve zaman çizelgesi üzerinde gösterir. 2)Gün/hafta/ay/yıl ölçeklerinde görüntüleme imkânı sunar.
3)Görevler sistem tarafından, tamamlanma oranlarına göre renklendirilir.
4)Tamamlanma yüzdesi alanı sayesinde ilerleme hem sayısal hem de çubuk üzerinde doluluk olarak izlenebilir.
5)Yeni görev ekleme, alt görev tanımlama, tarih ve süreleri sürükle-bırak ile düzenleme gibi etkileşimli işlemler desteklenir.
Tamamlanma Yüzdesi Güncelleme – Sürükle-Bırak ile:
Gantt şemasında görev çubukları üzerinde sürükle-bırak işlemi ile tamamlanma yüzdesi kolayca güncellenebilir. Örneğin, “Figma design approval” görevi %10 tamamlanma oranındayken, çubuğun doluluk kısmı sağa doğru sürüklenerek %40’a çıkarılmıştır.
Bu işlem yapıldığında:
- Anında Görsel Güncelleme: Değişiklik, client ekranında anında görünür ve görev çubuğundaki doluluk oranı yeni değeri yansıtır.
- Veritabanı Güncellemesi: Herhangi bir SQL sorgusu çalıştırmaya gerek kalmadan, Gantt şemasındaki Completion alanına karşılık gelen sütun verisi otomatik olarak güncellenir. Böylece hem kullanıcı arayüzünde hem de veri tabanında senkronize bir değişiklik sağlanır.
Aşağıdaki görsellerde, sürükleme öncesi ve sonrası durum hem Gantt ekranında hem de proje verilerinde karşılaştırmalı olarak gösterilmektedir.
Görev Süresini Değiştirme – Sürükle-Bırak ile:
Gantt şemasında görevlerin başlangıç ve bitiş tarihleri, zaman çizelgesi üzerindeki görev çubuğu sürüklenerek kolayca güncellenebilir.
Örneğin, “Figma design approval” görevi başlangıçta 21.07.2025 – 26.07.2025 tarih aralığında planlanmışken, görev çubuğu sağa doğru sürüklenerek bitiş tarihi 28.07.2025 olarak güncellenmiştir.
Bu işlem yapıldığında:
- Anında Görsel Güncelleme: Değişiklik, client ekranında anında görünür ve görev çubuğu yeni tarih aralığına taşınır.
- Veritabanı Güncellemesi: Herhangi bir SQL sorgusu çalıştırmaya gerek kalmadan, Gantt şemasındaki Start ve Stop alanlarına karşılık gelen sütun verileri otomatik olarak güncellenir.
Alt Görevleri Olan Ana Kayıtların Silinmesi:
Gantt şemasında mevcut bir görev veya alt görev, doğrudan client ekranı üzerinden silinebilir.
Silmek istenen görevin çubuğunun sağ tarafındaki X ikonuna tıklanır.
Açılan onay penceresinde "Do you want to delete the selected records?" sorusu görüntülenir.
Delete butonuna basıldığında, ilgili görev hem Gantt ekranından kaldırılır hem de veritabanındaki karşılık gelen kayıt silinir.
| Gantt şemasında çocuk görevleri (alt görevleri) bulunan bir ana görev silindiğinde, bu işlem sonrasında hem ana görev hem de ona bağlı tüm alt görevler ekrandan kaldırılır. Ancak, veritabanında yalnızca ana kayıt silinir; alt görev kayıtları (çocuk kayıtlar) ParentID bilgisi ile birlikte tabloda kalmaya devam eder. |
Bu nedenle, silme işlemi yapılırken çocuk kayıtlara sahip ana görevlerin silinmesinde dikkatli olunmalı, veri tabanı tarafında da alt görevlerin temizlenmesi sağlanmalıdır. Aksi halde, veritabanında ParentID değeri artık bulunmayan kayıtlar kalabilir ve bu durum veri bütünlüğünü olumsuz etkileyebilir.
Yeni Görev Ekleme – Add New Row Butonu:
Gantt aracının hem sağ hem de sol üst köşesinde bulunan “Add New Row” butonu, yeni görev eklemek için kullanılır.
- Hiçbir kayda tıklanmadan bu butona basıldığında, Gantt üzerinde listenin en altında “New task” adıyla yeni bir görev satırı oluşur. Bu görev, parent (ana görev) tipindedir ve ekleme işlemiyle birlikte veritabanında da karşılık gelen kayıt otomatik olarak oluşturulur.
- Herhangi bir projeye tıklanmış haldeyken bu butona basılırsa, seçili projenin çocuğu (alt görevi) olarak yeni bir “New task” oluşturulur. Bu durumda, yeni görev veritabanında ParentID alanına seçili projenin ID’si atanmış şekilde kaydedilir.
- Alt bir görev seçiliyken “Add New Row” butonunun üzerine gelindiğinde, iki seçenek görünür:
- Add New Row → Seçili alt görevin altına, yeni bir alt görev ekler. Bu görev, seçili görevin ID’sini ParentID olarak alır.
- Add After Selected Line → Seçili alt görevin kardeşi olarak yeni bir görev ekler. Bu görev, seçili alt görevin ParentID değeri ile aynı ParentID’ye sahip olur.
- Oluşan “New task” kaydının adını değiştirmek için görev satırına çift tıklanmalıdır. Bu işlem, Gantt’ın beslendiği verilerin düzenlendiği edit form ekranına yönlendirme yapar.
- Edit form, tıklanan görevin verileriyle otomatik olarak eşleştirilmiş (mapped) şekilde açılır ve varsayılan görev adı olarak “New task” görüntülenir.
- Görev ismi edit form üzerinden değiştirilip kaydedildiğinde ve form kapatıldığında, Gantt ekranı otomatik olarak güncellenir ve ilgili görev, yeni belirlenen isim ile görüntülenir.
Görevler Arası Bağlantılar (Connections):
Gantt şemasında görevler arasında bağımlılık ilişkileri tanımlamak için bağlantı (connection) özelliği kullanılır. Bu özellik, proje planlamasında görevlerin birbirine hangi sırada ve hangi koşulda bağlı olduğunu görsel olarak ifade etmeye yarar.
- Bağlantı Oluşturma:
Bir görevin bitiş noktasından (sağ ucundaki küçük daire/handle) fare ile tutularak başka bir görevin başlangıç noktasına (sol ucundaki handle) sürüklenip bırakılmasıyla iki görev arasında bağlantı çizgisi oluşturulur. - Bağlantı Tipleri:
Genellikle Finish-to-Start (FS) tipi bağlantılar kullanılır (bir görev bittiğinde diğerinin başlaması). İhtiyaca göre Start-to-Start, Finish-to-Finish veya Start-to-Finish ilişkileri de tanımlanabilir. - Veritabanı Kaydı:
Bağlantı oluşturulduğunda, bu ilişki bilgisi veritabanındaki ilgili alana (örn. SourceID,TargetID) otomatik olarak kaydedilir. - Bağlantı Silme:
Mevcut bir bağlantı, client ekranı üzerinden silinemez. Silme işlemi:- Bağlantı bilgilerinin bulunduğu grid/tablo ekranından ilgili kayıt silinerek, veya
- SQL sorgusu ile doğrudan veritabanından
yapılabilir.
Bu yöntemlerle bağlantı kaldırıldığında, Gantt ekranı yenilendiğinde ilgili çizgi otomatik olarak kaybolur.