I am not a big fan of Loops :) On seeing your scenario, I believe its not requried to have Either State Machine or Loops in the workflow. Instead, you can have a simple sequential workflow with the above mentioned conditions, and configure the workflow to start when any of the Project properties are modified. For this you need to check the option in the Nintex workflow designer. Settings --> Startup Options --> there check the box "Start when items are modified". By checking this the workflow starts at each time the Items are modifed and checks the fields in the each run. By doing this the workflow completes at the same instance with out waiting in Wait state and not using most of the system resources. In your workflow now you can put the following actions in sequence.
- Set a Variable:
a) Create a local variable called projectModifiedDate of type Date and Time. Do not check "Use date when action is exectuted". Click on the button on the Right Side of date field operator.
b) Select the Source as "List Lookup"
c) In the Look Up details select the Source as "Current item". Field as "Modified".
This would get the Modified date of the Project.
- Set a Condition
a) Configure this field to check the status of the Project.
b) If it is Active Red, Green Ambre, Prospective, Requested then there would be another Set Condition to check the end dates with respect to modified date. If not end the workflow.
- If End Date less than Modified date Send Notification. Or else End the workflow.
Let me know if this satisfies your scenario or not.