I use a Replicator of WssTaskActivities (from the ECM Starter Kit) inside a ConditionedActivityGroup that is also running a "MonitorAndEnforceDueDate" DelayActivity.
The CAG has an UntilCondition (rule-based, this.StopTheCAG == true).
Neither the Replicator nor the DelayActivity have When conditions, so the CAG runs them only once (which, when you think about it, is what is needed).
Basically one of two things happens to escape from the CAG:
1. All the WssTaskActivity's created by the Replicator finish "normally", in which case the OnReplicatorCompleted method sets StopTheCAG to TRUE, causing the DelayActivity to be cancelled.
2. The Due Date[/Time] occurs, in which case I call my HandleAnyOverDueTasks method which locates any Tasks that are (a) not deleted (WssTaskActivity.IsTaskDeleted == false) and (b) have a Percent Complete < 1.0f or Status <> Completed. Inside that loop, I match up the WssTaskActivity with the corresponding SPWorkflowTask, set up a hashtable with Status and my special OverDue,"false" key/value pair that get passed along with the SPWorkflowTask to AlterTask. Those in turn auto-magically calls the IsTaskCompleted method, passing the hashtable as AfterProperties (WssTaskActivity intercepts OnTaskChanged and only calls your IsTaskCompleted method). Inside IsTaskCompleted, I react to the presence of AfterProperties
key/value pair OverDue by setting the Task Outcome to "auto-completed, overdue task". Then I set the StopTheCAG value to TRUE.
The end result is, I have complete control over how any remaining replicator-created tasks (WssTaskActivity) are handled when the (common to all tasks) due date arrives. If I didn't use the AlterTask technique in the non-replicator part of the CAG and simply set StopTheCAG to TRUE, the remaining tasks would be canceled, but not in a way that I can control.