Posted
over 12 years
ago
Igalia is about to release LibrePlan 1.3 and maybe the most important feature included in this new version will be the resources binding.
Summarizing, it consists of allowing the binding between LibrePlan resources and users. Resources are used in
... [More]
the planning and are allocated to the different tasks of the project. Users, like in any other web project, have a username and password to login and use the application. So far, there were no relationship between resources and users in LibrePlan and several people have requested this feature since a lot of time ago.
Why didn’t we have this relationship yet? The main reason is that LibrePlan was started as a project for manufacturing industries where they manage the resources, but the resources are not expected to interact with the application directly. However, the project has evolved into a more generic planning tool suitable for other companies where resources have access to a computer and should be LibrePlan users to input some data to the planning (like worked hours, expenses, etc.).
Resource binding windows
Thanks to the new feature you’ll have the possibility to bind resources to users, this will allow to assign users (through the bound resource) to the different tasks of your planning. In order to do that you’ll have 3 options in the resources editing window:
Not bound: The resource is not bound to any user.
Not bound option in resources editing window
Existing user: Select one of the current users and bind it to the resource. Moreover, you’ll have a link to the user editing window.
Existing user option in resources editing window
Create new user: You could create a new user directly from resource editing window providing the basic data (username, password and, optionally, e-mail). The new user will be automatically bound to the resource.
Create new user option in resources editing window
Correspondingly in the user editing window you’ll have a new section about the bound resource with a button to disable the binding.
Bound resource information in user editing window
New home page for bound users
Notice that the bound users will be associated with a new role called Bound user. By default this kind of users will only have access to the menu entry called Personal area where they’ll have a new page Home with the following areas:
My tasks: Where the user could find the list of assigned tasks. Each task will have a link to report hours using a monthly timesshet.
Monthly timesheets: In the home page the user will have the list of monthly timesheets with a link to edit them. More about monthly timesheets later.
Expenses: Apart from reporting hours with the monthly timesheets it’ll be also possible to report expenses. The resource will be able to report the expenses associated with the tasks in which he/she is participating.
New home page for bound users
Monthly timesheets
In LibrePlan worked hours are reported via the timesheets, that are quite flexible thanks to the timsheet templates. However, for the new bound resources it’ll be a new special type of timesheets called monthly timesheets with a specific editing window. The monthly timesheets will be composed by a grid where the bound users could introduce the hours they have devoted to the different tasks during a month.
Monthly timesheet editing window
As you can see in the image above, the monthly timeshet will allow the user to enter hours for each of his/her assigned tasks and also for any other tasks if needed using the Add task button.
BTW, it’s important to highlight the meaning of the Other row and column. It’ll show the hours reported with the standard timesheets during the month. Maybe, you’ll forget about standard timeseehts if you’re using monthly timesheets but in some cases it could be useful to have both ways to report hours. For example, imagine that overtime needs to be reviewed and reported by a manager, the manager could use standard timesheets to report that kind of hours and the resources will use the monthly timesheets to report regular hours.
Future
As you can see in LibrePlan 1.3 you’ll be able to report hours and expenses using the new home page, however you still can’t provide more info that could be useful for the project managers like: progress, comments, … In the future some of these features could be included too.
Igalia has worked hard to keep improving LibrePlan, we hope you enjoy this feature and the rest of new sutff in LibrePlan 1.3. We’re waiting for your feedback about it as soon as LibrePlan 1.3 is released (hopefully during this week), in the meanwhile you can test it in the unstable demo. [Less]
|
Posted
over 12 years
ago
Igalia is about to release LibrePlan 1.3 and maybe the most important feature included in this new version will be the resources binding.
Summarizing, it consists of allowing the binding between LibrePlan resources and users. Resources are used in
... [More]
the planning and are allocated to the different tasks of the project. Users, like in any other web project, have a username and password to login and use the application. So far, there were no relationship between resources and users in LibrePlan and several people have requested this feature since a lot of time ago.
Why didn’t we have this relationship yet? The main reason is that LibrePlan was started as a project for manufacturing industries where they manage the resources, but the resources are not expected to interact with the application directly. However, the project has evolved into a more generic planning tool suitable for other companies where resources have access to a computer and should be LibrePlan users to input some data to the planning (like worked hours, expenses, etc.).
Resource binding windows
Thanks to the new feature you’ll have the possibility to bind resources to users, this will allow to assign users (through the bound resource) to the different tasks of your planning. In order to do that you’ll have 3 options in the resources editing window:
Not bound: The resource is not bound to any user.
Not bound option in resources editing window
Existing user: Select one of the current users and bind it to the resource. Moreover, you’ll have a link to the user editing window.
Existing user option in resources editing window
Create new user: You could create a new user directly from resource editing window providing the basic data (username, password and, optionally, e-mail). The new user will be automatically bound to the resource.
Create new user option in resources editing window
Correspondingly in the user editing window you’ll have a new section about the bound resource with a button to disable the binding.
Bound resource information in user editing window
New home page for bound users
Notice that the bound users will be associated with a new role called Bound user. By default this kind of users will only have access to the menu entry called Personal area where they’ll have a new page Home with the following areas:
My tasks: Where the user could find the list of assigned tasks. Each task will have a link to report hours using a monthly timesshet.
Monthly timesheets: In the home page the user will have the list of monthly timesheets with a link to edit them. More about monthly timesheets later.
Expenses: Apart from reporting hours with the monthly timesheets it’ll be also possible to report expenses. The resource will be able to report the expenses associated with the tasks in which he/she is participating.
New home page for bound users
Monthly timesheets
In LibrePlan worked hours are reported via the timesheets, that are quite flexible thanks to the timsheet templates. However, for the new bound resources it’ll be a new special type of timesheets called monthly timesheets with a specific editing window. The monthly timesheets will be composed by a grid where the bound users could introduce the hours they have devoted to the different tasks during a month.
Monthly timesheet editing window
As you can see in the image above, the monthly timeshet will allow the user to enter hours for each of his/her assigned tasks and also for any other tasks if needed using the Add task button.
BTW, it’s important to highlight the meaning of the Other row and column. It’ll show the hours reported with the standard timesheets during the month. Maybe, you’ll forget about standard timeseehts if you’re using monthly timesheets but in some cases it could be useful to have both ways to report hours. For example, imagine that overtime needs to be reviewed and reported by a manager, the manager could use standard timesheets to report that kind of hours and the resources will use the monthly timesheets to report regular hours.
Future
As you can see in LibrePlan 1.3 you’ll be able to report hours and expenses using the new home page, however you still can’t provide more info that could be useful for the project managers like: progress, comments, … In the future some of these features could be included too.
Igalia has worked hard to keep improving LibrePlan, we hope you enjoy this feature and the rest of new sutff in LibrePlan 1.3. We’re waiting for your feedback about it as soon as LibrePlan 1.3 is released (hopefully during this week), in the meanwhile you can test it in the unstable demo. [Less]
|
Posted
over 12 years
ago
The LibrePlan team wants to announce a new date in the launch of the LibrePlan 1.3 version, which...
|
Posted
over 12 years
ago
The LibrePlan team wants to announce a new date in the launch of the LibrePlan 1.3 version, which...
|
Posted
over 12 years
ago
We’re getting close to the release of LibrePlan 1.3, and as you can see in the rodamap to LibrePlan 1.3 and also in the last revision, one of the features to be included in this new major version will be:
Include the management and support of a
... [More]
currency to apply to the project: Now all the reports are in euros. Internationalization must be included to allow to configure the currency used and the symbols to use.
Some weeks ago, we in Igalia have been working in develop this new feature, that you can already test in LibrePlan unstable demo.
From the user point of view, these are the new bits:
New option in configuration screen to choose the currency symbol to be used into LibrePlan.
New currency option in configuration window
In the different places where money is managed, you’ll always see the currency symbol together with the value. For example, in the budget column of the WBS.
WBS view using configured currency symbol
From the developer point of view, now there’re some new methods in class org.libreplan.web.common.Util that should be used to manage money values:
getCurrencySymbol(): Returns the currency symbol from LibrePlan configuration.
addCurrencySymbol(BigDecimal): Returns a String with the currency symbol attached to the value.
getMoneyFormat(): Returns the format with the currency symbol to be used in a Decimalbox when it manages money.
As usual, if you’re interested you can find more information about the analysis and development of this task in the project wiki.
In Igalia we keep pushing for LibrePlan and we’re already working in one important feature that will be included in LibrePlan 1.3. I’m talking about the feature to bind users with resources, requested by lot of people, that will improve the way how worked hours are reported (but it deserves its own blog post ).
As a side note, I’d like to talk about the last LibrePlan release. In LibrePlan 1.2.4 again we added support for a new language, this time it was Czech thanks to the work done by Zbyněk Schwarz: “Vítejte Češi!”
Transifex is working really fine to manage all these translations and also to receive new translations. For example, Slovak and German translations has already been started and should eventually join the list of supported languages, currently: Czech, Dutch, English, French, Galician, Italian, Spanish, Polish, Portuguese and Russian.
Thanks to all our translators for their work! [Less]
|
Posted
over 12 years
ago
We’re getting close to the release of LibrePlan 1.3, and as you can see in the rodamap to LibrePlan 1.3 and also in the last revision, one of the features to be included in this new major version will be:
Include the management and support of a
... [More]
currency to apply to the project: Now all the reports are in euros. Internationalization must be included to allow to configure the currency used and the symbols to use.
Some weeks ago, we in Igalia have been working in develop this new feature, that you can already test in LibrePlan unstable demo.
From the user point of view, these are the new bits:
New option in configuration screen to choose the currency symbol to be used into LibrePlan.
New currency option in configuration window
In the different places where money is managed, you’ll always see the currency symbol together with the value. For example, in the budget column of the WBS.
WBS view using configured currency symbol
From the developer point of view, now there’re some new methods in class org.libreplan.web.common.Util that should be used to manage money values:
getCurrencySymbol(): Returns the currency symbol from LibrePlan configuration.
addCurrencySymbol(BigDecimal): Returns a String with the currency symbol attached to the value.
getMoneyFormat(): Returns the format with the currency symbol to be used in a Decimalbox when it manages money.
As usual, if you’re interested you can find more information about the analysis and development of this task in the project wiki.
In Igalia we keep pushing for LibrePlan and we’re already working in one important feature that will be included in LibrePlan 1.3. I’m talking about the feature to bind users with resources, requested by lot of people, that will improve the way how worked hours are reported (but it deserves its own blog post ;-)).
As a side note, I’d like to talk about the last LibrePlan release. In LibrePlan 1.2.4 again we added support for a new language, this time it was Czech thanks to the work done by Zbyněk Schwarz: “Vítejte Češi!” :-)
Transifex is working really fine to manage all these translations and also to receive new translations. For example, Slovak and German translations has already been started and should eventually join the list of supported languages, currently: Czech, Dutch, English, French, Galician, Italian, Spanish, Polish, Portuguese and Russian.
Thanks to all our translators for their work! [Less]
|
Posted
over 12 years
ago
We’re getting close to the release of LibrePlan 1.3, and as you can see in the rodamap to LibrePlan 1.3 and also in the last revision, one of the features to be included in this new major version will be:
Include the management and support of a
... [More]
currency to apply to the project: Now all the reports are in euros. Internationalization must be included to allow to configure the currency used and the symbols to use.
Some weeks ago, we in Igalia have been working in develop this new feature, that you can already test in LibrePlan unstable demo.
From the user point of view, these are the new bits:
New option in configuration screen to choose the currency symbol to be used into LibrePlan.
New currency option in configuration window
In the different places where money is managed, you’ll always see the currency symbol together with the value. For example, in the budget column of the WBS.
WBS view using configured currency symbol
From the developer point of view, now there’re some new methods in class org.libreplan.web.common.Util that should be used to manage money values:
getCurrencySymbol(): Returns the currency symbol from LibrePlan configuration.
addCurrencySymbol(BigDecimal): Returns a String with the currency symbol attached to the value.
getMoneyFormat(): Returns the format with the currency symbol to be used in a Decimalbox when it manages money.
As usual, if you’re interested you can find more information about the analysis and development of this task in the project wiki.
In Igalia we keep pushing for LibrePlan and we’re already working in one important feature that will be included in LibrePlan 1.3. I’m talking about the feature to bind users with resources, requested by lot of people, that will improve the way how worked hours are reported (but it deserves its own blog post ;-)).
As a side note, I’d like to talk about the last LibrePlan release. In LibrePlan 1.2.4 again we added support for a new language, this time it was Czech thanks to the work done by Zbyněk Schwarz: “Vítejte Češi!” :-)
Transifex is working really fine to manage all these translations and also to receive new translations. For example, Slovak and German translations has already been started and should eventually join the list of supported languages, currently: Czech, Dutch, English, French, Galician, Italian, Spanish, Polish, Portuguese and Russian.
Thanks to all our translators for their work! [Less]
|
Posted
over 12 years
ago
Recently I’ve been working in improving LibrePlan performance. There are many strategies to improve the performance of a web application from improving Javascript code, optimizing SQL queries to business logic refactoring. When it comes to a Java
... [More]
application build upon Hibernate there are a known set of features that is possible to tune to boost performance.
Hibernate provides some strategies to improve performance. One common strategy is to use batch-fetching. A 1-to-N relationship between two entities generally means that entity A has a set of entities B. Take the following LibrePlan relationship between WorkReports and WorkRepotLines:
<set name="workReportLines" cascade="all-delete-orphan" inverse="true">
<key column="work_report_id"/>
<one-to-many/>
</set>
This means an entity WorkReport has many WorkReportLines. When workReportLines are attached to the current session a SQL query is executed for each of them. If the set contains many elements, this means many queries. Batch-fetching allows to prefetch a certain amount of elements, reducing significantly the number of queries.
<set name="workReportLines" cascade="all-delete-orphan"
inverse="true" batch-size="10">
<key column="work_report_id"/>
<one-to-many/>
</set>
The book “Java Persistence with Hibernate” recommends using batch-sizes between 3 and 15. Hibernate also provides a default parameter (hibernate.default_batch_fetch_size) to turn on batch-fetching for all collections, however I wouldn’t recommend using it and turn on batch-fetching only for large collections. Lastly, Hibernate also provides other fetching strategies such Join fetching, Select fetching and Subselect fetching.
Another mechanism to improve performance in Hibernate is to use the second-level cache. But, what does it mean? Well, perhaps to understand what the second-level cache is, I should explain first what’s the first-level cache.
First-level cache has to do with a session lifespan. It’s active by default. When a transaction is being executed all the objects retrieved are cached in the same session. So, think of first-level cache as the cache attached to a session (transaction-scope-cache), it allows reusability of objects within a session.
But, how we could cache objects retrieved during different sessions? That’s what the second-level cache allows. Think of the second-level cache as a process-scope-cache. Second-level cache is pluggable, it means it can be turned on or not. In addition, it can be configured on a per-class and per-collection basis.
To activate second-level cache, first modify your Hibernate default settings.
<property name="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.use_query_cache">false</property>
<property name="hibernate.cache.provider_configuration_file_resource_path">classpath:ehcache.xml</property>
Then activate caching for a specific class. I do it for Label in LibrePlan.
<class name="Label" table="label">
<cache usage="nonstrict-read-write"/>
...
</class>
One useful tip to check whether second-level cache is working is to add a log appender in Log4Java configuration.
<appender name="second-level-cache-file">
<param name="file" value="/tmp/libreplan-second-level-cache.log"/>
<param name="MaxFileSize" value="5000KB"/>
<param name="MaxBackupIndex" value="4"/>
<layout>
<param name="ConversionPattern" value="%d [%t] %-5p %l - %m%n"/>
</layout>
</appender>
<logger name="org.hibernate.cache">
<level value="ALL"/>
<appender-ref ref="second-level-cache-file" />
</logger>
When checking the log, you should see something like this:
2012-05-28 12:05:52,523 [19765316@qtp-4334864-0] DEBUG org.hibernate.cache.ReadWriteCache.get(ReadWriteCache.java:85) - Cache hit: org.libreplan.business.calendars.entities.BaseCalendar#202
2012-05-28 12:06:15,049 [19765316@qtp-4334864-0] DEBUG org.hibernate.cache.ReadWriteCache.put(ReadWriteCache.java:148) - Caching: org.libreplan.business.resources.entities.Resource#1718
2012-05-28 12:06:15,050 [19765316@qtp-4334864-0] DEBUG org.hibernate.cache.ReadWriteCache.put(ReadWriteCache.java:169) - Item was already cached: org.libreplan.business.resources.entities.Resource#1718
Going back to the on class cache configuration, there are 4 possible values: transactional, read-write, nonstrict-read-write and read-only. Use transactional and read-only for read-mostly data, nonstrict-read-write doesn’t guarantee consistency. Lastly, use read-write for mostly-read data with eventual write.
Another important feature of second-level cache configuration is the second-level cache provider. Different cache providers support different cache operations and features. I won’t get deeper into this. In LibrePlan we use EhCache, which is the most popular open-source second-level cache provider and widely used in many Hibernate projects. I recommend this article, Hibernate Caching, to know more about fetching, caching and second-level cache providers.
So, after configuring all these settings it was time to do some benchmarking and see what was the real gain. To do the benchmarking I used JMeter. We used it some time ago in LibrePlan also for measuring performance. The benchmark consisted of a large dataset with 10 use cases. After executing 60 samples for each use case I stopped the benchmark and got the following results:
Average. It’s the average response time. On average there was no gain.
Aggregate_report_min. It’s the min response time. With cache the min is 0, without cache 1.
Aggregate_report_max. It’s the max response time. With cache the max is 9, without cache 34, so there’s a 75% gain.
Aggregate_report_stddev. Standard deviation. Without cache was high because the the average is 2 and the min and max are 1 and 34 respectively.
Summarizing, second-level cache and the new batch-fetching strategies provided a big drop on maximum response time, which also reduces dramatically the standard deviation. Without any doubt, a big gain.
Notice that time of benchmarks is measured in milliseconds. To know more about aggregate reports in JMeter check JMeter Aggregate Report.
And this is all. If you’re a LibrePlan user I hope you enjoyed knowing more about what kind of things we do to run LibrePlan faster. If you’re a LibrePlan developer or a Java developer in general I hope you found this information useful and can help you in your future projects. [Less]
|
Posted
almost 13 years
ago
LibrePlan 1.2.4 has been released and comes with the latest enhancements and Czech as new language...
|
Posted
almost 13 years
ago
LibrePlan 1.2.4 has been released and comes with the latest enhancements and Czech as new language...
|