jxProject Icon jxProject.com

jxProject Advertisement
. Home Products Advertising News About Contact Legal

Purchase / Buy


Future Plans



jxProject 0

JxProject – Resource Scheduling

User Documentation

June 19, 2012

Schedule: The resource scheduling capabilities of jxProject are both flexible and powerful and thus they are somewhat more complex than other project management tools.  You would be well served to literally memorize the architecture and principles which are explained in this section.  All of the scheduling of calendars and resources is done using “rules”.  The rules are mildly complex however when you combine the importance of the order of the rules along with the interaction between resources and parent calendars, it can get very confusing.  Be sure to ground yourself with a solid understanding of the principles governing the interaction of Calendars, Resources, Rules and Segments.

The Calendar/Resource Schedule Interface

The labels used in describing the basic components of the jxProject interface in Figure 1 will be used consistently throughout this document.

Elements of the Schedule Chart: The tree table and the Schedule Chart are closely related and only serve as alternative visual representations of the exact same data.  Each row in the Table represents the data in the same row in the Chart to the right. Each day is represented as a full 24 hour period starting at midnight.  Time which is scheduled as work or non-work time is shown for each day and is coded as follows.

  1. Work Time: This is represented as solid green with no outline.

  2. Non-Work Time: This is divided into paid and non-paid. Both of these time types have black outlines but the fill color for paid is green while the fill color for non-paid is gray.

  3. Chart Background: Areas of the chart which are colored gray are the days which contain no scheduled work time as defined by the “Base Schedule”.  The Base Schedule is explained below.

  4. Chart Header: The header defines the dates of the period of the schedule you are viewing. The upper scale is denoted in weeks and the lower scale is in days.  You can stretch and shrink the time scale by pressing the (keyboard shift key and the right mouse key on the chart header) simultaneously and dragging it to the right to stretch the scale and the left to shrink the scale.

  5. Chart Pan Scrolling/Auto scrolling: Pan scrolling the chart is activated by single clicking on the table with the middle mouse button. The pan scroll will work for any component inside a scroll pane and gives the user the ability to fly over the component.

Elements of the Tree Table: A tree table is what you get when you cross a traditional GUI table with a traditional GUI tree. It’s a table with expandable collapsible nodes.  The furthest left column of the tree table is the “key” field and it can never be scrolled out of view.  Every other column in the table can be scrolled and the order of the columns can be changed by dragging the columns into different positions using the column headers. The Tree Table contains nodes of two different types which are Calendars and Resources. The descriptions of the fields in the table are often similar between the two but not exact. Now a few definitions:

  1. Key: Each Node is assigned a unique key when it is created.  However, you can renumber them by “right clicking” on the header which will bring up a single option popup-up menu to renumber the nodes.

  2. Show: This is purely a diagnostic tool to assist you in identifying which rules are driving which parts of the schedule.  It is the only field in this table that is editable.  If this is unchecked, all of the rules defined in that node are no longer displayed on the chart.  Also, any nodes underneath the node, which inherit their scheduling from the node, are not displayed.  If you load up this example and uncheck the Zulu node, you will see a lot of the schedule disappear.  That is because most of the nodes are inheriting their schedule from the Zulu Calendar.  Whether these flags are on or off has no effect on the schedule used in solving the project plan.

  3. Name: Calendars have a single name while Resources are listed as last, first, initial. If you type a name into a blank field a resource will automatically be created.

  4. Rules (count): This is the number of schedule rules which are associated with this node.

  5. Time Zone: This is a description of the time zone which governs this node which includes its offset from Greenwich Mean Time as well as general description of the areas of the globe which use that time zone.

  6. Tree Table row header:  You can increase and decrease the table row height by pressing the (keyboard shift key and the right mouse key on the row table header) simultaneously and dragging it towards the bottom to increase the row height and towards the top to decrease the row height.

  7. Table Pan Scrolling/Auto scrolling: Pan scrolling the tree table is activated by single clicking on the table with the middle mouse button. The pan scroll will work for any component inside a scroll pane and gives the user the ability to fly over the component.

Key Components of the Schedule:  Every schedule for every project must contain the Zulu (GMT 00:00) Calendar as the root node and a Default resource.  Each project must also contain a node (Resource or Calendar) which is designated as the Base Schedule.

  1. Calendar: A Calendar can have its own time zone and can have an unlimited number of Calendars and Resources underneath it.  However, only Calendars which are directly underneath the root Calendar or Zulu Calendar can have their own time zones.  A Calendar that is more than 1 level deep must inherit the time zone from its parent Calendar.  In our example above, the “Part Time” Calendar gets its time zone from the Silicon Valley Calendar.

  2. Resource: A Resource always inherits its time zone from its parent Calendar.  A Resource cannot have any nodes underneath it.

  3. Zulu Calendar: This is always the root Calendar and it has a fixed time zone of GMT+00:00.  You can add or remove Rules from the Zulu Calendar and all nodes underneath Zulu will inherit those Rules.

  4. Base Schedule: There must be one and only one node designated as the Base Schedule, and it can be any Calendar or Resource which resides in the table.  The Base Schedule determines the point of view from which the entire project plan is viewed.  All dates in the schedule and Gantt interfaces are presented in the time zone of the Base Schedule.  Also, the days which are determined to be “non-work days” are determined by the Base Schedule and appear as gray days in the chart backgrounds.  In our example above the Base Schedule is the Calendar named “Silicon Valley”.  You can set the Base Schedule by right clicking on the name of the node, you will get a pop-up menu with one option which is “Set as Base Schedule”, click that option and you’ll see the red arrow move to your selected node.

  5. Default Resource:  There must be one and only one Resource designated as the Default Resource.  It is designated by an icon of a “juggler” and it has a single rule to work Monday through Friday 8 hours per day (40 hours per week).  You cannot edit the Default Resource although you can drag and drop the Default Resource to change the parent Calendar in which the Default Resource is scheduled to work.  Any tasks which have no resources assigned to them automatically utilize the Default Resource schedule to satisfy the Resource constraint requirements.

  6. Assigning Resource: The assigning resource is automatically assigned to any newly created task. The assigning resource can be any resource in the project, including the default resource. When a new project is created, a resource named “Myself” is automatically created and is designated as the assigning resource.

  7. Rule: All Calendars and Resources can have an unlimited number of scheduling rules except, for the Default Resource.  Rules define a start and end time in days and contain filters for days of the week.  Rules can contain zero or more Time Segments.

  8. Time Segment: Segments range from zero to 24 hours in total duration and one Time Type per Segment.

  9. Time Type.  There are three types: Work Time(green), Non-Work Time (paid)(black outline; green fill) and Non-Work Time (unpaid)(black outline; gray fill).

Have you memorized all of this yet?  ;-)  I’m only giving you definitions at this point, next I will go over the pieces of the interface and then I will give you a little story of how I expect you to use this interface.  I’ll even tell you some of the “gottchas” to be careful of.  You need to know all of this by heart to master jxProject.  There really isn’t anything you can afford to not understand if you want to build an accurate project plan using this tool.


Title Bar:  The title bar contains the jxProject logo/icon followed by the file name which is currently open.  Only one file can be open at a time.


Menu Bar:    The menu bar consists of drop down menus which provide access to most of the functionality in jxProject.  Each of the menus is shown and outlined below.

File Menu:

  • New: Create a new file.

  • Open…: Open an existing file (*.jxp)

  • Close: Close the file that is currently open.

  • Save: Save the currently open file

  • Save As…: Save the currently open file with a new name.

  • Import XML: Import a jxProject file which is in XML format.

  • Export XML: Export the jxProject file in XML format.

  • Print Preview…: This takes you to the print preview screen and you can configure the printer or print from there.

  • HTML/images…: This takes you to the image preview screen. From here you can view and alter the size of the images produced when you save the html file. The output is a simple html file utilizing the images of the table and chart.

  • Exit:  Exit the application

Edit Menu:

  • Cut/Copy/Paste: Cut will copy the selected cells to the clipboard and set the values to their minimum or default values. Copy will copy the cell values to the system clipboard. Paste will paste values from the system clipboard to the selected cells.

  • Selection using Dialog...: This will bring up the Schedule edit dialog for the row that is selected in the TreeTable.  You must have one and only one row selected.  You can also double click on the “Key” of the node you want to edit a node with this dialog.

  • Fill Up: For multiple row selections, the top cell value in a column will be copied down to all selected cells directly below.

  • Fill Down: For multiple row selections, the bottom cell value in a column will be copied up to all selected cells directly above.

  • Delete Node(s): All fully selected rows/tasks will be deleted.

  • Intent Selection: Remove the selected nodes from their current parent and insert them as children of the parent of the node that is just above the top most selected row.

  • Outdent Selection: Remove the selected nodes from their current parent and insert them as children of their current grandparent node.

  • Undo: Undo the last edit.

  • Redo: Redo the last edit.

View Menu:

  • Gantt Chart: This will switch you into Gantt Chart Mode

  • Calendars/Resources: This will switch you into Scheduling Mode.

Insert Menu:

  • New Calendar(s): This will insert a number of new Calendars just above the selected row(s).  The number of Calendars inserted will be the same as the number of rows selected.

  • New Resource(s): This will insert a number of new Resources just above the selected row(s).  The number of Resources inserted will be the same as the number of rows selected.

Tools Menu:  See The document for documentation on the tools Menu and the Global Options Dialog. 

Help Menu:

  • Documentation: A dialog directing you to go to www.jxProject.com will be shown.

  • Log Dialog …: This will open the Log Dialog which will allow you to view log files and their contents. You can also set the level of logging that is done. Caution: Logging lots of data to the log file will slow down the speed of the application, use the default logging levels for the best performance and logging.

  • Sample Projects >: There are three sample projects that the user can select and load in order to get familiar with jxProject's capabilities. These files can be edited and saved by the user, however, the sample projects stored with the application are not altered.

  • About…: This will display the splash screen showing the product name and version number.

Upper Tool Bar:   The tool bar acts provides quick access to functionality which is accessible through the menu bar.  Working left to right the functionality is as follows:

  1. New File; see Menu Bar > File >New

  2. Open File; see Menu Bar > File > Open

  3. Save File; see Menu Bar > File > Save

  4. Print; see Menu Bar > File > Print

  5. Display the Options Dialog; This will open the options dialog (See Gantt document)

  6. Start: The start time for the schedule chart.

  7. Years: The number of years shown in the schedule chart

Lower Tool Bar:   The Schedule is mostly independent of the project plan.  You can view the schedules of your Calendars and Resource for hundreds of years into the past or future if you like.  The default start date will be near your project start date but you can change this to anything time you wish to see.

  1. Outdent: see Menu Bar > Edit > Un-Indent Selection

  2. Indent: see Menu Bar > Edit > Indent Selection

  3. Undo; see Menu Bar > Edit >Undo (Note: Graphic needs updating)

  4. Redo; see Menu Bar > Edit >Redo (Note: Graphic needs updating)

  5. Zone Aware: If this is checked, then Chart areas will shift to their respective time zone offset relative to the Base Schedule.  Load the example file above and click this button on and off to see what I mean.  This is just used to help you with visualization of how teams in different time zones overlap or don’t overlap their work time schedules.

Resource Utilization: This screen shot shows the schedule view with tasks and summary tasks being displayed with the time segments rendered on top of the tasks. The height of the rows has been increased so that the task keys and descriptions are readable. Tasks where the resource is less than 100% dedicated have a solid triangle painted in the upper left corner of the task. Summary tasks have a black outline and tasks have a blue outline. Basically this is a custom Gantt chart for each person on the project. Tasks which are associated with the default resource are not displayed or resource leveled. If resource leveling is enabled, it is impossible to over allocate resources.

Tree Table Interaction:

  • Key: By double-clicking the key cell you can bring up the Schedule Dialog to edit the Calendar or Resource.

  • Show: This is the only field that is directly editable from the table.  It is used to help visualize which nodes are driving the schedule by allowing you to turn them on and off.

Table row header: The row header is the left most part of the tree table which contains the “Key” field.  You change the table row height by pressing the keyboard shift key and the right mouse key on the row header simultaneously and dragging toward the bottom to expand the row height and toward the top to compress the row height.

Tree Table Context/PopupMenu: If you “right click” on a Schedule Tree Table you will see the above popup menu. Most of the selections are the same as the Edit or Insert menus. However it also has options to expand or collapse the node. If you select the associated “+” button, the operation will act on all child/decedent nodes. For example, selecting the “+” on the Expand Node item will expand the node and all nodes that are children of that node, and any nodes that are children of those nodes and so on.

Edit Node... option will bring up the edit dialog.

Set As Base Schedule: Will set the associated node as the base schedule for the entire project.

Set As Assigning Resource: Will set the resource as the resource to be assinged to any newly created tasks. The assgining resource has a green background.

Dragging and Dropping: Using drag and drop it is possible to move or copy Calendars and Resources to/from the TreeTable to/from the chart..

  • TreeTable: To initiate a drag, select one or more rows using the row header to select the entire row. Then press and drag the left mouse button on one of the selected rows from the row header. If the drag gesture is recognized, your cursor will change to reflect the type of drag operation that has been initiated. The default drag is a move, if you hold down the control key while initiating the drag, the operation will be a copy. A copy cursor has a “+” sign on it. When Resources are copied, the tasks which were assigned to the original resources are not assigned to the copied resource(s). Be aware the time zones of copied calendars or resources can change based on their level within the hierarchy.

  • Chart: To change resource assignments, select the task, the press down with the left mouse button on the body of the task and drag the task and drop it on a different resource row in the chart to move the task. Hold the cntrl key down during the drag/drop operation to copy the task to another resource.

Schedule Chart Interaction:

· Schedule chart header: The header defines the dates over which the chart starts and ends.  The upper scale is denoted in weeks and the lower scale is in days.  You can compress and expand the time scale by pressing the keyboard shift key and the right mouse key on the chart header simultaneously and dragging it to the right to expand the scale and the left to compress the scale. As you expand/compress the time line it will automatically change formats to suit the level of scaling. There are at least 20 preset formats for the header and they can be fully customized by the user by the time line format dialog. Right click on the header and select “TimeLine Format...”, and a dialog for customizing the format will be displayed. See the chapter on Date Formating and TimeLines for more details. Note: The row height can be adjusted in a similar manor, see “Table Row Header” for specifics.

Chart Interaction: The user can alter the duration and resource assignments of the tasks from the chart. To alter the duration select the task, then press down with the left mouse button on the right end of the task and drag left or right to alter the duration of the task. Drag and Drop of the tasks on the chart is also supported, see above.

Task Edit Dialog: To initiate this dialog, double-click on a task in the chart. See the Gantt Chart documentation for images and specifics on the operation of this dialog.

Schedule Edit Dialog:  To initiate this dialog double click on the “Key” field of the Calendar or Resource you want to edit. Or double-click on a blank space on a row in the chart. This dialog is the only way to edit most of the data associated with a Calendar or a Resource.  This dialog has three tabs which are: “Resource”, “Calendar” and “Rules”.  When this dialog is open, some of the buttons and other capabilities of the Schedule are disabled.  I’ll leave it as an exercise for the user to discover what you can and cannot do.  But you can double-click on another row in the table and load it into the dialog.  You don’t have to close the dialog to change Nodes.  If you have edits pending in the dialog, and you try to change selected nodes, you’ll get a warning to save or cancel your current changes.

Figure 1: Schedule Edit Dialog (Resource Tab):

  • First: The resource’s first name

  • Middle: The resource’s Middle name or initial

  • Last: The resource’s Last name

  • Title: The resource’s Title

  • Initials: The first character of each component of the full name in first, middle, last name order.  This will be generated automatically if you don’t type it in yourself.  If you type something in, that will override the automatic generation of the initials.  If you clear the initials field, it will automatically regenerate.

  • Entire Project: If this is selected then the always available according to the rules defined or inherited by this Resource.

  • From/To: If this is selected, then the availability is restricted to the From and To dates as well as the rules defined or inherited by this Resource.

Figure 2: Schedule Edit Dialog ( Calendar Tab):

  • Name: The name of the Calendar.

  • TimeZone: The time zone which this calendar and all Calendars and Resources below this Calendar will use.  NOTE: Calendars that are more than one level below the Zulu Calendar cannot have their own time zones.  In that case the time zone selection will be disabled.

Figure 3: Schedule Edit Dialog (Rules Tab)

Rules Table: This contains all of the rules defined for this Calendar or Resource. The order is always sequential and rules can overlap each other. The rule furthest to the bottom of the list takes priority in an overlap situation. The active field says whether the rule is active or not; inactive rules to not participate in any scheduling. The String field does nothing, I had an idea for it at one time but this will probably go away or be replaced with something else. The rules can be reordered by drag and drop.

  • New: Create a completely new rule in the table.

  • Copy: Copy the selected rule to a new instance.

  • Delete: Delete the selected rule.

  • Schedule Segments Table: This table contains all of the Time Segments that are defined for the rule which is selected in the Rules table. One rule can have multiple Segments. The Work Type is really the time type of Segment. The From, Duration and To times define the period of the day which is defined as this type of time.

  • Rule Builder: This part of the dialog applies once again to the rule which is selected in the Rules Table at the top of the dialog.

  • Name: The name of the rule; simple.

  • Active: Active rules are part of the schedule; inactive rules are not.

  • Days: Think of the days as a more filter for the rule where you can select specific days of the week where the Time Segments will apply.

  • Dates: OK, now things get a little complicated. :-o  You are going to need to experiment with this in order to really understand how it works.

  • Starting: This enables the starting date field so you can define a date (inclusive) at which this rule becomes enforced.

  • Always: This disables the starting date field as this means that this rule is always in effect going back in time to infinity.

  • Repeats: This is so you can make a week based cycle schedule.  Do you want this rule to be in effect every week (1), every other week (2), every third week (3)…  You must specify a starting date for this feature to be enabled.

  • For: This is so you can specify how may cycles you want this rule to be in effect.  If you specified every week(1) for 3 occurrences that would make the rule effective for 3 weeks from the start date.  If you specified every other week (2) for 3 occurrences that would make the rule effective for 6 weeks.  Simple huh?

  • Ending: This enables the ending date field so you can specify the last effective date (inclusive) of this rule.

  • Forever: This disables the ending date field as this means that this rule will always be in effect through to infinity.

  • Note: There are various combinations of these check boxes that will enable and/or disable other check boxes because not all options are applicable in all situations.  It is an ugly looking double nested if-then-else block which would be painful to describe.  My recommendation, push buttons … you’ll see how it works.

Gotchas: Make sure you have the “days” selected that you want to rule to apply on.  It’s very easy to make a mistake by focusing on the start and end dates and cycles and forget to filter for the correct days of the week.

Schedule Edit Dialog Buttons:

  • OK: Save changes and exit the dialog.

  • Apply: Apply changes but leave the dialog open.

  • Reset: Cancel all changes back to the last saved.

  • Cancel: Cancel all changes and exit the dialog.

If you’ve read through all of this excruciating detail up until now, I wouldn’t be surprised to find you passed out on the floor blowing bubbles.  I’ve written the above material in a reference fashion so you can refer to it in the future without having to wade through dialog that you don’t need.  Now we are going to get into how all of these little pieces fit together to form a schedule.


  1. Calendars and Resources exist in parent/child relationships.  Calendars can have Calendars and/or Resources as children but Resources cannot have any children.

  2. The schedule of Calendars and Resources is determined by the Rules which they contain and the Rules which their parent Calendars contain.  Rules can and often do overlap each other.  The Rule that is farthest down in the hierarchy and list order has the highest priority in an overlap situation!!!

  3. Rules contain zero or more Segments.  (A Rule should always have at least one Segment; zero is a mistake really).  In order for a rule to be enforced for a particular date, it must be active, the date must be between (inclusive) the start and end dates of the rule, the “day of the week” for the date must be selected for the rule, and the rule must not be overridden by another rule which is lower in the hierarchy/list and satisfies the active, start, end, day-of-week requirements.

  4. Segments define a time type and a period of time within a 24 hour period.  Segments cannot overlap and always appear in early to late order.  If you define the Segments in an unordered or overlapping fashion, jxProject will immediately sort the segments and remove any overlap.  It’s kind of unfriendly that way but it removes ambiguity.


Recommendations on how to organize your Rules to build Schedules:

  1. You want to put your most basic scheduling rules inside Calendars and as high up in the hierarchy as possible.  For example, if you regular work week is Monday – Friday 8 to 5; put that rule up in the Zulu Calendar so everything can inherit that Rule.

  2. You should group people that have similar schedules together under Calendars.  In our example project, the “Silicon Valley” team and the “Koblenz, Germany” team belong to separate Calendars.  This is needed in order to give those people separate time zones but also to accommodate different Holiday schedules.  Also, notice the “Silicon Valley” Calendar has a Calendar underneath it “Part Time” which schedules Monday and Wednesdays as non-work days to override the 40 work Rule.  The result is that the Resources under the “Part Time” Calendar are only scheduled to work 24 hours a week; Tuesday, Thursday and Friday.

  3. Put your Holidays, such as Christmas, just below your 40 hour work rule inside a Calendar.  The “Silicon Valley” calendar has several Rules defined for North American Holidays.

  4. Resources will usually only contain Rules which schedule non-work time to override the regular 40 hour work rule.  These would typically be to schedule vacations or account for personal days off.

  5. Be descriptive with the names of your Rules to assist in troubleshooting should the need arise.  If you are scheduling a week of time off to go bike riding in August, call it the “5 days August biking” Rule.


Test your Knowledge:

  1. How many Rules would be required to establish a schedule where a group of three people worked Tuesday and Thursday from 9am to 5pm and Monday, Wednesday and Friday from 6am to 3pm?  Answer: 2 Rules.

  2. How many Rules would be required to schedule a person as on Vacation for one day?  Answer: 1 Rule

  3. How many Rules would be required to schedule a person as on Vacation for Thursday, Friday and Tuesday where Saturday, Sunday and Monday were already scheduled off by the parent Calendar?  Answer: 1 Rule – Define the Rule for the period of Thursday through Tuesday and only select the days Thursday, Friday and Tuesday as the days-of-week for enforcement.

  4. Can you define a Rule with no Segments?  Answer: Yes, but it would have no effect on the Schedule.

  5. Can you define an active Rule that has valid defined Segments but has no effect on the Schedule?  Answer: Yes – If you do not select any of the days-of-the-week it would be the same as no Rule at all.

  6. Could you define a single rule that Schedules a person for time-off every fourth week on Friday and Monday for the next six months?  Answer: Yes

  7. Can a single Rule that has 3 Time Segments enforce only 1 of the Segments on a particular day?  Answer: No – When a Rule is enforced all of its Segments are used on that day that it is active.


Techniques for Trouble Shooting Schedules:

After implementing your schedules you should always confirm your schedule is correct by closely reviewing the schedule chart for each of your Resources over the period you expect your project to run.  If you find the schedule does not reflect what you think it should, you are going to need to do some investigation.  Because rules are inherited and do override each other things can get confusing.  There are diagnostic tools built in to help you isolate the problem.

Let’s say you find a day for one of your Resources that are scheduled as paid-time-off but should not be.  How do you find where this is coming from?  First you need to find the Rule responsible for this “day off”.  It has to be coming from the Resource its self, or one of the Resource’s parent Calendars.  Toggle off the “show” checkbox in the Tree Table for the Resource and parent Calendars until this particular day off disappears.  That will tell which Node owns the Rule that is scheduling the day off.  Now toggle the show button to “on” and open up the Schedule Edit Dialog for that Node to review the rules.  You could work in a brute force fashion and select each rule, make it “inactive” and press the “apply” button.  This will turn off the rule and update the schedule.  When you see the day off disappear, then you’ve found the rule that’s causing that day off.  You’ll need to take it from here to resolve the problem.

Copyright ©2002-2012 jxProject Company