Bu proje, Symfony framework'ü kullanılarak geliştirilmiş, state machine ve workflow özelliklerini içeren bir görev yönetim sistemidir.
State Machine, bir nesnenin belirli durumlar arasında geçiş yapmasını yöneten ve kontrol eden bir tasarım modelidir. Temel özellikleri:
- Her zaman tek bir durumda bulunur
- Önceden tanımlanmış geçiş kurallarına göre hareket eder
- Geçişler kesin ve belirlidir
- Basit ve doğrusal süreçler için idealdir
Bu projede görev durumları (draft → in_progress → completed) bir state machine ile yönetilmektedir. Örneğin:
// Görev durumu değiştirme örneği
if ($workflow->can($task, 'start')) {
$workflow->apply($task, 'start'); // draft → in_progress
}
Workflow, daha karmaşık süreçleri ve durumlar arası geçişleri yönetmek için kullanılan bir modeldir. Özellikleri:
- Birden fazla durumda bulunabilir
- Dallanma ve birleşme noktaları içerebilir
- Karmaşık iş süreçlerini modelleyebilir
- Esnek ve ölçeklenebilir yapıdadır
Bu projede inceleme süreci (pending → under_review → approved/rejected) bir workflow ile yönetilmektedir. Örneğin:
// İnceleme durumu değiştirme örneği
if ($workflow->can($task, 'submit_for_review')) {
$workflow->apply($task, 'submit_for_review'); // pending → under_review
}
config/packages/workflow.yaml
dosyasında her iki süreç için ayrı tanımlamalar yapılmıştır:
framework:
workflows:
task_status:
type: 'state_machine'
# ... durum geçişleri
task_review:
type: 'workflow'
# ... inceleme süreçleri
Task
entity'si her iki süreci de destekleyecek şekilde tasarlanmıştır:
class Task
{
private string $status; // State Machine durumu
private string $reviewState; // Workflow durumu
}
Controller'larda her iki süreç de ayrı servisler üzerinden yönetilmektedir:
class TaskController
{
public function __construct(
private WorkflowInterface $taskStatusStateMachine,
private WorkflowInterface $taskReviewStateMachine
) {}
}
- draft → Taslak (başlangıç durumu)
- in_progress → Devam ediyor
- completed → Tamamlandı
- cancelled → İptal edildi
- pending → Beklemede (başlangıç durumu)
- under_review → İnceleniyor
- approved → Onaylandı
- rejected → Reddedildi
- changes_requested → Değişiklik istendi
- Symfony Framework
- Doctrine ORM
- Symfony Workflow Component
- Bootstrap & Font Awesome
- Twig Template Engine
- Projeyi klonlayın:
git clone [proje-url]
cd [proje-dizini]
- Bağımlılıkları yükleyin:
composer install
- Veritabanını oluşturun:
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate
- Symfony development sunucusunu başlatın:
symfony server:start
/
- Görev listesi/task/new
- Yeni görev oluşturma/task/{id}
- Görev detayları ve durum değiştirme
draft
→in_progress
(Görevi başlat)in_progress
→completed
(Görevi tamamla)draft/in_progress
→cancelled
(Görevi iptal et)
pending
→under_review
(İncelemeye gönder)under_review
→approved/rejected/changes_requested
(İnceleme sonucu)rejected/changes_requested
→under_review
(Tekrar incelemeye gönder)
State machine ve workflow yapılandırmaları config/packages/workflow.yaml
dosyasında bulunmaktadır. Bu yapılandırmalar:
- Durum geçişlerini
- Başlangıç durumlarını
- İzin verilen geçişleri
- Audit trail özelliklerini
tanımlar.
src/
├── Controller/
│ ├── TaskWebController.php # Web arayüzü controller'ı
│ └── TaskApiController.php # API controller'ı
├── Entity/
│ └── Task.php # Görev entity'si
└── Repository/
└── TaskRepository.php # Görev repository'si
templates/
└── task/
├── list.html.twig # Görev listesi şablonu
├── new.html.twig # Yeni görev şablonu
└── show.html.twig # Görev detay şablonu
Bu proje MIT lisansı altında lisanslanmıştır. Daha fazla bilgi için LICENSE
dosyasına bakın.