Introduction
This chapter is provided to share some code snippets that show the usage of the Perl libraries.
Auto-Generated Code
After generation of the plugin using pdk
you will see that your
plugin has a single main class which inherits FlowPDF. This file will be
at dsl/properties/perl/lib/EC/Plugin/YOURCLASS.pm.
For each procedure in the plugin, a corresponding method will be created in a file with the same name as the procedure. For example dsl/procedures/YOUR_PROCEDURE/steps/YOUR_PROCEDURE.pl you will look something like this:
$[/myProject/perl/core/scripts/preamble.pl]
use EC::Plugin::NewRest;
# Auto generated code of plugin step
EC::Plugin::YOURCLASS->runStep('YOURPROCEDURE', 'YOURPROCEDURESTEP', 'functionName');
The main plugin class will have a function called functionName as follows:
sub functionName {
my ($pluginObject, $runtimeParameters, $stepResult) = @_;
...;
}
Retrieving parameter values from configuration and step
Using one API
Here is a snippet where in both config as well as step parameter values can be retrieved using the same API.
my $runtimeParameters = $context->getRuntimeParameters();
# runtimeParameters is a HASH reference with following fields:
# user, password, proxy_user, proxy_password, basic_user, basic_password (taken from config)
# requestMethod and requestContent (taken from procedure parameters).
print $runtimeParameters->{requestMethod};
print $runtimeParameters->{proxy_user};
Using two different APIs
Here is a snippet where in config and step parameter values are retrieved using different APIs.
my $context = $pluginObject->newContext();
my $parameters = $context->getStepParameters();
my $cred = $parameters->getParameter('credential');
my $url = $parameters->getParameter('url')->getValue();
my $method = undef;
if (my $p = $parameters->getParameter('method')) {
$method = $p->getValue();
}
my ($username, $password);
if ($cred) {
$username = $cred->getUserName();
$password = $cred->getSecretValue();
}
my $configValues = $context->getConfigValues();
You can then use the methods in FlowPDF::Config object to access the config values.
Setting step results
for my $i (1..100) {
$stepResult->setJobStepSummary("Progress: $i\n");
$stepResult->applyAndFlush();
sleep 1;
}
or
# Step 1. Creating an object.
my $stepResult = $context->newStepResult();
# Step 2. Adding action items.
$stepResult->setOutputParameter('executionResult', 'Successfully finished!');
$stepResult->setJobStepSummary('Done with success');
# Step 3. Applying changes.
$stepResult->apply();
Performing REST requests
# retrieving new rest client object.
my $restClient = $context->newRESTClient();
# creating HTTP::Request object using our wrappers
my $req = $restClient->newRequest(GET => 'https://localhost:8080');
# performing request and getting HTTP::Response object.
my $response = $restClient->doRequest($req);
# printing response content:
print $response->decoded_content();
CLI execution
# Step 1 and 2. Loading component and creating CLI executor with working directory of current workspace.
my $cli = FlowPDF::ComponentManager->loadComponent('FlowPDF::Component::CLI', {
workingDirectory => $ENV{COMMANDER_WORKSPACE}
});
# Step 3. Creating new command with ls as shell and -la as parameter.
my $command = $cli->newCommand('ls', ['-la']);
# adding two more parameters for command
$command->addArguments('-lah');
$command->addArguments('-l');
# Step 4. Executing a command
my $res = $cli->runCommand($command);
# Step 5. Processing a response.
print "STDOUT: " . $res->getStdout();
Logging
use FlowPDF::Log;
logInfo("This is info");
logError("This is error");
or
my $reference = {
one => 'two',
three => 'four'
};
logInfo("Reference is: ", $reference);
Defining custom fields
You can define custom fields in the pluginInfo subroutine of your main plugin module and retrieve them elsewhere.
sub pluginInfo {
return {
pluginName => '@PLUGIN_KEY@',
pluginVersion => '@PLUGIN_VERSION@',
configFields => ['config'],
configLocations => ['ec_plugin_cfgs'],
defaultConfigValues => {
authScheme => 'basic'
},
configValues => {
one => 'two'
}
};
}
Here is how you retrieve them:
my $pluginValues = $pluginObject->getPluginValues();
logInfo("Value of one is: $pluginValues->{one}");