EnableProjectReportWithEstimates

Introduction

Reports will include the estimates for project tasks. In this version of ops admin there will be 4 types of reports

See also RemovedUnusedFunctionalityFromReportPage and OpsAdminUseCases.

Functional description

The existing transformation (xsl) files for basic and projects-total reports have to be updated for estimates, see NewReportStyles for required changes.

A new report style project will be added that will integrate the estimates for tasks in the report, like this:

quote quote-estimate task total estimate spent todo loss/gain ... week x week x+1 ... week x+n
deliverable1 x task1 e s t e- (s +t) ... ... ... ... ...
total sum quotes sum(e) sum(s) sum(t) sum(e- (s +t)) ... ... ... ... ...

example:

Project: Func. OPS Admin
timeframe: 01-10-2007 / 01-10-2008

quote quote-estimate task total estimate spent todo loss/gain week 36 week 37 week 38 week 39 week 40
release 0.3 32 UpdateDependencies 6 6 0 0 6 0 0 0 0
release 0.3 32 AddRole 18 18 0 0 8 10 0 0 0
release 0.3 32 OptimizeRetrieval 8 8 0 0 8 0 0 0 0
release 0.4 62 EnableTaskEstimates 62 65 0 -3 0 30 35 0 0
PersonalWeightedTimesheet 30 PersonalWeightedTimesheet 30 0 30 0 0 0 0 0 0
total 94 124 97 30 -3 22 40 35 0 0

Technical description

Todo:
  • retrieve project estimates and create report, see ReportSchema
  • rewrite xsl file for estimates: basic.xsl. (see NewReportStyles)
  • rewrite xsl file for estimates: projects-total.xsl. (see NewReportStyles)
  • write new xsl file to show full project report with estimates, see table above
  • refactor: find out why the transformation files (xsl) are duplicated (in ops_admin and in the timesheet-http-proxy) and fix it!

Implementation

Now the report is generated from the calendar files by webservices. The private static method =getCalendar(String projectGuid, Date fromTime, Date toTime, String person, String company, Boolean declarable)= in org.openprojectservices.webservice.opstimesheet.OpsTimesheet retrieves all the relevant .ics files. With some additional info these files are then mashed up into one SAXSource Object. The xsls for rewriting the raw timesheet reports into pretty tables are applied by ops_admin. At some point the estimates for projects tasks need to be added to the timesheet.

Considerations

Which project estimates should be retrieved and where (ops-project or ops-admin)? Issues to consider:
  • Estimates are only relevant for projects that appear in the timesheet (.ics) files.
  • A priori retrieving task estimates for all some 500+ projects is silly.
  • changing the webservices of ops_project should be avoided because other parts of ops depend on them. (Extending them is not a problem)

Which Estimates to retrieve

Option 1: use search constraint
Instead of retrieving estimates for all projects, a subset could be retrieved based on the search constraints because the timesheets are also filtered by project, timeframe and person. So if no project was specified a search filter can be used based on project members and/or project begin- and enddate, but:
  • The startdate and enddate in the current opsschema are of type IA5String (OID=1.3.6.1.4.1.1466.115.121.1.26). This type of search filter: (&(endDate>=07-10-2008)(objectclass=project)) is not possible. The schema should either be changed (to GeneralizedTime (OID=1.3.6.1.4.1.1466.115.121.1.24)) or the time constraint cannot be used.
  • When ics files for a timeframe are retrieved, the projects begin and enddate er not taken in account. All timesheet events for a project should fall between the begin and enddate of the project but since there is no sanity check there are no guarantees.
  • Filtering projects before the timesheets are retrieved may not be efficient. Without a search constraint all projects are retrieved. The .ics files for a given timeframe may not contain all the projects active during the given timeframe and .ics files for person X may not contain all the projects person X is a member of.

Option 2: parse timesheets to get relevant projects

  • may be slow

Option 3: ldap is fast, get estimates for all projects

  • still, the 500+ map has to be searched to map estimates to timesheet events.

Where to implement estimate retrieveal

Option 1: ops_project
  • Pro: timesheets are retrieved in ops_project, this is the logical place to add estimates
  • TODO: add method, change wsdl

Option 2: ops_admin

  • PRO: already implemented
  • CONTRA: estimates are only available in admin, not in other parts of ops
  • but: a massive refactoring resulting in either one DAO or all LDAP operations going through ops_project is pretty high on the wish list anyway. See OpsAdminIssues.

Conclusions

This is a ops_admin project and the functionality to get project estimates already exists in ops_admin, so use it. A sensible retrieval of estimates can be used like this, pseudo code:
if (project_selected) {getEstimtesforProject}
else if (person selected) {getFiltered project; for each: getEstimtesforProject}
else {just get all estimates}

Optimize if neccesary.

Estimates

task hours todo
api + impl 24 0
xsl 20 0
refactor 4 0
Total 48 0


Discussion

  • sum implementation task estimates for comparison with quote estimate? Yes, but not comparisom between implementationTask todo and total

-- IvanaCace - 06 Aug 2008

Topic revision: r18 - 23 Jan 2009 - 11:16:39 - IvanaCace
Developers.EnableProjectReportWithEstimates moved from Developers.EnableProjectReportWIthEstimates on 07 Aug 2008 - 10:03 by IvanaCace - put it back

tip TWiki Tip of the Day
Disabling individual WikiWords
Prevent a WikiWord from being linked by prefixing it with an exclamation point. Example: To escape SunOs ... Read on Read more

 
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback