Menu

Resource Allocation Module

2011-11-07
2012-11-26
  • Nobody/Anonymous

    Hi Javier,

    I’m having some problems in resource allocation module…probably I haven’t completely understood its  functions.
    If I have a task with a particular effort, I always want to set its duration or changing the number of allocated resources or changing the calendar linked to a specific allocated resource.

    Suppose you have this scenario :
    1) A task 1 with a 24 hours effort
    2) A default calendar : Monday-Friday workable days and 8 hours work /day
    3) A super-week calendar (defined by the user): Monday-Saturday workable days and 12 hours work /day
    I’ve defined a specific resource A with a default calendar. When I allocate resource A into task 1, the relative effort is translated into a duration of 3 workable days: 24h = 8h * 3 days;  that is correct.
    If whereas I define a resource B with a linked super week calendar, I should expect a duration of 2 workable days that is 24h = 12h * 2 days, but this doesn’t happen!
    Where do I make mistake? Are these operations correct?
    Many thanks in advance
    Andrea

     
  • Javier Morán Rúa

    Hi Andrea, you are doing correct operations and the program is working as expected.

    I am going to explain how calendars work in specific allocations, that are the allocations in which a specific resource is chosen and which are the ones you are using. In specific allocations two calendars are taken into account to do the allocations:

    Task calendar. All tasks in a project are assigned a calendar. The calendar that a task is assigned by default is the calendar that the project has assigned. And a project has assigned by default the calendar that the application has configured as default calendar.
    Resource calendar. It is configured in the resource administration window and the one you are talking about.

    Well, both calendars in a specific allocation affect and they work with AND logic, i.e, the capacity the resource allocation algorithm assigns per day is the intersection (minimum) of the capacity determined by the task calendar and the resource calendar. So, in your example, what happens is that probably your task calendar is determining 8h per day and, although the resource B super calendar informs about a capacity of 12h per day, the intersection of 12h & 8h = 8h (the minimum).

    So, how do you solve it ? Just assigning to your task calendar (or to the project) the super week calendar. If really you do not want that the task or project calendar affects, you have to choose a task calendar with a number of hours per day which does not limit on doing the intersection, e.g. 24h.

    The reasoning behind this behavior is that the task calendar informs about the work planning you have for the task and then that plan has to be adapted to the requirements of the concrete resource calendar. In any case, although the current allocating strategy I think that is the one which covers the most typical scenario, maybe in future we could include an option to select how the user wants that the task calendar and resource calendar affects each other:

    AND logic (the minimum capacity is selected).
    OR logic (the maximum capacity is selected).
    Only resource (ignore task calendar).
    Only task (ignore resource calendar).
       
    If you have more doubts or my explanation is not clear enough, just let us know. Regards

       

    You can configure the default calendar of the application in the global configuration window in Administration/Management menu.
    You can configure the calendar of a project in the General data tab in the project details view of a project.
    You can configure a task calendar through the contextual menu that is displayed on clicking on a task with the right button of your mouse.

     
  • Nobody/Anonymous

    Very clear! Many thx Regards Andrea

     
  • Nobody/Anonymous

    Hi Javier,

    First of all,  many congratulations for libreplan 1.2 ! I’m very happy and asap I’ll install it!

    I have still some problems to solve….

    1) Sometimes, when I change view, I meet  a java error “javax.imageio.IIOException: I/O error writing PNG file! javax.imageio.IIOException: I/O error writing PNG file!”; I don’t know why and if the problem is in my notebook or in the linux server. I press “Countinue” button but I don’t know if this  error can cause some problems to my planning.

    2) Sometimes (not always) when I define a task with a particular effort (for examples 48 hours), in the Task properties, I have correctly HOURS: 48, but the DURATION DAYS is 4 instead of 6! I didn’t change the default calendar and I don’t understand why: the working day is 8 hours.

    3) When I press button (show/hide resource) I cannot see the name of subcontractors but only resources names. Do I have to setup something?

    Many thanks in advance
    Andrea

     
  • Javier Morán Rúa

    Thank you, Andrea.

    We will keep working hard to improve LibrePlan in each new version.

    Let's go with your issues:

    1) Error  “javax.imageio.IIOException: I/O error writing PNG file!”

    About this error it is thrown in the server side, so it is a problem in the Linux server. Reading the error condition, it is related with credentials (user permissions). Probably, there is some configuration problem in your Tomcat installation and maybe the Tomcat system user has not write permissions over a folder to write temporal files (charts shown by LibrePlan with  progress measurements for instance write image files).

    First thing to do is upgrading to LibrePlan 1.2 to check if in the new version that error keeps appearing to you or is solved. If it were still there, we could report a ticket in the LibrePlan bug tracking system ( http://bugs.libreplan.org ). In any case, we would need to get more information by providing the stacktrace of the exception (Tomcat log file) and try to make it reproducible. For developers it is always very useful to have a set of conditions to provoke an error condition appear to identify what is happening and, then, to fix it. 

    2) Sometimes (not always) when I define a task with a particular effort (for examples 48 hours), in the Task properties, I have correctly HOURS: 48, but the DURATION DAYS is 4 instead of 6! I didn’t change the default calendar and I don’t understand why: the working day is 8 hours.

    With the information you provide, I am unable to guess what can be the problem. If I had, I would say that is a configuration issue that you are not aware of.

    The same as 1) to help you, it will be useful to have a reproducible situation to examine all the parameters. I am going to suggest you create a project in the on-line demo (http://demo.libreplan.org)  with the scenario that you describe. In this way, I could have a look at it and tell you something.

    3) When I press button (show/hide resource) I cannot see the name of subcontractors but only resources names.

    In this case, there is not anything wrong. It is not implemented the behavior that you mention yet. However, I think that is very useful and I will propose to develop it in the development community.

     
  • Nobody/Anonymous

    For item
    1) after having installed the new version libreplan 1.2, this error has never occured more!
    2) I'm going to try in the demo version.
    3) I agree with you. It is a very useful improvement.

    Many thx
    Andrea 

     
  • Nobody/Anonymous

    After having configured my scheduling with duration and resources, sometimes if I try to move foward a task, an error occured! I cannot click on the task and see the task details and the system shows this error:

    Exception type: class org.hibernate.LazyInitializationException
    Status code: 500

    stack trace:

    org.hibernate.LazyInitializationException: could not initialize proxy - no Session
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:108)
    at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:150)
    at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:150)
    at org.libreplan.business.resources.entities.MachineWorkersConfigurationUnit$$EnhancerByCGLIB$$1b84e28a.getAlpha(<generated>)
    at org.libreplan.business.planner.entities.DerivedAllocation.getAlpha(DerivedAllocation.java:260)
    at org.libreplan.web.planner.allocation.ResourceAllocationModel.loadDerivedAllocations(ResourceAllocationModel.java:282)
    at org.libreplan.web.planner.allocation.ResourceAllocationModel.initAllocationsFor(ResourceAllocationModel.java:244)
    at sun.reflect.GeneratedMethodAccessor516.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at $Proxy172.initAllocationsFor(Unknown Source)
    at org.libreplan.web.planner.allocation.ResourceAllocationController.init(ResourceAllocationController.java:182)
    at org.libreplan.web.planner.taskedition.EditTaskController.showTabPanel(EditTaskController.java:180)
    at org.libreplan.web.planner.taskedition.EditTaskController.showSelectedTabPanel(EditTaskController.java:164)
    at org.libreplan.web.planner.taskedition.EditTaskController.showEditForm(EditTaskController.java:151)
    at org.libreplan.web.planner.taskedition.EditTaskController.showEditFormResourceAllocation(EditTaskController.java:240)
    at org.libreplan.web.planner.taskedition.EditTaskController.showEditFormResourceAllocation(EditTaskController.java:221)
    at org.libreplan.web.planner.allocation.ResourceAllocationCommand.doAction(ResourceAllocationCommand.java:66)
    at org.libreplan.web.planner.allocation.ResourceAllocationCommand.doAction(ResourceAllocationCommand.java:42)
    at org.zkoss.ganttz.CommandOnTaskContextualized.doAction(CommandOnTaskContextualized.java:72)
    at org.zkoss.ganttz.CommandOnTaskContextualized.doAction(CommandOnTaskContextualized.java:57)
    at org.zkoss.ganttz.TaskList$1.onEvent(TaskList.java:180)
    at org.zkoss.zk.ui.impl.EventProcessor.process0(EventProcessor.java:192)
    at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:138)
    at org.zkoss.zk.ui.impl.EventProcessingThreadImpl.process0(EventProcessingThreadImpl.java:517)
    at org.zkoss.zk.ui.impl.EventProcessingThreadImpl.run(EventProcessingThreadImpl.java:444) 
      
    Next days I'm going to simulate the same thing in yr online demo! At the moment, the only thing I can do is deleting the tasks and rebuild the scheduling!

      

     
  • Javier Morán Rúa

    Hi, Andrea, thanks for your feedback once more with the program and for reporting this error. Let's go with it:

    First, I have tried to reproduce it, and I was not able. In any case, we are going to try more because the stack trace give us clues about what is happening.
    Second, examining the stack trace the problem is related to the configuration unit of the machines. Doing tests because of your error report, we detected some other issues related to the configuration unit machine engine. So, we are going to work in fixing all these things and, until then, I recommend you to use the machines but without configuration units. You can get the same result by assigning manually the workers needed in each machine allocation.

    I think that you already know the purpose of the configuration units but, just in case, I am going to describe it briefly from the help:

    On the machine configuration unit tab is possible to configure the ratio of machines to existing worker resources. A machine has an alpha value that indicates the machine/involved resources ratio. As has already been mentioned, an alpha value of 0.5 indicates that 0.5 people are used for each full day's operation of a machine. The system, based on an alpha value, automatically assigns workers who are in some way associated with a machine once the machine is assigned to a task. Associating a worker with a machine can be done in two ways: i Specifically assigning a range of dates on which the worker is to be assigned to a machine. This is a specific assignment as the system automatically assigns hours to the worker when the machine is planned. ii Specifically assigning criteria to be fulfilled by workers who are assigned to machines. This creates a generic assignment of workers who fulfill the criteria.

    So, instead of using this automatic mechanism to assign worker hours on assigning machine hours, I suggest you that assign manually the amount of hours needed by the workers to operate a machine in each task.

    Regards.

     
  • Javier Morán Rúa

    Hi Andrea,  I have being doing more tests I have built a database where I reproduce the error you have reported. We will fix it and we will include the fix in next version. You can follow the bug history and status in the LibrePlan bugzilla.

    http://bugs.libreplan.org/show_bug.cgi?id=1323

    Regards.

     

Log in to post a comment.