- Java: 11 veya daha yüksek
- Maven: 3.6+
- İşletim Sistemi: macOS, Linux veya Windows
macOS:
brew install openjdk@11Linux (Ubuntu/Debian):
sudo apt-get install openjdk-11-jdkWindows:
- https://adoptopenjdk.net/ veya https://www.oracle.com/java/technologies/downloads/ adresinden indirin
Kurulumunuzu kontrol edin:
java -version
javac -versionmacOS:
brew install mavenLinux (Ubuntu/Debian):
sudo apt-get install mavenWindows:
- https://maven.apache.org/download.cgi adresinden indirin ve PATH'e ekleyin
Kurulumunuzu kontrol edin:
mvn -versioncd /Users/elis/Desktop/otomasyon
mvn clean compilemvn testTemel 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.shotomasyon/
├── 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
Tüm otomasyon görevlerinin temel arayüzü.
public interface AutomationTask {
void execute() throws Exception;
String getName();
String getDescription();
}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();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();import com.otomasyon.tasks.FileOperationTask;
FileOperationTask copyTask = new FileOperationTask(
"Dosya Kopyalama",
"source/file.txt",
"backup/file.txt",
FileOperationTask.OperationType.COPY
);
scheduler.executeNow(copyTask);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);import com.otomasyon.tasks.SystemCommandTask;
SystemCommandTask systemTask = new SystemCommandTask(
"Sistem Kontrolü",
"df -h" // Disk kullanımını göster
);
scheduler.executeNow(systemTask);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);Loglar iki yere yazılır:
- Konsol: Gerçek zamanlı takip için
- Dosya:
logs/automation.log
Loglama seviyesini src/main/resources/logback.xml dosyasından değiştirebilirsiniz.
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());
}// Belirli bir görevi iptal et
scheduler.cancel("Görev Adı");
// Tüm görevleri iptal et
scheduler.cancelAll();// Kaç görev zamanlanmış
int count = scheduler.getScheduledTaskCount();
// Zamanlanmış görevlerin adları
Set<String> names = scheduler.getScheduledTaskNames();// Geçmişi temizle
scheduler.clearHistory();
// Belirli bir görevin geçmişini kontrol et
List<TaskExecutionResult> taskHistory = scheduler.getTaskHistory("Görev");# Java yolunuzu kontrol edin
which java
# Veya Java yüklü değilse kurun
brew install openjdk@11# Maven yükleyin
brew install maven# Temiz derleme yapın
mvn clean compile
# Hataları ayrıntılı görmek için
mvn clean compile -X# Testleri atlayıp derleyin
mvn clean compile -DskipTestsHerhangi bir soru veya sorun için:
- Logları kontrol edin:
logs/automation.log - README.md dosyasını inceleyin
- Örnek kodları inceleyin
Happy Automating! 🤖