2015-03-16 3 views
0

Мне нужно документировать в диаграмме последовательности UML метод setRepresentative. Это метод код:Поток для условных выражений внутри диаграммы последовательности

class ReptoolController extends PageController { 

    private function setRepresentative($request, $action, $case) 
    { 
     ... 

     $repappConfig = new RepappConfig(); 
     $repappConfig = $this->getDoctrine()->getRepository('AppBundle:RepappConfig')->findOneBy(array("app_id"=>$id)); 
     $project_id = $repappConfig->getProjectId(); 
     $company_id = $repappConfig->getCompanyId(); 
     $project = $this->getDoctrine()->getRepository('AppBundle:Project')->find($project_id); 
     $brand = $this->getDoctrine()->getRepository('AppBundle:Brand')->findOneBy(array("project"=>$project_id)); 

     $company = $this->getDoctrine()->getRepository('AppBundle:Company')->find($company_id); 

     $territory = new Territory(); 
     if(is_numeric($territory_name)) 
     { 
      $tempName = "ID"; 
     } 
     else 
     { 
      $tempName = "territory"; 
     } 

     if($territory = $this->getDoctrine()->getRepository('AppBundle:Territory')->findOneBy(array($tempName=>$territory_name))) 
     { 
      $territory_id = $territory->getID(); 
      $response->territory_id = $territory_id; 

      if($brand) 
      { 
       $is_enabled = 1; 
       $position = 1; 

       $brand_id = $brand->getID(); 

       $terr_brand_xrf = $this->getDoctrine()->getRepository('AppBundle:TerritoryBrandXref')->findOneBy(array("territory"=>$territory_id, "brand"=>$brand_id)); 

       if(!$terr_brand_xrf) 
       { 
        $terr_brand_xref = new TerritoryBrandXref($territory,$brand,$position); 
        $terr_brand_xref->setIsEnabled($is_enabled); 
        $terr_brand_xref->updateTimestamps(); 

        $em = $this->getDoctrine()->getEntityManager(); 
        $em->persist($terr_brand_xref); 
        $em->flush(); 
       } 
      } 
     } 
     else 
     { 

      $territory->setTerritory($territory_name); 
      $territory->setProject($project); 

      $em = $this->getDoctrine()->getEntityManager(); 
      $em->persist($territory); 
      $em->flush(); 
      $territory_id = $territory->getID(); 
      $response->territory_id = $territory_id; 

      if($brand) 
      { 
       $is_enabled = 1; 
       $position = 1; 

       $brand_id = $brand->getID(); 

       $response->brand_id= $brand_id; 

       $terr_brand_xref = new TerritoryBrandXref($territory,$brand,$position); 
       $terr_brand_xref->setIsEnabled($is_enabled); 
       $terr_brand_xref->updateTimestamps(); 

       $em = $this->getDoctrine()->getEntityManager(); 
       $em->persist($terr_brand_xref); 
       $em->flush(); 
      } 
     } 

     $controller_response = new Response(json_encode($response)); 
     $controller_response->headers->set('Content-Type', 'application/json; charset=utf-8'); 
     return $controller_response; 
    } 

} 

Это диаграмма, как я сейчас:

enter image description here

Как диаграмме условными внутри этой части кода:

if($territory = $this->getDoctrine()->getRepository('PDOneBundle:Territory')->findOneBy(array($tempName=>$territory_name))) 
{ 
... 
} else { 
... 
} 

Как мне вызвать внутренние методы?

+0

Пожалуйста, не просите нас решить проблему за вас. Покажите нам, как _you_ попытался решить проблему самостоятельно, а затем покажите нам _exactly_, каким был результат, и скажите, почему вы считаете, что это не сработало. См. «[Что вы пробовали?] (Http://whathaveyoutried.com/)» за отличную статью, которую вы действительно должны прочитать. –

+0

@JohnSaunders мой плохой, я забыл прикрепить изображение, я уже исправил его, посмотрите – ReynierPM

+0

Разрешение изображения слишком мало, чтобы его прочитать ... –

ответ

1

На самом деле то, что вы просите, не имеет смысла (см. Мой комментарий здесь: UML Sequence Diagram help needed). SD не предназначены для повторения алгоритмов в графических обозначениях. Код для этой цели намного лучше. Возможность показывать циклы и если условия внутри SD предназначены для использования только для представления высокого уровня системы.

В вашем случае вы должны сосредоточиться на определенных аспектах работы. Также как важный снимок. Создайте SD для использования в технологическом режиме с действительно последовательным потоком сообщений. Со временем создайте несколько SD, чтобы осветить различные аспекты. Но НЕ пытайтесь нажать весь алгоритм в одном SD.

+0

Я знаю, что есть некоторые другие диаграммы, такие как Диаграмма Деятельности, и, возможно, я могу показать больше на этом, но ссылается на это и на основе кода, как вы думаете, я пропускаю что-то еще? Если вы будете представлять код с помощью SD, как вы это делаете? Я имею в виду, можете ли вы проверить мою диаграмму и сказать мне, если вы, на вашей стороне, добавите что-то еще? – ReynierPM

+0

В основном это нормально. 2 вещи: 1) возврат должен быть пунктирной линией 2) нумерация в SD является необычной (излишней); он используется только в AD –

+0

Спасибо, можете ли вы взглянуть на [это] (http://stackoverflow.com/questions/29112784/wrap-conditional-into-a-function-or-not-represent-it-at- все-в-последовательности-диагра)? Является вокруг одной и той же темы, но я открыл новую, чтобы не захватить этот – ReynierPM

Смежные вопросы