fixing some problems with the workflow editor
This commit is contained in:
parent
4f96d670b9
commit
726f7c61af
3 changed files with 25 additions and 53 deletions
|
|
@ -127,16 +127,10 @@ sub www_editWorkflow {
|
|||
$workflow = WebGUI::Workflow->new($session, $session->form->get("workflowId")) unless (defined $workflow);
|
||||
my $i18n = WebGUI::International->new($session, "Workflow");
|
||||
my $workflowActivities = $session->config->get("workflowActivities");
|
||||
my $addmenu = '<div style="float: left; width: 180px;">';
|
||||
foreach my $activity (@{$workflowActivities->{$workflow->get("type")}}) {
|
||||
my $cmd = "use $activity";
|
||||
eval ($cmd);
|
||||
if ($@) {
|
||||
$session->errorHandler->warn("Couldn't compile activity package: ".$activity.". Root cause: ".$@);
|
||||
return undef;
|
||||
} else {
|
||||
$addmenu .= '<a href="'.$session->url->page("op=editWorkflowActivity;className=".$activity.";workflowId=".$workflow->getId).'">'.$activity->getName($session)."</a><br />\n";
|
||||
}
|
||||
my $addmenu = '<div style="float: left; width: 200px; font-size: 11px;">';
|
||||
foreach my $class (@{$workflowActivities->{$workflow->get("type")}}) {
|
||||
my $activity = WebGUI::Workflow::Activity->newByPropertyHashRef($session, {className=>$class});
|
||||
$addmenu .= '<a href="'.$session->url->page("op=editWorkflowActivity;className=".$class.";workflowId=".$workflow->getId).'">'.$activity->getName."</a><br />\n";
|
||||
}
|
||||
$addmenu .= '</div>';
|
||||
my $f = WebGUI::HTMLForm->new($session);
|
||||
|
|
@ -246,7 +240,7 @@ sub www_editWorkflowActivity {
|
|||
my $ac = WebGUI::AdminConsole->new($session,"workflow");
|
||||
$ac->addSubmenuItem($session->url->page("op=addWorkflow"), $i18n->get("add a new workflow"));
|
||||
$ac->addSubmenuItem($session->url->page("op=manageWorkflows"), $i18n->get("manage workflows"));
|
||||
return $ac->render($form->print,$activity->getName($session));
|
||||
return $ac->render($form->print,$activity->getName);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@ sub get {
|
|||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 getActivity ( activityId [, classname ] )
|
||||
=head2 getActivity ( activityId )
|
||||
|
||||
Retrieves an activity object. This is just a convenience method, so you don't have to manually load and construct activity objects when you're already working with a workflow.
|
||||
|
||||
|
|
@ -168,20 +168,12 @@ Retrieves an activity object. This is just a convenience method, so you don't ha
|
|||
|
||||
The unique id of the activity.
|
||||
|
||||
=head3 classname
|
||||
|
||||
The classname of the activity. This will be looked up if you don't specify it.
|
||||
|
||||
=cut
|
||||
|
||||
sub getActivity {
|
||||
my $self = shift;
|
||||
my $activityId = shift;
|
||||
my $class = shift;
|
||||
unless ($class) {
|
||||
($class) = $self->session->db->quickArray("select className from WorkflowActivity where activityId=?",[$activityId]);
|
||||
}
|
||||
return WebGUI::Workflow::Activity->new($self->session, $activityId, $class);
|
||||
return WebGUI::Workflow::Activity->new($self->session, $activityId);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
@ -195,10 +187,10 @@ Returns an array reference of the activity objects associated with this workflow
|
|||
sub getActivities {
|
||||
my $self = shift;
|
||||
my @activities = ();
|
||||
my $rs = $self->session->db->prepare("select activityId, className from WorkflowActivity where workflowId=? order by sequenceNumber");
|
||||
my $rs = $self->session->db->prepare("select activityId from WorkflowActivity where workflowId=? order by sequenceNumber");
|
||||
$rs->execute([$self->getId]);
|
||||
while (my ($activityId, $class) = $rs->array) {
|
||||
push(@activities, $self->getActivity($activityId, $class));
|
||||
while (my ($activityId) = $rs->array) {
|
||||
push(@activities, $self->getActivity($activityId));
|
||||
}
|
||||
return \@activities;
|
||||
}
|
||||
|
|
@ -260,11 +252,9 @@ sub getNextActivity {
|
|||
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=?
|
||||
my ($id) = $self->session->db->quickArray("select activityId from WorkflowActivity where workflowId=?
|
||||
and sequenceNumber>=? order by sequenceNumber", [$self->getId, $sequenceNumber]);
|
||||
my ($id, $class) = $rs->array;
|
||||
$rs->finish;
|
||||
return $self->getActivity($id, $class);
|
||||
return $self->getActivity($id);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ An array reference containing a list of hash hreferences of properties.
|
|||
sub definition {
|
||||
my $class = shift;
|
||||
my $session = shift;
|
||||
my $definition = shift;
|
||||
my $definition = shift || [];
|
||||
my $i18n = WebGUI::International->new($session, "Workflow_Activity");
|
||||
push (@{$definition}, {
|
||||
name=>$i18n->get("topicName"),
|
||||
|
|
@ -228,26 +228,21 @@ sub getId {
|
|||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 getName ( session )
|
||||
=head2 getName ( )
|
||||
|
||||
Returns the name of the activity. Must be overridden. This is a class method.
|
||||
|
||||
=head3 session
|
||||
|
||||
A reference to the current session.
|
||||
Returns the name of the activity.
|
||||
|
||||
=cut
|
||||
|
||||
sub getName {
|
||||
my $class = shift;
|
||||
my $session = shift;
|
||||
my $definition = $class->definition($session);
|
||||
my $self = shift;
|
||||
my $definition = $self->definition($self->session);
|
||||
return $definition->[0]{name};
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 new ( session, activityId [, classname] )
|
||||
=head2 new ( session, activityId )
|
||||
|
||||
Constructor.
|
||||
|
||||
|
|
@ -259,28 +254,21 @@ A reference to the current session.
|
|||
|
||||
A unique id refering to an instance of an activity.
|
||||
|
||||
=head3 classname
|
||||
|
||||
The classsname of the activity you wish to add.
|
||||
|
||||
=cut
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $session = shift;
|
||||
my $activityId = shift;
|
||||
my $className = shift;
|
||||
my $main = $session->db->getRow("WorkflowActivity","activityId", $activityId);
|
||||
return undef unless $main->{activityId};
|
||||
if ($className) {
|
||||
my $cmd = "use ".$className;
|
||||
eval ($cmd);
|
||||
if ($@) {
|
||||
$session->errorHandler->error("Couldn't compile workflow activity package: ".$className.". Root cause: ".$@);
|
||||
return undef;
|
||||
}
|
||||
$class = $className;
|
||||
}
|
||||
$class = $main->{className};
|
||||
my $cmd = "use ".$class;
|
||||
eval ($cmd);
|
||||
if ($@) {
|
||||
$session->errorHandler->error("Couldn't compile workflow activity package: ".$class.". Root cause: ".$@);
|
||||
return undef;
|
||||
}
|
||||
my $sub = $session->db->buildHashRef("select name,value from WorkflowActivityData where activityId=?",[$activityId]);
|
||||
my %data = (%{$main}, %{$sub});
|
||||
bless {_session=>$session, _id=>$activityId, _data=>\%data}, $class;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue