[Anthill-pro] JasperException in Custom Agent Activity report script

Ryan Smith rws at urbancode.com
Mon Mar 17 08:27:22 CST 2008


Glad to hear it works. You might want to use the method restoreAllNotIgnored().


Pacileo, Kenneth wrote:
> False alarm... Had a missing ; on the import, wrong method call for
> restoreAll and wrong array name in the for loop. 
> 
> Correct section: 
> // Add the agents to choose from 
> SelectParamMetaData agentParams = new SelectParamMetaData();
> Agent[] allAgentsArray = AgentFactory.getInstance().restoreAll();
> String[] labels = new String[allAgentsArray.length + 1];
> String[] values = new String[allAgentsArray.length + 1];
> for (int i = 0; i < allAgentsArray.length; i++) {
>    labels[i] = allAgentsArray[i].getName();
>    values[i] = allAgentsArray[i].getId().toString();
> }
> labels[allAgentsArray.length] = "All";
> values[allAgentsArray.length] = "all";
> agentParams.setLabels(labels);
> agentParams.setValues(values);
> agentParams.setName("agent");
> agentParams.setLabel("Agent");
> agentParams.setDescription("Select the agent to run this report against.
> Or select 'All' to display all agents together.");
> rmd.addParameter(agentParams);
> 
> Regards,
> Ken
> 
> -----Original Message-----
> From: anthill-pro-bounces at lists.urbancode.com
> [mailto:anthill-pro-bounces at lists.urbancode.com] On Behalf Of Pacileo,
> Kenneth
> Sent: Friday, March 14, 2008 5:52 PM
> To: AnthillPro user and support list.
> Subject: [Anthill-pro] JasperException in Custom Agent Activity report
> script
> 
> All,
> 
> I'm trying to create a report that will show me all the activity of
> originating workflows on a specific agent. The metat-data script I'm
> using is throwing a JasperExcetion. I used the format of the "Deployment
> Log" script and changed the month selection section to agent selection.
> I then used the AgentFactory class to get the instance and restore all
> the active agents. The script throws the exception on the
> AgentFactory.getInstance().restoreAll() method call. What should I be
> using instead?
> 
> I need this report so I can review activity on the agents and make sure
> they are all being utilized as expected.
> 
> Regards,
> Ken
> 
> JasperException: javax.servlet.jsp.el.ELException: An error occurred
> while getting property "metaData" from an instance of class
> com.urbancode.anthill3.domain.reporting.Report
> 
> Meta-Data Script:
> import com.urbancode.anthill3.domain.agent.*
> import com.urbancode.anthill3.domain.project.*;
> import com.urbancode.anthill3.domain.reporting.*;
> import com.urbancode.anthill3.domain.userprofile.*;
> import java.text.SimpleDateFormat;
> import java.util.*;
> 
> ReportMetaData rmd = new ReportMetaData();
> 
> // Add some projects to choose from
> SelectParamMetaData params = new SelectParamMetaData();
> Project[] allMyProjectsArray =
> ProjectFactory.getInstance().restoreAllActive();
> String[] labels = new String[allMyProjectsArray.length + 1];
> String[] values = new String[allMyProjectsArray.length + 1];
> for (int i = 0; i < allMyProjectsArray.length; i++) {
>    labels[i] = allMyProjectsArray[i].getName();
>    values[i] = allMyProjectsArray[i].getId().toString();
> }
> labels[allMyProjectsArray.length] = "All";
> values[allMyProjectsArray.length] = "all";
> params.setLabels(labels);
> params.setValues(values);
> params.setName("project");
> params.setLabel("Project");
> params.setDescription("Select the project to evaluate successful and
> failed executions of that project. Or select 'All' to display all
> projects together.");
> rmd.addParameter(params);
> 
> // Add the agents to choose from 
> SelectParamMetaData agentParams = new SelectParamMetaData();
> Agent[] allAgentsArray = AgentFactory.getInstance().restoreAllActive();
> //Exception being thrown on this statement
> String[] labels = new String[allAgentsArray.length + 1];
> String[] values = new String[allAgentsArray.length + 1];
> for (int i = 0; i < allMyProjectsArray.length; i++) {
>    labels[i] = allAgentsArray[i].getName();
>    values[i] = allAgentsArray[i].getId().toString();
> }
> labels[allAgentsArray.length] = "All";
> values[allAgentsArray.length] = "all";
> agentParams.setLabels(labels);
> agentParams.setValues(values);
> agentParams.setName("agent");
> agentParams.setLabel("Agent");
> agentParams.setDescription("Select the agent to run this report against.
> Or select 'All' to display all agents together.");
> rmd.addParameter(agentParams);
> 
> // Configure columns
> // May need to change the columns later. Not sure what is needed right
> now.
> rmd.addColumn("Project");
> rmd.addColumn("Action");
> rmd.addColumn("Environment");
> rmd.addColumn("Latest Stamp");
> rmd.addColumn("Agent(s)");
> rmd.addColumn("Status");
> rmd.addColumn("Build Date");
> 
> return rmd;
> 
> 
> Report Script: // This script works when I remove the agent array
> section from the Meta-Data Script
> import com.urbancode.anthill3.dashboard.*;
> import com.urbancode.anthill3.domain.reporting.*;
> import com.urbancode.anthill3.domain.userprofile.*;
> import com.urbancode.anthill3.domain.workflow.*;
> import com.urbancode.anthill3.domain.buildlife.*;
> import com.urbancode.commons.util.Duration;
> import java.util.*;
>  
> // Figure out the project to use. "project" is the name of the parameter
> in the meta data script. It's provided here.
> 
> Long projectId = null;
> if (project == null || project.equals("all")) {
>    // leave as null;
> }
> else {
>    projectId = Long.parseLong(project);
> }
> 
> BuildLifeWorkflowCaseSummary[] summaries =
> DashboardFactory.getInstance().getBuildLifeWorkflowSummariesForProject(p
> rojectId);
> 
> ReportOutput output = new ReportOutput(metaData);
> 
> System.out.println("Number of WorkflowSummaries for Project = " +
> summaries.length);
> for (int i = 0; i < summaries.length; i++) {
>     
> buildLife =
> BuildLifeFactory.getInstance().restore(summaries[i].getBuildLifeId());
>   workflow =
> WorkflowCaseFactory.getInstance().restore(summaries[i].getCaseId());
>   originating =
> WorkflowCaseFactory.getInstance().restoreOriginatingForBuildLife(buildLi
> fe); 
>     
> // Only include originating workflows 
>   if (workflow.getWorkflow().isOriginating() &&
>       workflow.getServerGroup().getShortName() != null ) {
> 
>     // calculate the agent(s) invloved
>     jobs = workflow.getJobTraceArray();
>     String agents = "";
>     for (int j = 0; j < jobs.length; j++) {
>       agents += (jobs[j].getAgent().getName() + " ");
>     }
> 
> ReportRow row = new ReportRow(output, "1");
>     row.setColumnValue("Project", summaries[i].getProjectName());
>     row.setColumnValue("Action", summaries[i].getWorkflowName());
>     row.setColumnValue("Environment",
> workflow.getServerGroup().getName());
>     row.setColumnValue("Latest Stamp", summaries[i].getLatestStamp());
>     row.setColumnValue("Agent(s)",agents); 
>     row.setColumnValue("Status", summaries[i].getStatus().getName());
>     row.setColumnValue("Build Date", originating.getEndDate() == null ?
> "Running": String.valueOf(originating.getEndDate()));
>     
> 
>     output.addRow(row);
>   }
> }
> 
> return output;
> 
> 
> 
> 
> This e-mail, including attachments, may include confidential and/or 
> proprietary information, and may be used only by the person or entity to
> 
> which it is addressed. If the reader of this e-mail is not the intended 
> recipient or his or her authorized agent, the reader is hereby notified 
> that any dissemination, distribution or copying of this e-mail is 
> prohibited. If you have received this e-mail in error, please notify the
> 
> sender by replying to this message and delete this e-mail immediately.
> 
> _______________________________________________
> Anthill-pro mailing list
> Anthill-pro at lists.urbancode.com
> http://lists.urbancode.com/mailman/listinfo/anthill-pro
> 
> 
> This e-mail, including attachments, may include confidential and/or 
> proprietary information, and may be used only by the person or entity to 
> which it is addressed. If the reader of this e-mail is not the intended 
> recipient or his or her authorized agent, the reader is hereby notified 
> that any dissemination, distribution or copying of this e-mail is 
> prohibited. If you have received this e-mail in error, please notify the 
> sender by replying to this message and delete this e-mail immediately.
> 
> _______________________________________________
> Anthill-pro mailing list
> Anthill-pro at lists.urbancode.com
> http://lists.urbancode.com/mailman/listinfo/anthill-pro
> 

-- 
===========================================================
Ryan Smith.           		2044 Euclid Ave., Suite 600
Developer                   Cleveland, Ohio 44115
Urbancode, Inc.
                                email:  rws at urbancode.com
web:     www.urbancode.com      phone:  216-858-9000
web:     www.anthillpro.com     fax:    216-858-9602
===========================================================


More information about the Anthill-pro mailing list