public function FixUpParentChildRelationship(CBPActivity $nestedActivity)
 {
     parent::FixUpParentChildRelationship($nestedActivity);
     if (!is_array($this->arActivities)) {
         $this->arActivities = array();
     }
     $this->arActivities[] = $nestedActivity;
 }
 private function ParceWorkflowTemplate($arWorkflowTemplate, &$arActivityNames, CBPActivity $parentActivity = null)
 {
     if (!is_array($arWorkflowTemplate)) {
         throw new CBPArgumentOutOfRangeException("arWorkflowTemplate");
     }
     foreach ($arWorkflowTemplate as $activityFormatted) {
         if (in_array($activityFormatted["Name"], $arActivityNames)) {
             throw new Exception("DublicateAcrivityName");
         }
         $arActivityNames[] = $activityFormatted["Name"];
         $activity = $this->CreateActivity($activityFormatted["Type"], $activityFormatted["Name"]);
         if ($activity == null) {
             throw new Exception("Activity is not found.");
         }
         $activity->InitializeFromArray($activityFormatted["Properties"]);
         if ($parentActivity) {
             $parentActivity->FixUpParentChildRelationship($activity);
         }
         if ($activityFormatted["Children"]) {
             $this->ParceWorkflowTemplate($activityFormatted["Children"], $arActivityNames, $activity);
         }
     }
     return $activity;
 }