Skip to content

Latest commit

 

History

History
360 lines (268 loc) · 8.07 KB

File metadata and controls

360 lines (268 loc) · 8.07 KB

Java Otomasyon Sistemi - Başlangıç Rehberi

📋 Sistem Gereksinimleri

  • Java: 11 veya daha yüksek
  • Maven: 3.6+
  • İşletim Sistemi: macOS, Linux veya Windows

Hızlı Başlangıç

1. Java Kurulumu

macOS:

brew install openjdk@11

Linux (Ubuntu/Debian):

sudo apt-get install openjdk-11-jdk

Windows:

Kurulumunuzu kontrol edin:

java -version
javac -version

2. Maven Kurulumu

macOS:

brew install maven

Linux (Ubuntu/Debian):

sudo apt-get install maven

Windows:

Kurulumunuzu kontrol edin:

mvn -version

3. Projeyi Derleme

cd /Users/elis/Desktop/otomasyon
mvn clean compile

4. Testleri Çalıştırma

mvn test

5. Uygulamayı Çalıştırma

Temel demo:

mvn exec:java -Dexec.mainClass="com.otomasyon.AutomationSystemDemo"

Gerçek dünya örneği:

mvn exec:java -Dexec.mainClass="com.otomasyon.RealWorldAutomationExample"

Veya basit script kullanın:

bash run.sh

Proje Yapısı

otomasyon/
├── src/
│   ├── main/
│   │   ├── java/com/otomasyon/
│   │   │   ├── core/                    # Temel arayüzler
│   │   │   │   ├── AutomationTask.java
│   │   │   │   └── TaskExecutionResult.java
│   │   │   ├── scheduler/               # Görev zamanlayıcı
│   │   │   │   └── AutomationScheduler.java
│   │   │   ├── tasks/                   # Görev implementasyonları
│   │   │   │   ├── BaseAutomationTask.java
│   │   │   │   ├── DataProcessingTask.java
│   │   │   │   ├── FileOperationTask.java
│   │   │   │   ├── ReportGenerationTask.java
│   │   │   │   └── SystemCommandTask.java
│   │   │   ├── config/                  # Konfigürasyon
│   │   │   │   └── ConfigurationLoader.java
│   │   │   ├── AutomationSystemDemo.java
│   │   │   └── RealWorldAutomationExample.java
│   │   └── resources/
│   │       └── logback.xml
│   └── test/
│       └── java/com/otomasyon/
│           └── AutomationSystemTest.java
├── config/
│   └── automation-config.json           # JSON konfigürasyonu
├── pom.xml                              # Maven yapılandırması
├── README.md                            # Proje açıklaması
├── QUICKSTART.md                        # Bu dosya
├── install.sh                           # Kurulum scripti
└── run.sh                               # Çalıştırma scripti

Temel Konseptler

AutomationTask

Tüm otomasyon görevlerinin temel arayüzü.

public interface AutomationTask {
    void execute() throws Exception;
    String getName();
    String getDescription();
}

AutomationScheduler

Görevleri zamanlamak ve yürütmekten sorumlu merkezi yönetici.

AutomationScheduler scheduler = new AutomationScheduler(4); // 4 thread

// Hemen çalıştır
scheduler.executeNow(task);

// Bir kez zamanla
scheduler.scheduleOnce(task, 5, TimeUnit.SECONDS);

// Periyodik çalıştır
scheduler.scheduleRepeatedly(task, 0, 10, TimeUnit.SECONDS);

// Sabit gecikmeli çalıştır
scheduler.scheduleWithFixedDelay(task, 5, 10, TimeUnit.SECONDS);

// Kapatır
scheduler.shutdown();

Örnek Kullanımlar

Örnek 1: Veri İşleme Görevi

import com.otomasyon.scheduler.AutomationScheduler;
import com.otomasyon.tasks.DataProcessingTask;

// Scheduler oluştur
AutomationScheduler scheduler = new AutomationScheduler(2);

// Görev oluştur
DataProcessingTask task = new DataProcessingTask(
    "Metin Dönüştürme",
    "merhaba java",
    DataProcessingTask.ProcessingType.UPPERCASE
);

// Hemen çalıştır
scheduler.executeNow(task);

// Kapatır
scheduler.shutdown();

Örnek 2: Dosya İşlemleri

import com.otomasyon.tasks.FileOperationTask;

FileOperationTask copyTask = new FileOperationTask(
    "Dosya Kopyalama",
    "source/file.txt",
    "backup/file.txt",
    FileOperationTask.OperationType.COPY
);

scheduler.executeNow(copyTask);

Örnek 3: Periyodik Rapor Oluşturma

import com.otomasyon.tasks.ReportGenerationTask;

ReportGenerationTask report = new ReportGenerationTask(
    "Günlük Rapor",
    "reports/daily_report.txt"
).withContent("Bu günlük rapordur");

// Her 24 saatte bir çalıştır
scheduler.scheduleRepeatedly(report, 0, 24, TimeUnit.HOURS);

Örnek 4: Sistem Komutu Çalıştırma

import com.otomasyon.tasks.SystemCommandTask;

SystemCommandTask systemTask = new SystemCommandTask(
    "Sistem Kontrolü",
    "df -h"  // Disk kullanımını göster
);

scheduler.executeNow(systemTask);

Örnek 5: Özel Görev Oluşturma

import com.otomasyon.tasks.BaseAutomationTask;

public class EmailSendingTask extends BaseAutomationTask {
    private String recipient;
    
    public EmailSendingTask(String name, String recipient) {
        super(name, "E-mail gönderme");
        this.recipient = recipient;
    }
    
    @Override
    public void execute() throws Exception {
        logTaskInfo("E-mail gönderiliyor: " + recipient);
        // E-mail gönderme mantığı burada
        logTaskInfo("E-mail başarıyla gönderildi");
    }
}

// Kullanım
EmailSendingTask emailTask = new EmailSendingTask(
    "Günlük Bildirim",
    "user@example.com"
);

scheduler.executeNow(emailTask);

🔍 Loglama

Loglar iki yere yazılır:

  1. Konsol: Gerçek zamanlı takip için
  2. Dosya: logs/automation.log

Loglama seviyesini src/main/resources/logback.xml dosyasından değiştirebilirsiniz.

📊 Çalışma Geçmişi

Scheduler çalışan tüm görevlerin geçmişini kaydeder:

// Tüm görevlerin geçmişini al
List<TaskExecutionResult> history = scheduler.getExecutionHistory();

// Belirli bir görevin geçmişini al
List<TaskExecutionResult> taskHistory = scheduler.getTaskHistory("Görev Adı");

// Her sonuç için
for (TaskExecutionResult result : history) {
    System.out.println("Görev: " + result.getTaskName());
    System.out.println("Başarı: " + result.isSuccess());
    System.out.println("Süre: " + result.getExecutionDuration() + " ms");
    System.out.println("Mesaj: " + result.getMessage());
}

🛠️ Gelişmiş Özellikler

Zamanlanmış Görevleri İptal Etme

// Belirli bir görevi iptal et
scheduler.cancel("Görev Adı");

// Tüm görevleri iptal et
scheduler.cancelAll();

Zamanlanmış Görevleri Kontrol Etme

// Kaç görev zamanlanmış
int count = scheduler.getScheduledTaskCount();

// Zamanlanmış görevlerin adları
Set<String> names = scheduler.getScheduledTaskNames();

Geçmiş Yönetimi

// Geçmişi temizle
scheduler.clearHistory();

// Belirli bir görevin geçmişini kontrol et
List<TaskExecutionResult> taskHistory = scheduler.getTaskHistory("Görev");

🐛 Sorun Giderme

"Java command not found"

# Java yolunuzu kontrol edin
which java

# Veya Java yüklü değilse kurun
brew install openjdk@11

"Maven command not found"

# Maven yükleyin
brew install maven

Derleme Hataları

# Temiz derleme yapın
mvn clean compile

# Hataları ayrıntılı görmek için
mvn clean compile -X

Test Hatası

# Testleri atlayıp derleyin
mvn clean compile -DskipTests

📚 Faydalı Kaynaklar

📞 Destek

Herhangi bir soru veya sorun için:

  1. Logları kontrol edin: logs/automation.log
  2. README.md dosyasını inceleyin
  3. Örnek kodları inceleyin

Happy Automating! 🤖