You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by "Pierre Smits (JIRA)" <ji...@apache.org> on 2015/09/06 21:12:45 UTC

[jira] [Commented] (OFBIZ-4861) view sprint overview has errors

    [ https://issues.apache.org/jira/browse/OFBIZ-4861?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14732511#comment-14732511 ] 

Pierre Smits commented on OFBIZ-4861:
-------------------------------------

The generated burndown.rptdesign shows following error:
{code}
The following items have errors:

ReportDesign (id = 1):
+ There are errors evaluating script "importPackage(Packages.java.math);
importPackage(Packages.java.text);
importPackage(Packages.java.sql);

importPackage(Packages.org.ofbiz.base.util);
importPackage(Packages.org.ofbiz.entity.condition);

module = "Burndown.rptdesign";

sprintId = params["sprintId"].value;
actualStartDate = params["actualStartDate"].value;
actualCompletionDate = params["actualCompletionDate"].value;
dayNumber = params["dayNumber"];
estimatedHrs = params["estimatedHrs"].value;
maxHours = params["maxHours"].value;
currentDay = -1;

userLogin = delegator.findOne("UserLogin",UtilMisc.toMap("userLoginId","admin"), false);
// caculate average diff hours
var holidayNumber = BigDecimal.ZERO;
var notHolidayNumber = BigDecimal.ZERO;
var countHoliday = 0;
while (countHoliday < dayNumber) {
    var conditionTimestampFrom = new Timestamp(actualStartDate.getTime() + (countHoliday*1000*60*60*24));
    // get public holiday
    var holidayConds = new LinkedkList();
    holidayConds.add(EntityCondition.makeCondition("workEffortTypeId",EntityOperator.EQUALS, "PUBLIC_HOLIDAY"));
    holidayConds.add(EntityCondition.makeCondition("estimatedStartDate", EntityOperator.EQUALS, conditionTimestampFrom));
    var fieldsToSelect = UtilMisc.toSet("workEffortId","estimatedStartDate");
    var holidayList = delegator.findList("WorkEffort", EntityCondition.makeCondition(holidayConds), fieldsToSelect, null, null, false);
    // check holiday 
    var dayOfWeek = UtilDateTime.getDayOfWeek(conditionTimestampFrom, new java.util.SimpleTimeZone(reportContext.getTimeZone().getRawOffset(), reportContext.getTimeZone().getID()), reportContext.getLocale());
    var day = UtilDateTime.days[dayOfWeek - 2];
    if (!UtilValidate.isNotEmpty(holidayList) && !"Saturday".equals(day) && !"undefined".equals(day) /*Sunday*/) {
        notHolidayNumber = notHolidayNumber.add(BigDecimal.ONE);
    } else {
        holidayNumber = holidayNumber.add(BigDecimal.ONE);
    }
    countHoliday ++;
}
// get plan hours 
input =  new HashMap();
input.put("userLogin",userLogin);
input.put("sprintId",sprintId);
result = dispatcher.runSync("getScrumPlanHour", input);
var phs = result.get("initPlanHours");
maxHours = phs;
averageDiffHours = maxHours/notHolidayNumber;":
ReferenceError: "LinkedkList" is not defined. (/report/method[@name="initialize"]#26)

ReportDesign (id = 1):
+ There are errors evaluating script "// declare global variable
currentDay = -1;
dayCount = 0;
sumPlannedHours = BigDecimal.ZERO;
sumActualHours = BigDecimal.ZERO;

// calculate main total plan hours
previousAverageHours = BigDecimal.valueOf(maxHours);
previousActualHours = BigDecimal.ZERO;
previousRemainPlannedHours = BigDecimal.valueOf(maxHours);
remainPlannedHours = BigDecimal.valueOf(maxHours);
remainActualHours = BigDecimal.ZERO;

averageHours = previousAverageHours;

holidays = new LinkedkList();
reportContext.getAppContext().put("holidays", holidays);
":
Fail to execute script in function __bm_OPEN(). Source:
------
" + // declare global variable
currentDay = -1;
dayCount = 0;
sumPlannedHours = BigDecimal.ZERO;
sumActualHours = BigDecimal.ZERO;

// calculate main total plan hours
previousAverageHours = BigDecimal.valueOf(maxHours);
previousActualHours = BigDecimal.ZERO;
previousRemainPlannedHours = BigDecimal.valueOf(maxHours);
remainPlannedHours = BigDecimal.valueOf(maxHours);
remainActualHours = BigDecimal.ZERO;

averageHours = previousAverageHours;

holidays = new LinkedkList();
reportContext.getAppContext().put("holidays", holidays);
 + "
-----
A BIRT exception occurred. See next exception for more information.
ReferenceError: "LinkedkList" is not defined. (/report/data-sets/script-data-set[@id="8"]/method[@name="open"]#16).
+ There are errors evaluating script "if (dayCount >= dayNumber || currentDay >= 0) return false;

var sprintDay = dayCount + 1;
var actualStartDay = UtilDateTime.getDayStart(new Timestamp(actualStartDate.getTime()), new java.util.SimpleTimeZone(reportContext.getTimeZone().getRawOffset(), reportContext.getTimeZone().getID()), reportContext.getLocale());
var conditionTimestampFrom = new Timestamp(actualStartDay.getTime() + (dayCount*1000*60*60*24));
var conditionTimestampTo = new Timestamp(actualStartDay.getTime() + (dayCount*1000*60*60*24) + (1000*60*60*24) - 1);

// check current day
var nowTimestamp = UtilDateTime.nowTimestamp();
if (nowTimestamp.getTime() >= conditionTimestampFrom.getTime() && nowTimestamp.getTime() <= conditionTimestampTo.getTime()) {
    reportContext.getAppContext().put("sprintDayLabel", sprintDay + "");
}

// get public holiday
var holidayConds = new LinkedkList();
holidayConds.add(EntityCondition.makeCondition("workEffortTypeId",EntityOperator.EQUALS, "PUBLIC_HOLIDAY"));
holidayConds.add(EntityCondition.makeCondition("estimatedStartDate", EntityOperator.EQUALS, conditionTimestampFrom));
var fieldsToSelect = UtilMisc.toSet("workEffortId","estimatedStartDate");
var holidayList = delegator.findList("WorkEffort", EntityCondition.makeCondition(holidayConds), fieldsToSelect, null, null, false);

// check holiday
var isHoliday = false;
var dayOfWeek = UtilDateTime.getDayOfWeek(conditionTimestampFrom, new java.util.SimpleTimeZone(reportContext.getTimeZone().getRawOffset(), reportContext.getTimeZone().getID()), reportContext.getLocale());
var day = UtilDateTime.days[dayOfWeek - 2];
if (UtilValidate.isNotEmpty(holidayList) || "Saturday".equals(day) || "undefined".equals(day) /*Sunday*/) {
    isHoliday = true;
}
if (isHoliday) {
    holidays.add(sprintDay + "");
    reportContext.getAppContext().put("holidays", holidays);
}
input =  new HashMap();
var plannedHours = BigDecimal.ZERO;
var actualHours = BigDecimal.ZERO;

// get times from all backlog item's tasks
var sprint = delegator.findOne("WorkEffort", UtilMisc.toMap("workEffortId", sprintId), false);
var backlogItems = sprint.getRelated("CustRequestWorkEffort", null, null, false);
for (i=0; i<backlogItems.size(); i++) {
    // get all task from backlog item
    var backlogItem = backlogItems.get(i);
    var custRequestId = backlogItem.get("custRequestId");
    var conds = new LinkedkList();
    conds.add(EntityCondition.makeCondition("custRequestId", custRequestId));
    conds.add(EntityCondition.makeCondition("workEffortTypeId", EntityOperator.NOT_EQUAL, "SCRUM_SPRINT"));
    var tasks = delegator.findList("CustRequestAndWorkEffort", EntityCondition.makeCondition(conds), null, null, null, false);
    for (j=0; j<tasks.size(); j++) {
        var task = tasks.get(j);
        // get plan hours by taskId
        var workEffortId = task.get("workEffortId");
        input.put("userLogin",userLogin);
        input.put("taskId",workEffortId);
        result = dispatcher.runSync("getScrumPlanHour", input);
        var phs = result.get("planHours");
        if (phs != null) {
            plannedHours = plannedHours.add(BigDecimal.valueOf(phs));
        } else {
            var estimatedMilliSeconds = task.get("estimatedMilliSeconds");
            if (estimatedMilliSeconds != null) {
                var phs = BigDecimal.valueOf(estimatedMilliSeconds/1000/60/60);
                plannedHours = plannedHours.add(phs);
            }
        }
        // get all time entries from task
        var timeEntryConds = new LinkedkList();
        timeEntryConds.add(EntityCondition.makeCondition("workEffortId", workEffortId));
        timeEntryConds.add(EntityCondition.makeCondition("fromDate", EntityOperator.GREATER_THAN_EQUAL_TO, conditionTimestampFrom));
        timeEntryConds.add(EntityCondition.makeCondition("fromDate", EntityOperator.LESS_THAN_EQUAL_TO, conditionTimestampTo));
        var timeEntries = delegator.findList("TimeEntry", EntityCondition.makeCondition(timeEntryConds), null, null, null, false);
        if (timeEntries.size() > 0) {
            // get actual hours from task
            for (k=0; k<timeEntries.size(); k++) {
                var timeEntry = timeEntries.get(k);
                var ahs = timeEntry.get("hours");
                if (ahs != null) {
                    actualHours = actualHours.add(BigDecimal.valueOf(ahs));
                }
            }
        }
    }
}

sumPlannedHours = sumPlannedHours.add(plannedHours);
sumActualHours = sumActualHours.add(actualHours);
var isPlannedOver = false;
if (previousRemainPlannedHours.compareTo(plannedHours) < 0) {
    isPlannedOver = true;
}

var dialyCompleted = BigDecimal.ZERO;

// calculate balance actual hours
var balanceActualHours = maxHours - sumActualHours;

// calculate remain plan hours
if (!isHoliday) {
    remainPlannedHours = BigDecimal.valueOf(maxHours).subtract(sumActualHours);
    previousRemainPlannedHours = remainPlannedHours;
    dialyCompleted = actualHours;
}

// calculate average hours
if (!isHoliday) {
    averageHours = previousAverageHours.subtract(BigDecimal.valueOf(averageDiffHours));
    previousAverageHours = averageHours;
} else {
    averageHours = previousAverageHours;
}

row["sprintDay"] = sprintDay;
row["balanceActualHours"] = balanceActualHours;
row["dialyCompleteed"] = dialyCompleted;
row["remainPlannedHours"] = remainPlannedHours;
row["averageHours"] = averageHours;

previousActualHours = BigDecimal.valueOf(balanceActualHours);
dayCount ++;

return true;":
Fail to execute script in function __bm_FETCH(). Source:
------
" + if (dayCount >= dayNumber || currentDay >= 0) return false;

var sprintDay = dayCount + 1;
var actualStartDay = UtilDateTime.getDayStart(new Timestamp(actualStartDate.getTime()), new java.util.SimpleTimeZone(reportContext.getTimeZone().getRawOffset(), reportContext.getTimeZone().getID()), reportContext.getLocale());
var conditionTimestampFrom = new Timestamp(actualStartDay.getTime() + (dayCount*1000*60*60*24));
var conditionTimestampTo = new Timestamp(actualStartDay.getTime() + (dayCount*1000*60*60*24) + (1000*60*60*24) - 1);

// check current day
var nowTimestamp = UtilDateTime.nowTimestamp();
if (nowTimestamp.getTime() >= conditionTimestampFrom.getTime() && nowTimestamp.getTime() <= conditionTimestampTo.getTime()) {
    reportContext.getAppContext().put("sprintDayLabel", sprintDay + "");
}

// get public holiday
var holidayConds = new LinkedkList();
holidayConds.add(EntityCondition.makeCondition("workEffortTypeId",EntityOperator.EQUALS, "PUBLIC_HOLIDAY"));
holidayConds.add(EntityCondition.makeCondition("estimatedStartDate", EntityOperator.EQUALS, conditionTimestampFrom));
var fieldsToSelect = UtilMisc.toSet("workEffortId","estimatedStartDate");
var holidayList = delegator.findList("WorkEffort", EntityCondition.makeCondition(holidayConds), fieldsToSelect, null, null, false);

// check holiday
var isHoliday = false;
var dayOfWeek = UtilDateTime.getDayOfWeek(conditionTimestampFrom, new java.util.SimpleTimeZone(reportContext.getTimeZone().getRawOffset(), reportContext.getTimeZone().getID()), reportContext.getLocale());
var day = UtilDateTime.days[dayOfWeek - 2];
if (UtilValidate.isNotEmpty(holidayList) || "Saturday".equals(day) || "undefined".equals(day) /*Sunday*/) {
    isHoliday = true;
}
if (isHoliday) {
    holidays.add(sprintDay + "");
    reportContext.getAppContext().put("holidays", holidays);
}
input =  new HashMap();
var plannedHours = BigDecimal.ZERO;
var actualHours = BigDecimal.ZERO;

// get times from all backlog item's tasks
var sprint = delegator.findOne("WorkEffort", UtilMisc.toMap("workEffortId", sprintId), false);
var backlogItems = sprint.getRelated("CustRequestWorkEffort", null, null, false);
for (i=0; i<backlogItems.size(); i++) {
    // get all task from backlog item
    var backlogItem = backlogItems.get(i);
    var custRequestId = backlogItem.get("custRequestId");
    var conds = new LinkedkList();
    conds.add(EntityCondition.makeCondition("custRequestId", custRequestId));
    conds.add(EntityCondition.makeCondition("workEffortTypeId", EntityOperator.NOT_EQUAL, "SCRUM_SPRINT"));
    var tasks = delegator.findList("CustRequestAndWorkEffort", EntityCondition.makeCondition(conds), null, null, null, false);
    for (j=0; j<tasks.size(); j++) {
        var task = tasks.get(j);
        // get plan hours by taskId
        var workEffortId = task.get("workEffortId");
        input.put("userLogin",userLogin);
        input.put("taskId",workEffortId);
        result = dispatcher.runSync("getScrumPlanHour", input);
        var phs = result.get("planHours");
        if (phs != null) {
            plannedHours = plannedHours.add(BigDecimal.valueOf(phs));
        } else {
            var estimatedMilliSeconds = task.get("estimatedMilliSeconds");
            if (estimatedMilliSeconds != null) {
                var phs = BigDecimal.valueOf(estimatedMilliSeconds/1000/60/60);
                plannedHours = plannedHours.add(phs);
            }
        }
        // get all time entries from task
        var timeEntryConds = new LinkedkList();
        timeEntryConds.add(EntityCondition.makeCondition("workEffortId", workEffortId));
        timeEntryConds.add(EntityCondition.makeCondition("fromDate", EntityOperator.GREATER_THAN_EQUAL_TO, conditionTimestampFrom));
        timeEntryConds.add(EntityCondition.makeCondition("fromDate", EntityOperator.LESS_THAN_EQUAL_TO, conditionTimestampTo));
        var timeEntries = delegator.findList("TimeEntry", EntityCondition.makeCondition(timeEntryConds), null, null, null, false);
        if (timeEntries.size() > 0) {
            // get actual hours from task
            for (k=0; k<timeEntries.size(); k++) {
                var timeEntry = timeEntries.get(k);
                var ahs = timeEntry.get("hours");
                if (ahs != null) {
                    actualHours = actualHours.add(BigDecimal.valueOf(ahs));
                }
            }
        }
    }
}

sumPlannedHours = sumPlannedHours.add(plannedHours);
sumActualHours = sumActualHours.add(actualHours);
var isPlannedOver = false;
if (previousRemainPlannedHours.compareTo(plannedHours) < 0) {
    isPlannedOver = true;
}

var dialyCompleted = BigDecimal.ZERO;

// calculate balance actual hours
var balanceActualHours = maxHours - sumActualHours;

// calculate remain plan hours
if (!isHoliday) {
    remainPlannedHours = BigDecimal.valueOf(maxHours).subtract(sumActualHours);
    previousRemainPlannedHours = remainPlannedHours;
    dialyCompleted = actualHours;
}

// calculate average hours
if (!isHoliday) {
    averageHours = previousAverageHours.subtract(BigDecimal.valueOf(averageDiffHours));
    previousAverageHours = averageHours;
} else {
    averageHours = previousAverageHours;
}

row["sprintDay"] = sprintDay;
row["balanceActualHours"] = balanceActualHours;
row["dialyCompleteed"] = dialyCompleted;
row["remainPlannedHours"] = remainPlannedHours;
row["averageHours"] = averageHours;

previousActualHours = BigDecimal.valueOf(balanceActualHours);
dayCount ++;

return true; + "
-----
A BIRT exception occurred. See next exception for more information.
ReferenceError: "LinkedkList" is not defined. (/report/data-sets/script-data-set[@id="8"]/method[@name="fetch"]#15).
+ Data Set script method "Fetch" returned null; expected a Boolean value.

{code}

> view sprint overview has errors
> -------------------------------
>
>                 Key: OFBIZ-4861
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-4861
>             Project: OFBiz
>          Issue Type: Sub-task
>          Components: specialpurpose/scrum
>    Affects Versions: Release 11.04.01, Trunk
>            Reporter: Pierre Smits
>
> When viewing the sprint overview page errors are shown related to burndown chart and the sprint backlog list
> Regarding the burndown chart:
> The following items have errors:
> Chart (id = 113):
> + A BIRT exception occurred. See next exception for more information.
> Invalid javascript expression: row["sprintDay"] (Element ID:113) 
> Regarding the sprint backlog list
> org.ofbiz.widget.screen.ScreenRenderException: Error rendering screen [component://common/widget/CommonScreens.xml#GlobalDecorator]: java.lang.IllegalArgumentException: Error evaluating BeanShell use-when condition [showPosition1&&"RF_PROD_BACKLOG"=="RF_SCRUM_MEETINGS"] on the field custRequestId of form sprintBacklogListItems: Sourced file: inline evaluation of: ``showPosition1&&"RF_PROD_BACKLOG"=="RF_SCRUM_MEETINGS";'' : illegal use of null value or 'null' literal : at Line: 1 : in file: inline evaluation of: ``showPosition1&&"RF_PROD_BACKLOG"=="RF_SCRUM_MEETINGS";'' : ;
> (Error evaluating BeanShell use-when condition [showPosition1&&"RF_PROD_BACKLOG"=="RF_SCRUM_MEETINGS"] on the field custRequestId of form sprintBacklogListItems: Sourced file: inline evaluation of: ``showPosition1&&"RF_PROD_BACKLOG"=="RF_SCRUM_MEETINGS";'' : illegal use of null value or 'null' literal : at Line: 1 : in file: inline evaluation of: ``showPosition1&&"RF_PROD_BACKLOG"=="RF_SCRUM_MEETINGS";'' : ;
> )



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)