You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ha...@apache.org on 2008/10/16 09:36:02 UTC
svn commit: r705157 - in /ofbiz/trunk/specialpurpose/projectmgr:
script/org/ofbiz/project/ProjectServices.xml
src/org/ofbiz/project/Various.java
Author: hansbak
Date: Thu Oct 16 00:36:01 2008
New Revision: 705157
URL: http://svn.apache.org/viewvc?rev=705157&view=rev
Log:
improvement of the sheduler
Modified:
ofbiz/trunk/specialpurpose/projectmgr/script/org/ofbiz/project/ProjectServices.xml
ofbiz/trunk/specialpurpose/projectmgr/src/org/ofbiz/project/Various.java
Modified: ofbiz/trunk/specialpurpose/projectmgr/script/org/ofbiz/project/ProjectServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/projectmgr/script/org/ofbiz/project/ProjectServices.xml?rev=705157&r1=705156&r2=705157&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/projectmgr/script/org/ofbiz/project/ProjectServices.xml (original)
+++ ofbiz/trunk/specialpurpose/projectmgr/script/org/ofbiz/project/ProjectServices.xml Thu Oct 16 00:36:01 2008
@@ -176,6 +176,94 @@
-->
<field-to-result map-name="parameters" field-name="projectId"/>
+ <!-- find a starting point being either the estimated start date of a project or the earliest actual start date. -->
+ <entity-condition entity-name="ProjectAndPhaseAndTask" list-name="tasks">
+ <condition-expr field-name="actualStartDate" operator="not-equals" env-name="null"/>
+ <order-by field-name="-actualStartDate"/>
+ </entity-condition>
+ <if-not-empty field="tasks">
+ <first-from-list entry-name="task" list-name="tasks"/>
+ <set field="startDate" from-field="task.actualStartDate"/>
+ <set field="taskId" from-field="task.workEffortId"/>
+ <else>
+ <now-date-to-env env-name="generalStartDate"/>
+ </else>
+ </if-not-empty>
+ <log level="always" message="========== generalStartDate: ${generalStartDate}"></log>
+ <while>
+ <condition>
+ <if-empty field="generalStartDate"/>
+ </condition>
+ <then>
+ <entity-and entity-name="WorkEffortAssoc" list-name="assocs">
+ <field-map field-name="workEffortIdTo" env-name="taskId"/>
+ </entity-and>
+ <if-not-empty field="assocs">
+ <iterate entry-name="assoc" list-name="assocs">
+ <clear-field field-name="hours"/>
+ <set field="getTask.taskId" from-field="assoc.workEffortIdFrom"/>
+ <call-service service-name="getProjectTask" in-map-name="getTask">
+ <result-to-field result-name="estimatedHours"/>
+ <result-to-field result-name="actualHours"/>
+ </call-service>
+ <if-not-empty field="estimatedHours">
+ <if-not-empty field="actualHours">
+ <if-compare-field field="estimatedHours" operator="greater" to-field="actualHours">
+ <set field="hours" from-field="estimatedHours"/>
+ <else>
+ <set field="hours" from-field="actualHours"/>
+ </else>
+ </if-compare-field>
+ <else>
+ <set field="hours" from-field="estimatedHours"/>
+ </else>
+ </if-not-empty>
+ </if-not-empty>
+ <if-not-empty field="actualHours">
+ <set field="hours" from-field="actualHours"/>
+ </if-not-empty>
+ <if-empty field="hours">
+ <set field="hours" value="16" type="Double"/>
+ </if-empty>
+ <if-empty field="highestHours">
+ <set field="highestHours" from-field="hours"/>
+ <set field="preDesessorId" from-field="assoc.workEffortIdFrom"/>
+ <else>
+ <if-compare-field field="highestHours" operator="less" to-field="hours">
+ <set field="highestHours" from-field="hours"/>
+ <set field="preDesessorId" from-field="assoc.workEffortIdFrom"/>
+ </if-compare-field>
+ </else>
+ </if-empty>
+ </iterate>
+ <set field="taskId" from-field="preDesessorId"/>
+ <calculate field-name="taskDays">
+ <calcop operator="divide" field-name="higestHours"/>
+ <number value="8"/>
+ </calculate>
+ <calculate field-name="taskDays">
+ <calcop operator="multiply" field-name="taskDays"/>
+ <number value="-1"/>
+ </calculate>
+ <call-class-method class-name="org.ofbiz.base.util.UtilDateTime" method-name="addDaysToTimestamp" ret-field-name="startDate">
+ <field field-name="startDate"/>
+ <field field-name="taskDays"/>
+ </call-class-method>
+ <else>
+ <entity-one entity-name="WorkEffort" value-name="workEffort">
+ <field-map field-name="workEffortId" env-name="taskId"/>
+ </entity-one>
+ <if-not-empty field="workEffortId.parentWorkEffortId">
+ <set field="taskId" from-field="workEffortId.parentWorkEffortId"/>
+ <else>
+ <set field="generalStartDate" from-field="startDate"/>
+ </else>
+ </if-not-empty>
+ </else>
+ </if-not-empty>
+ </then>
+ </while>
+
<!-- create the tasklist -->
<entity-one entity-name="WorkEffort" value-name="project">
Modified: ofbiz/trunk/specialpurpose/projectmgr/src/org/ofbiz/project/Various.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/projectmgr/src/org/ofbiz/project/Various.java?rev=705157&r1=705156&r2=705157&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/projectmgr/src/org/ofbiz/project/Various.java (original)
+++ ofbiz/trunk/specialpurpose/projectmgr/src/org/ofbiz/project/Various.java Thu Oct 16 00:36:01 2008
@@ -45,11 +45,9 @@
while (a.hasNext()) {
GenericValue assoc = (GenericValue) a.next();
GenericValue nextTask = assoc.getRelatedOne("ToWorkEffort");
- if (nextTask.getTimestamp("estimatedStartDate").before(task.getTimestamp("estimatedCompletionDate"))) {
- nextTask.put("estimatedStartDate", task.getTimestamp("estimatedCompletionDate"));
- nextTask.put("estimatedCompletionDate", calculateCompletionDate(nextTask, task.getTimestamp("estimatedCompletionDate")));
- nextTask.store();
- }
+ nextTask.put("estimatedStartDate", task.getTimestamp("estimatedCompletionDate"));
+ nextTask.put("estimatedCompletionDate", calculateCompletionDate(nextTask, task.getTimestamp("estimatedCompletionDate")));
+ nextTask.store();
setDatesFollowingTasks(nextTask);
}
}