introduced type concept into workflow
This commit is contained in:
parent
d194d3760a
commit
063e8703c7
4 changed files with 60 additions and 13 deletions
|
|
@ -50,6 +50,7 @@ sub addWorkflow {
|
||||||
workflowId varchar(22) binary not null,
|
workflowId varchar(22) binary not null,
|
||||||
className varchar(255),
|
className varchar(255),
|
||||||
methodName varchar(255),
|
methodName varchar(255),
|
||||||
|
priority int not null default 2,
|
||||||
parameters text
|
parameters text
|
||||||
)");
|
)");
|
||||||
$session->db->write("create table WorkflowInstance (
|
$session->db->write("create table WorkflowInstance (
|
||||||
|
|
@ -60,7 +61,8 @@ sub addWorkflow {
|
||||||
className varchar(255),
|
className varchar(255),
|
||||||
methodName varchar(255),
|
methodName varchar(255),
|
||||||
parameters text,
|
parameters text,
|
||||||
runningSince bigint
|
runningSince bigint,
|
||||||
|
lastUpdate bigint
|
||||||
)");
|
)");
|
||||||
$session->db->write("create table Workflow (
|
$session->db->write("create table Workflow (
|
||||||
workflowId varchar(22) binary not null primary key,
|
workflowId varchar(22) binary not null primary key,
|
||||||
|
|
|
||||||
|
|
@ -159,6 +159,32 @@ sub getActivities {
|
||||||
return \@activities;
|
return \@activities;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getNextActivity ( [ activityId ] )
|
||||||
|
|
||||||
|
Returns the next activity in the workflow after the activity specified. If no activity id is specified, then the first workflow will be returned.
|
||||||
|
|
||||||
|
=head3 activityId
|
||||||
|
|
||||||
|
The unique id of an activity in this workflow.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getNextActivity {
|
||||||
|
my $self = shift;
|
||||||
|
my $activityId = shift;
|
||||||
|
my ($sequenceNumber) = $self->session->db->quickArray("select sequenceNumber from WorkflowActivity where activityId=?", [$activityId]);
|
||||||
|
$sequenceNumber++;
|
||||||
|
my $rs = $self->session->db->read("select activityId, className from WorkflowActivity where workflowId=?
|
||||||
|
and sequenceNumber>=? order by sequenceNumber", [$self->getId, $sequenceNumber]);
|
||||||
|
my ($id, $class) = $rs->array;
|
||||||
|
$rs->finish;
|
||||||
|
return $class->new($self->session, $id);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 getId ( )
|
=head2 getId ( )
|
||||||
|
|
@ -212,13 +238,13 @@ sub session {
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 set ( name , value )
|
=head2 set ( properties )
|
||||||
|
|
||||||
Sets a variable for this workflow.
|
Sets a variable for this workflow.
|
||||||
|
|
||||||
=head3 name
|
=head3 properties
|
||||||
|
|
||||||
The name of the variable to set. The following are the available fields to set.
|
A hash reference containing the properties to set.
|
||||||
|
|
||||||
=head4 title
|
=head4 title
|
||||||
|
|
||||||
|
|
@ -232,17 +258,23 @@ A longer description of the workflow.
|
||||||
|
|
||||||
A boolean indicating whether this workflow may be executed right now.
|
A boolean indicating whether this workflow may be executed right now.
|
||||||
|
|
||||||
=head3 value
|
=head4 type
|
||||||
|
|
||||||
The value of the variable.
|
A string indicating the type of object this workflow will be operating on. Valid values are "none", "versiontag" and "user".
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub set {
|
sub set {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $name = shift;
|
my $properties = shift;
|
||||||
my $value = shift;
|
if ($properties->{enabled} == 1) {
|
||||||
$self->{_data}{$name} = $value;
|
$self->{_data}{enabled} = 1;
|
||||||
|
} elsif ($properties->{enabled} == 0) {
|
||||||
|
$self->{_data}{enabled} = 0;
|
||||||
|
}
|
||||||
|
$self->{_data}{title} = $properties->{title} || $self->{_data}{title} || "Untitled";
|
||||||
|
$self->{_data}{description} = (exists $properties->{description}) ? $properties->{description} : $self->{_data}{description};
|
||||||
|
$self->{_data}{type} = $properties->{type} || $self->{_data}{type} || "none";
|
||||||
$self->session->db->setRow("Workflow","workflowId",$self->{_data});
|
$self->session->db->setRow("Workflow","workflowId",$self->{_data});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -168,6 +168,19 @@ sub getName {
|
||||||
return "Unnamed";
|
return "Unnamed";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 getType ( )
|
||||||
|
|
||||||
|
Returns the type of workflow that this activity may be used in. Unless this method is overriden, the type is "none". This is a class method.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub getType {
|
||||||
|
return "none";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 new ( session, activityId )
|
=head2 new ( session, activityId )
|
||||||
|
|
|
||||||
|
|
@ -221,14 +221,14 @@ sub set {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $properties = shift;
|
my $properties = shift;
|
||||||
if ($properties->{enabled} == 1) {
|
if ($properties->{enabled} == 1) {
|
||||||
$self->{enabled} = 1;
|
$self->{_data}{enabled} = 1;
|
||||||
} elsif ($properties->{enabled} == 0) {
|
} elsif ($properties->{enabled} == 0) {
|
||||||
$self->{enabled} = 0;
|
$self->{_data}{enabled} = 0;
|
||||||
}
|
}
|
||||||
if ($properties->{runOnce} == 1) {
|
if ($properties->{runOnce} == 1) {
|
||||||
$self->{runOnce} = 1;
|
$self->{_data}{runOnce} = 1;
|
||||||
} elsif ($properties->{runOnce} == 0) {
|
} elsif ($properties->{runOnce} == 0) {
|
||||||
$self->{runOnce} = 0;
|
$self->{_data}{runOnce} = 0;
|
||||||
}
|
}
|
||||||
$self->{_data}{minuteOfHour} = $properties->{minuteOfHour} || $self->{_data}{minuteOfHour} || 0;
|
$self->{_data}{minuteOfHour} = $properties->{minuteOfHour} || $self->{_data}{minuteOfHour} || 0;
|
||||||
$self->{_data}{hourOfDay} = $properties->{hourOfDay} || $self->{_data}{hourOfDay} || "*";
|
$self->{_data}{hourOfDay} = $properties->{hourOfDay} || $self->{_data}{hourOfDay} || "*";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue