more spectre goodness, it almost runs!!
This commit is contained in:
parent
9ff0794746
commit
d9a80d9f6f
6 changed files with 78 additions and 43 deletions
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue