MrProjext (release <#1.3.1#>: purpose and usage

MrProjext: The MrPoject-Extractor Shortly spoken MrProjext is a MrProject-Databasefile-Extractor and -Converter: It can search the tasks belonging to a specific timeslot or recource. And (as converter) it can rewrite the extracted result as MrProject-, Evolution-, Yank- or Pilot-File. Here are the details:

(1) What's the purpose of MrProjext?

MrProject is a very ambitious eyecandy und intuitively usable project management tool. (Yes, this is not a typo: for a moment I am talking about MrProject instead of MrProjext!) But still MrProject lacks some practically whished features:

Regarding these wishes I've discovered that I would need a MrProject-Extractor which were able to change and rewrite a Mrproject database. Because a Mrproject database is nothing more than an xml-file, my wish seems to be realizable ... And the end of this story is the birth of MrProjext, a MrProject-Extractor: The original Mrproject database acts as a masterfile out of which a smaller content will be extracted.

(2.A) Where can I get MrProjext?

For the Moment MrProjext can be got from 2 locations:

(2.B) Under which conditions can I use MrProjext?

You may distribute MrProjext under the conditions of the GNU General Public License also known as copy-left licence.

(3) Which possibilities offers MrProjext generally?


mrprojext 1.3.1

Purpose:
  MrProjext is a MrProject-Databasefile-Extractor and -Converter:
  It can search the tasks belonging to a specific timeslot or recource. 
  And (as converter) it can rewrite the extracted result as MrProject-, 
  Evolution-, Yank- or Pilot-File

Usage: mrprojext [OPTIONS]...
   -h         --help                   Print help and exit
   -V         --version                Print version and exit
   -fSTRING   --dbFile=STRING          read from mrproject-xml-dbfile (default='stdin')
   -sSTRING   --timeSlotStart=STRING   extract tasks not ending before ... (iso8601str) (default='19700101T000000')
   -eSTRING   --timeSlotEnd=STRING     extract tasks not starting after ... (iso8601str) (default='21001231T240000')
   -pSTRING   --person=STRING          extract tasks being handled by ... (default='all')
   -gSTRING   --group=STRING           extract tasks being handled by ... (default='all')
   -o         --onlyOpenTasks          extract only unfullfilled tasks (default=off)
              --only-open              extract only unfullfilled tasks (default=off)
   -i         --rwIso8601              rewrite iso8601 date-strings instead of german form (default=off)
              --iso-dates              rewrite iso8601 date-strings instead of german form (default=off)
   -l         --rwOnlyLeafs            rewrite only the extracted most embedded tasks (default=off)
              --only-leafs             rewrite only the extracted most embedded tasks (default=off)
   -X         --rwMrPrjFile            rewrite the extracted tasks as new mrproject-xml-dbfile (default=off)
              --output-mrproject       rewrite the extracted tasks as new mrproject-xml-dbfile (default=off)
   -M         --rwMemoFile             rewrite the extracted tasks as text-memo (default=off)
              --output-memo            rewrite the extracted tasks as text-memo (default=off)
   -P         --rwPilotFile            rewrite the extracted tasks as pilot-todo-file (default=off)
              --output-pilot           rewrite the extracted tasks as pilot-todo-file (default=off)
   -v         --rwVcardFile            rewrite the extracted tasks as vcard-todo-file (default=off)
              --output-vcard           rewrite the extracted tasks as vcard-todo-file (default=off)
   -Y         --rwYankFile             rewrite the extracted tasks as yank-todo-file (default=off)
              --output-yank            rewrite the extracted tasks as yank-todo-file (default=off)
   -C         --rwCslFile              rewrite  the extracted tasks as comma seperated todo-line-list (default=off)
              --output-csl             rewrite  the extracted tasks as comma seperated todo-line-list (default=off)
   -H         --rwHtmlSurvey           rewrite a total task survey as htmlpage (default=off)
              --output-html            rewrite a total task survey as htmlpage (default=off)
   -DSTRING   --evaluationDate=STRING  build task fullfilling survey with respect to this date (iso8601str)
   -d         --debug                  print debugMessages (default=off)

  

This means that MrProjext ...

Some of these features can't be combined with other features. In those cases the combination would be senseless. Ok, here is a little table:

Output Style Limit to Timeslot Limit to Person Limit to Group Only Open Tasks Rewrite IsoTimeString Only most Embedded Tasks
--rwMrPrjFile
+
+
+
+
-
-
--rwMemoFile
+
+
+
+
+
+
--rwPilotFile
+
+
+
+
+
+
--rwVcardFile
+
+
+
+
-
+
--rw«Yank»File
+
+
+
+
-
+
--rw«Yank»File
+
+
+
+
-
+

(4.A) How can I extract only tasks of a specific timeslot?

MrProject and MrProjext use iso8601-strings of the form YYYYMMDDThhmmss for determining a date. A timeslot is a pair of such strings. The begin of the timeslot must be earlier than the end of the timeslot. A task is touched by the timeslot if it doesn't end before the timeslot starts and if it doesn't start after the end of the timeslot.

Example: Assume, we are managing two tasks. Gifts shall be bought before christmas (20021201T120000 ... 20021223T180000) and be given away at christmas (20021224T120000 ... 20021226T180000):

(4.B) How can I extract only tasks of a specific person?

MrProject uses identifiers for determining named recources. You can order MrProjext to extract only those tasks which shall be fullfilled by a person (recource) by specifying such a name (not an identifier) as commandline argument.

Example: Assume, we are managing two tasks. Gifts shall be bought before christmas by the mother and shall be given away at christmas by the father.

(4.C) How can I extract only tasks of a specific recource group?

MrProject allows to link persons to (recource) groups. You can order MrProjext to extract only those tasks which shall be fullfilled by any of the persons of a (recource) group. In this case you have to specify the name of the group as commandline argument.

Example: Assume, we are managing three tasks. Christmas Gifts shall be bought by the mother and shall be given away by the father but shall be unpacked by the children. And assume, that only the mother and the father are member of the group «parents»

(4.D) How can I extract only open tasks?

For each task MrProject allows to specify the degree of fullfillness. (Certainly some of these values will later be computed on the base of other values). A value of 100 means that the task has totally been fullfilled. You can extract the unfillfilled tasks using the commandline option --onlyOpenTasks.

Example:

(4.E) How can I extract only most embedded tasks?

MrProjext allows to declare tasks as subtasks of other tasks. So you get a tree of tasks. You may interpret the most embedded tasks as those which you have to fullfill for having fullfilled the more complex tasks. In such cases it might be good to get a list of only those tasks which really must be fullfilled:

Example:

(4.F) In which sense can I influence the form of the rewritten dates?

Using the command

mrprojext --rwMemoFile --rwIso8601 -f christmas.mrproject
you can demand that the date strings will be written as iso8601 time-strings. Without that commandline option MrProjext uses the german format.

(4.G) How can I get a full task survey in form of a colored html-Table?

Using the command

mrprojext --rwHtmlSurvey -f christmas.mrproject
you can demand that the whole tree of tasks will be written as html-table. Fullfilled task will be printed onto a green background. Unfullfilled tasks which already should have been fullfilled, will be presented on a red background, the other on a gray background

For being able to decide wether a task should already have been fullfilled or not, mrprojext uses a speficic reference date. If you don't specify such a reference date, mrprojext takes the actual timestamp of your computer. For being able to specify a specific reference date you can use the commandline argument

mrprojext --rwHtmlSurvey --evaluationDate==YYYYMMDDThhmmss -f christmas.mrproject

(5) What does MrProjext do with the extracted data?

MrProjext uses the following commandline options for determining those tasks, which shall be extracted:

And using a special format MrProjext rewrites the extracted tasks to stdout. If you want to save the result in a new file you have to redirect the file-descriptor stdout by typing commands like this:
mrprojext [$OPTIONS] > extracted-file.mrproject

(5.A) How can I reload the extracted tasks into MrProject itself?

  1. Determine the set of tasks which shall be extracted by using the nescessary commandline options.
  2. type something like
    mrprojext [$OTHER-OPTIONS] --rwMrPrjFile -f christmas.mrproject > xmas.mrproject
  3. start mrproject
  4. load xmas.mrproject

(5.B) How can I use the extracted tasks as memo?

  1. Determine the set of tasks which shall be extracted by using the nescessary commandline options.
  2. type something like
    mrprojext [$OTHER-OPTIONS] --rwMemoFile -f christmas.mrproject >xmasTodoMemo.txt
  3. type something like
    vi xmasTodoMemo.txt
    or
    nedit xmasTodoMemo.txt

(5.C) How can I import the extracted tasks into my Palm?

  1. Determine the set of tasks which shall be extracted by using the nescessary commandline options.
  2. type something like
    mrprojext [$OTHER-OPTIONS] --rwPilotFile -f christmas.mrproject >xmasTodoPilot.txt
  3. Following the instructions of pilot-link (if you are using pilot-link to connect to your palm) type
    install-todos /dev/pilot xmasTodoPilot.txt

There's a problem in the tool «install-todos» of the pilot-link-software: It takes a line formatted file evaluating each line as one task-description. Therefore there's (still) no possibility to determine priority, dates or anything else. Hence you will find a task-list in your palm which is not very easily to read. Therefore we want to hint to another method to get your tasks into your palm:

  1. Determine the set of tasks which shall be extracted by using the nescessary commandline options.
  2. type something like
    mrprojext [$OTHER-OPTIONS] --rwMemoFile -f christmas.mrproject >xmasTodoMemo.txt
  3. Following the instructions of pilot-link (if you are using pilot-link to connect to your palm) type
    install-memo xmasTodoMemo.txt

Now you have one memo with all your tasks inside of your palm.

(5.D) How can I import the extracted tasks into «Gnomecal»?

  1. Determine the set of tasks which shall be extracted by using the nescessary commandline options.
  2. type something like
    mrprojext [$OTHER-OPTIONS] --rwVcardFile -f christmas.mrproject >xmasTodoVcard.txt
  3. type something like
    mergeMrPrj2Vcards.pl xmasTodoVcard.txt -gf ~/.gnome/user-cal.vcf > ~/.gnome/new-user-cal.vcf
  4. replace
    ~/.gnome/user-cal.vcf
    by
    ~/.gnome/new-user-cal.vcf

Explanation:
«mergeMrPrj2Vcards.pl» is a perl-script also distributed and installed by the MrProjext tarball. It takes a file containing the output of MrProjext (generated by the commandline option «--rwVcardFile») and the inputfile of «Gnomecal» [-gf] (or «Evolution» [-ef]) (which are storing their data in kind of the vcard-filetype), replaces all those VTODO-entries of the «Gnomecal»- or Evolution»-file which refers to the Mrproject databasefile, and writes the result back to stdout. «Gnomecal» very often stores the tasks in the file «~/.gnome/user-cal.vcf». If you are using another todo-file you have to specify that file using the commandline argument «-gf».of «mergeMrPrj2Vcards.pl»

(5.E) How can I import the extracted tasks into Evolution?

  1. Determine the set of tasks which shall be extracted by using the nescessary commandline options.
  2. type something like
    mrprojext [$OTHER-OPTIONS] --rwVcardFile -f christmas.mrproject >xmasTodoVcard.txt
  3. type something like
    mergeMrPrj2Vcards.pl xmasTodoVcard.txt -ef ~/evolution/local/Tasks/tasks.ics >newtasks.ics 
  4. replace
    ~/evolution/local/Tasks/tasks.ics
    by
    newtasks.ics

Explanation:
«mergeMrPrj2Vcards.pl» is a perl-script also distributed and installed by the MrProjext tarball. It takes a file containing the output of MrProjext (generated by the commandline option «--rwVcardFile») and the inputfile of «Gnomecal» [-gf] or «Evolution» [-ef] (which are storing their data in kind of the vcard-filetype), replaces all those VTODO-entries of the «Gnomecal»- or Evolution»-file which refers to the Mrproject databasefile. «Evolution» very often stores the task in the file «~/Evolution»/local/Tasks/tasks.ics;». If you are using another todo-file you have to specify that file using the commandline argument «-ef». of «mergeMrPrj2Vcards.pl»

(5.F) How can I import the extracted tasks into «Yank»?

  1. Determine the set of tasks which shall be extracted by using the nescessary commandline options.
  2. type something like
    mrprojext [$OTHER-OPTIONS] --rw«Yank»File -f christmas.mrproject >xmasTodoYank.txt
  3. type
    yank -f xmasTodoYank.txt

(5.G) How can I import the extracted tasks into «Gnumeric/Excel»?

  1. Determine the set of tasks which shall be extracted by using the nescessary commandline options.
  2. type something like
    mrprojext [$OTHER-OPTIONS] --rw«Csl»File -f christmas.mrproject >xmasTodoCsl.txt
  3. import xmasTodoCsl.txt into GNUMERIC
If you must change the (order of the) fields, edit the perl-script
reformMrPrjCslFile.pl
and call
reformMrPrjCslFile.pl xmasTodoCsl.txt

(6.A) Which dtd of MrProject uses MrProjext as reference?

MrProject still doesn't offer a dtd. That's clear because MrProject is heavily developped. On the other hand MrProjext needs a fixpoint for being a converter. Therefore I've written a dtd for MrProject which is used by MrProjext and which will be changed whenever a new MrProject-version will be offered.

(6.B) Which release of MrProjext belongs to which release of MrProject?

Because there may be different dtds for MrProject you may ask which version of MrProjext can handle the xml-database-file of which version of MrProject. Here is the answer:

  • MrProjext-1.3.1 « MrProject-0.9.1, « MrProject-0.9.0
  • MrProjext-1.2.1, MrProjext-1.2.0, MrProjext-1.1.0, MrProjext-1.0.1 « MrProject-0.5.0, MrProject-0.5.1
  • MrProjext-1.0.0 « MrProject-0.4.0

(6.C) Where can I find the source documentation?

If you want to change mrprojext have a look at the sources commented by using doxygen

(7) How can I contact the author of MrProjext?

©  Karsten Reincke, Osnabrück (Germany) 2001/2002/2003.

You may distribute this application under the conditions of the GNU General Public License also known as copy-left licence.