wahoo...cron works

This commit is contained in:
JT Smith 2006-02-12 19:02:38 +00:00
parent dc0ff0d1ed
commit 80288a38b2
3 changed files with 23 additions and 7 deletions

View file

@ -19,6 +19,8 @@ use DateTime;
use DateTime::Cron::Simple;
use POE;
use WebGUI::Session;
use WebGUI::Workflow::Cron;
use WebGUI::Workflow::Instance;
#-------------------------------------------------------------------
@ -82,7 +84,12 @@ sub addJob {
jobId=>$job->{jobId},
config=>$config,
schedule=>join(" ", $job->{minuteOfHour}, $job->{hourOfDay}, $job->{dayOfMonth}, $job->{monthOfYear}, $job->{dayOfWeek}),
workflowId=>$job->{workflowId}
runOnce=>$job->{runOnce},
workflowId=>$job->{workflowId},
className=>$job->{className},
methodName=>$job->{methodName},
parameters=>$job->{parameters},
priority=>$job->{priority}
}
}
@ -107,7 +114,15 @@ sub checkSchedule {
my ($kernel, $self, $job, $now) = @_[KERNEL, OBJECT, ARG0, ARG1];
my $cron = DateTime::Cron::Simple->new($job->{schedule});
if ($cron->validate_time($now)) {
# kick off an event here once we know what that api looks like
my $session = WebGUI::Session->open($self->{_config}->getWebguiRoot, $job->{config});
my $instance = WebGUI::Workflow::Instance->create($session, {
workflowId=>$job->{workflowId},
className=>$job->{className},
methodName=>$job->{methodName},
parameters=>$job->{parameters},
priority=>$job->{priority}
});
$session->close;
}
}
@ -125,6 +140,7 @@ sub checkSchedules {
foreach my $jobId (keys %{$self->{_jobs}}) {
$kernel->yield("checkSchedule", $self->{_jobs}{$jobId}, $now)
}
$kernel->delay_set("checkSchedules",60);
}