Hi Karl,
It isn't that the simpler case doesn't have a join path. NORMA just creates the join path automatically in the simple case. You'll see a join path for this constraint if you look at the .ORM file in an XML editor.
The harder case actually has three possibilities. I'm assuming you want to join over both Person and Job, which verbalizes as:
For each Person and Job,
if that Person was recruited for that Job on some Date1
and applied for that Job on some Date2
then Date1 is greater than Date2.
However, joining over just Person gives the following:
For each Person,
if that Person was recruited for some Job on some Date1
and applied for some Job on some Date2
then Date1 is greater than Date2.
and joining over just Job gives:
For each Job,
if some Person was recruited for that Job on some Date1
and some Person applied for that Job on some Date2
then Date1 is greater than Date2.
While the last two join paths don't work semantically for this case, they are both structurally valid join paths. The tool has no clue about the semantics, only the structure, so it does not generate an automatic join path in this case.
Non-automatic join paths use the same editor as the fact type and subtype derivation rules, which is part of the NORMA Pro extensions. There are more details (and user-directed questions) on Pro status hidden away in http://www.ormfoundation.org/forums/p/1054/3321.aspx#3321.
In this case, the model suggests that you objectify the Person/Job relationship and add recruited on/applied on binary relationships off of the objectification. You will then get an automatic join path for this case. At some point, though, you will likely want the ability to constraint the model as is without refactoring.
-Matt