From mboxrd@z Thu Jan 1 00:00:00 1970 From: Buddy Butterfly Subject: More generic taskjuggler export proposal Date: Wed, 03 Apr 2013 22:25:01 +0200 Message-ID: <515C901D.50500@web.de> Reply-To: buddy.butterfly@web.de Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Return-path: Received: from eggs.gnu.org ([208.118.235.92]:36371) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UNUF5-0005z3-VX for emacs-orgmode@gnu.org; Wed, 03 Apr 2013 16:25:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UNUEz-0003ff-1o for emacs-orgmode@gnu.org; Wed, 03 Apr 2013 16:25:11 -0400 Received: from h1359005.stratoserver.net ([81.169.136.31]:50270) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UNUEy-0003bC-Gx for emacs-orgmode@gnu.org; Wed, 03 Apr 2013 16:25:04 -0400 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode Hi, I would like propose the following for taskjuggler export as base for a discussion to change export functionality. Here I will refer to the example project of taskjuggler 3. Pre-requesites: - Functionality of tj should be kept in tj as much as possible - org export should be as generic as possible such that changes in tj will not impact org. Suggestions: - There should be configurable global taskjuggler prefix to define what shoudl be exported. Here we will take "tj_" as an example. - tj elements of the form : { } should be implemented as tagged tasks (like already done for resources and project). The org tag should be prefixed by the tj prefix and the tag name should automatically be exported as the of tj. Org task should go into tj and the org property tj_id should go into . The attributes should be org properties prefixed by the prefix (here "tj_"). Example for the project tag: The tj example project lists the following project keyword header: project your_project_id "Your Project Title" 2011-11-11-0:00--0500 +4m { timezone "America/New_York" timeformat "%Y-%m-%d" numberformat "-" "" "," "." 1 currencyformat "(" ")" "," "." 0 now 2011-12-24 currency "USD" # You can define multiple scenarios here if you need them. #scenario plan "Plan" { # scenario actual "Actual" #} # You can define your own attributes for tasks and resources. This # is handy to capture additonal information about the project that # is not directly impacting the project schedule but you like to # keep in one place. #extend task { # reference spec "Link to Wiki page" #} #extend resource { # text Phone "Phone" #} } This would be written in org like * Your Project Title :tj_project: :PROPERTIES: :tj_id: your_project_id :tj_timezone: "America/New_York" :tj_timeformat: "%Y-%m-%d" :tj_numberformat: "-" "" "," "." 1 :tj_currencyformat: "(" ")" "," "." 0 :tj_now: 2011-12-24 :tj_currency: "USD" :END: * Plan :tj_scenario: :PROPERTIES: :tj_scenario: actual "Actual" :END: * task :tj_extend: :PROPERTIES: :tj_reference: spec "Link to Wiki page" :END: * resource :tj_extend: :PROPERTIES: :tj_text: Phone "Phone" :END: As we can see, org can export everything in a generic way with mainly stripping the prefix "tj_" from the tags and properties and export as is to taskjuggler. This also maps to the well known resource mapping: # This is a set of example resources. resource r1 "Resource 1" resource t1 "Team 1" { managers r1 resource r2 "Resource 2" resource r3 "Resource 3" } # This is a resource that does not do any work. resource s1 "System 1" { efficiency 0.0 rate 600.0 } Would be written in org-mode like: * Resource 1 :tj_resource: :PROPERTIES: :tj_id: r1 :END: * Team 1 :tj_resource: :PROPERTIES: :tj_id: t1 :tj_managers: r1 :END: * Resource 2 :PROPERTIES: :tj_id: r2 :END: * Resource 3 :PROPERTIES: :tj_id: r3 :END: * System 1 :tj_resource: :PROPERTIES: :tj_id: s1 :tj_efficiency: 0.0 :tj_rate: 600.0 :END: Here the fact of inheritance of org tags have been taken into account in org task "Team 1" for resource "Resource 2" and "Resource 3". For the tasks the same holds: task project "Project" { task wp1 "Workpackage 1" { task t1 "Task 1" task t2 "Task 2" } task wp2 "Work package 2" { depends !wp1 task t1 "Task 1" task t2 "Task 2" } task deliveries "Deliveries" { task "Item 1" { depends !!wp1 } task "Item 2" { depends !!wp2 } } } Org mode: * Project :tj_task: :PROPERTIES: :tj_id: project :END: * Workpackage 2 :PROPERTIES: :tj_id: wp2 :END: * Task 1 :PROPERTIES: :tj_id: t1 :tj_depends: !wp1 :END: * Task 2 :PROPERTIES: :tj_id: t2 :END: Also accounts could be easily generated with this method: account cost "Project Cost" { account dev "Development" account doc "Documentation" } --- * Project Cost :tj_account: :PROPERTIES: :tj_id: cost :END: * Development :PROPERTIES: :tj_id: dev :END: * Documentation :PROPERTIES: :tj_id: doc :END: There is still the question how to implement properties that go into the global part of a tj file. Here I would suggest that one can place this data inbetween #+BEGIN_TASKJUGGLER # The Profit&Loss analysis should be rev - cost accounts. balance cost rev # Define you public holidays here. vacation "New Year's Day" 2012-01-02 vacation "Birthday of Martin Luther King, Jr." 2012-01-16 vacation "Washington's Birthday" 2012-02-20 vacation "Memorial Day" 2012-05-28 vacation "Independence Day" 2012-07-04 vacation "Labor Day" 2012-09-03 vacation "Columbus Day" 2012-10-08 vacation "Veterans Day" 2012-11-12 vacation "Thanksgiving Day" 2012-11-22 vacation "Christmas Day" 2012-12-25 # The daily default rate of all resources. This can be overridden for each # resource. We specify this, so that we can do a good calculation of # the costs of the project. rate 400.0 #+END_TASKJUGGLER The dependency between tasks is one thing that should be supported by org. I do not know what would be the best solution here. Maybe we could get a completion list for the values when adding :tj_depends: properties. This is all for now. I still would like to discuss the organisation with multiple projects. What do you think about it?