more spectre goodness, it almost runs!!

This commit is contained in:
JT Smith 2006-02-03 03:05:28 +00:00
parent 9ff0794746
commit d9a80d9f6f
6 changed files with 78 additions and 43 deletions

View file

@ -18,6 +18,8 @@ use strict;
use POE;
use POE::Component::IKC::Server;
use POE::Component::IKC::Specifier;
use Spectre::Cron;
use Spectre::Workflow;
#-------------------------------------------------------------------
@ -33,7 +35,6 @@ sub _start {
my $serviceName = "admin";
$kernel->alias_set($serviceName);
$kernel->call( IKC => publish => $serviceName, $publicEvents );
my $configs = WebGUI::Config->readAllConfigs($self->{_webguiRoot});
print "OK\n";
}
@ -55,31 +56,31 @@ sub _stop {
#-------------------------------------------------------------------
=head2 new ( webguiRoot )
=head2 new ( config )
Constructor.
=head3 webguiRoot
=head3 config
The path to the root of the WebGUI installation.
A WebGUI::Config object that represents the spectre.conf file.
=cut
sub new {
my $class = shift;
my $webguiRoot = shift;
my $self = {_webguiRoot=>$webguiRoot};
my $config = shift;
my $self = {_config=>$config};
bless $self, $class;
create_ikc_server(
port => 32133,
port => $config->get("port"),
name => 'Spectre',
);
POE::Session->create(
object_states => [ $self => {_start=>"_start", _stop=>"_stop", "shutdown"=>"_stop"} ],
args=>[["shutdown"]]
);
$self->{_cron} = Spectre::Cron->new($webguiRoot);
$self->{_workflow} = Spectre::Workflow->new($webguiRoot);
$self->{_cron} = Spectre::Cron->new($config);
$self->{_workflow} = Spectre::Workflow->new($config);
POE::Kernel->run();
}

View file

@ -34,7 +34,7 @@ sub _start {
my $serviceName = "scheduler";
$kernel->alias_set($serviceName);
$kernel->call( IKC => publish => $serviceName, $publicEvents );
my $configs = WebGUI::Config->readAllConfigs($self->{_webguiRoot});
my $configs = WebGUI::Config->readAllConfigs($self->{_config}->getWebguiRoot);
foreach my $config (keys %{$configs}) {
$kernel->yield("loadSchedule", $config);
}
@ -160,7 +160,7 @@ The config filename for the site to load the schedule.
sub loadSchedule {
my ($kernel, $self, $config) = @_[KERNEL, OBJECT, ARG0];
my $session = WebGUI::Session->open($self->{_webguiRoot}, $config);
my $session = WebGUI::Session->open($self->{_config}->getWebguiRoot, $config);
my $result = $session->db->read("select * from WorkflowSchedule");
while (my $data = $result->hashRef) {
$kernel->yield("addJob",$config, $data);
@ -170,24 +170,24 @@ sub loadSchedule {
#-------------------------------------------------------------------
=head2 new ( webguiRoot )
=head2 new ( config )
Constructor.
=head3 webguiRoot
=head3 config
The path to the root of the WebGUI installation.
A WebGUI::Config object that represents the spectre.conf file.
=cut
sub new {
my $class = shift;
my $webguiRoot = shift;
my $self = {_webguiRoot=>$webguiRoot};
my $config = shift;
my $self = {_config=>$config};
bless $self, $class;
my @publicEvents = qw(addJob deleteJob);
POE::Session->create(
object_states => [ $self => [qw(_start _stop checkEvents checkEvent loadSchedule), @publicEvents] ],
object_states => [ $self => [qw(_start _stop checkSchedules checkSchedule loadSchedule), @publicEvents] ],
args=>[\@publicEvents]
);
}

View file

@ -32,7 +32,7 @@ sub _start {
my $serviceName = "workflow";
$kernel->alias_set($serviceName);
$kernel->call( IKC => publish => $serviceName, $publicEvents );
my $configs = WebGUI::Config->readAllConfigs($self->{_webguiRoot});
my $configs = WebGUI::Config->readAllConfigs($self->{_config}->getWebguiRoot);
foreach my $config (keys %{$configs}) {
$kernel->yield("loadWorkflows", $config);
}
@ -95,7 +95,7 @@ Checks to see if there are any open job slots available, and if there are assign
sub checkJobs {
my ($kernel, $self) = @_[KERNEL, OBJECT];
if ($self->countRunningJobs < 5) {
if ($self->countRunningJobs < $self->{_config}->get("maxWorkers")) {
my $job = $self->getNextJob;
if (defined $job) {
$job->{status} = "running";
@ -163,7 +163,7 @@ sub getNextJob {
sub loadWorkflows {
my ($kernel, $self, $config) = @_[KERNEL, OBJECT, ARG0];
my $session = WebGUI::Session->open($self->{_webguiRoot}, $config);
my $session = WebGUI::Session->open($self->{_config}->getWebguiRoot, $config);
my $result = $session->db->read("select * from WorkflowInstance");
while (my $data = $result->hashRef) {
$kernel->yield("addJob", $config, $data);
@ -173,11 +173,11 @@ sub loadWorkflows {
#-------------------------------------------------------------------
=head2 new ( webguiRoot )
=head2 new ( config )
Constructor. Loads all active workflows from each WebGUI site and begins executing them.
=head3 webguiRoot
=head3 config
The path to the root of the WebGUI installation.
@ -185,8 +185,8 @@ The path to the root of the WebGUI installation.
sub new {
my $class = shift;
my $webguiRoot = shift;
my $self = {_webguiRoot=>$webguiRoot};
my $config = shift;
my $self = {_config=>$config};
bless $self, $class;
my @publicEvents = qw(addJob deleteJob);
POE::Session->create(