Functional Description
Project Tasks need a (total) estimate and a todo estimate, for comparison with the time actually spend on a task. The tasks project members work on are part of quote tasks charged to the costumer. Quote tasks also have an estimate.
Technical description
Domain
Short version: Project HAS Collection<quoteTask> HAS Collection<implementationTask>. Both Tasks have estimates but only the implementationTask has a TODO-estimate and can assigned to members.
-
Project toevoeging: HASA Collection<quoteTask>
-
=Project= List<Task>,
-
Task HASA String name
-
QuoteTask HAS-A long estimate, Collection<ImplementationTask> implementationTasks
-
ImplementationTask HAS-A long estimate, long todo, TaskStatus status
Dao
ops_admin
Rewrite TaskDao, all public methods except Spring-related methods (setLdapTemplate, setLocalConfig, afterPropertiesSet):
-
TaskDao.listProjectQuoteTasks(Project project)
-
TaskDao.updateProjectTasks(Project project)
-
TaskDao.removeTasksFromProject(Project project)
(Also change
ProjectDaoImpl.ProjectAttributesMapper to call TaskDao.listProjectQuoteTasks)
Manager
There are obvious changes to be made as a result of new domainobjects.
And then there is some new to be implemented:
- assertNoDuplicateTasks
- no 2 Quotetasks with the same name for the same project * no 2 ImplementationTasks? with the same name for the same QuoteTask?
- updateProject: do not remove implementation tasks that have already been persisted, either directely or by removing the parent quotetask.
ops_project
Rewrite
org.openprojectservices.webservice.opstimesheet.OpsTimesheet.getTasksForProject
LDAP
The ldap should be restarted with a new schema, see below. All except ou=Projects will be imported. Projects will be added with the ops-admin tool.
- Export all for safe-keeping (from domain, dc=..., onwards)
- Remove all projects
- stop ldap
- rename old schema
- add new schema using the old schema's name
- restart ldap
- import the second export - the one without the projects
- add the projects that have timesheets
The new schemas contain:
- new objectClasss: Q-Task, can have I-Task children
- attributes required: name
- attributes optional: estimate
- new objectClass: I-Task
- attributes required: name and status
- attributes optional: total-estimate, todo-estimate
In the new schemas project can have Q-Task children. In the 2nd schema the old Task objects no longer exist. And
here, btw is the current schema.
EditProjectPage
Note that 'task 1' cannot be deleted: only new tasks that have not been persisted yet can be deleted.
- rewrite markup, table instead of list
- write
MoveTaskPage
- rewrite
EditProjectPage
Backward compatibility
See
MigrationStory
Estimates
| task |
hours |
todo |
| domain changes |
6 |
0 |
| schema's |
8 |
0 |
rewrite TaskDao |
10 |
0 |
rewrite & test manager |
6 |
0 |
rewrite OpsTimesheet |
4 |
0 |
| rewrite EditProjectPage |
15 |
0 |
| rewrite markup file |
9 |
0 |
| create MoveTaskPage |
4 |
0 |
| Total |
62 |
0 |
Discussion
We'll be rewriting the ldap schema, so now is the time to decide if Quote-Tasks and Implementation-Tasks should have GUID or not. List pro's and cons here:
- pro: task referenced by uid, task names can be changed
- con: requires a lot of changes in the rest of ops, namely in the sunbird plugin
- I think you've focussed to much on the admin side of the story here. The other connections have to be updated as well, most notably the ops server -- IvoVanDongen - 14 Aug 2008
WhishList:
- refactor for readability:
- task panel for QuoteTasks with their ImplementationTaskListview
- new ITask Panel
- new QTask Panel
- adding components in their own methods (
void addMembersList(Form this))
- Cant see what you cant do:
- new I-Task textfield and button only visible when qtasks exist
- QTasks only deletable if empty or if all I-Tasks are new
- names of new tasks in textfields: changeable
- pretty print string formatting in messages (added task: myTask > The task myTask has been added)
--
IvanaCace - 11 Aug 2008
Topic revision: r21 - 30 Sep 2008 - 12:22:51 -
IvanaCace