DCTL Examples

Working with Use Case Flow of Events

<ForEach property="stepContainers">
   <Property property="name"/>
   <TableBlock>
      <FlowOfEventIterationBlock> <!-- Walk through each step (row) in a scenario -->
         <TableRow>
            <TableCell>
               <FlowOfEventIndent/> <!-- Apply proper indentation to the current step. You don't have to specify the level of indentation. It's automatically done for you -->
                              
               <Property property="index" foreColor="#848284" style="Table Contents"/> <!-- The step number. We set its foreColor to a lighter one to make it looks like how it looks in Visual Paradigm -->

               <Text style="Table Contents"> </Text>
               <ValueChecker property="type" operator="not equals" value="">
                  <ValueChecker property="type" operator="not equals" value="system">
                     <Property property="type" foreColor="#00B200" style="Table Contents"/> <!-- @type here refers to 'control labels' like if, then, elseif -->
                  </ValueChecker>
                  <ValueChecker property="type" operator="equals" value="system">
                     <Property property="type" foreColor="#CA6400" style="Table Contents"/> <!-- @type here refers to SYSTEM -->
                  </ValueChecker>
               </ValueChecker>
               <Property property="name" style="Table Contents"/> <!-- The content of step -->
            </TableCell>
         </TableRow>
      </FlowOfEventIterationBlock>
   </TableBlock>
</ForEach>

Working with Sub-Diagrams

<HasSubDiagramChecker>
   <!-- Name of all sub-diagrams -->
   <ForEachSubDiagram>
      <Property property="name" />
      <ParagraphBreak/>
   </ForEachSubDiagram >

   <!-- Name of all sub-BPD -->
   <ForEachSubDiagram diagramType="BusinessProcessDiagram">
      <Property property="name" />
      <ParagraphBreak/>
   </ForEachSubDiagram >
</HasSubDiagramChecker>

Working with References

<!-- Output the name of all Use Case reference -->
<HasValueChecker property="references">
   <ForEach property="references">
      <ValueChecker property="type" operator="equals" value="Model Element">
         <ModelElementProperty property="url">
            <ValueChecker property="modelType" operator="equals" value="UseCase">
               <Property property="name" />
            </ValueChecker>
         </ModelElementProperty>
      </ValueChecker>
   </ForEach>
</HasValueChecker>

<!-- Output the name of all model elements that are referencing the querying element as 'Model Element Reference' -->
<HasValueChecker property="modelElementReferencedBys">
   <ForEach property="modelElementReferencedBys">
      <Property property="name"/>
   </ForEach>
</HasValueChecker>

<!-- Output the name of all model elements that are referencing the querying element as 'Shape Reference' -->
<HasValueChecker property="viewReferencedBys">
   <ForEach property="viewReferencedBys">
      <Property property="name"/>  
   </ForEach>
</HasValueChecker>

Working with Stereotypes and Tagged Values

<!-- Output the name of all assigned stereotypes -->
<HasValueChecker property="stereotypes">
   <ForEach property="stereotypes" ignoreLastSeparator="true">
      <Text>&lt;&lt;</Text>
         <Property property="name" />
      <Text>&gt;&gt;</Text>
   </ForEach>
</HasValueChecker>
<ParagraphBreak/>

<!-- Output the name of tagged values added -->
<HasValueChecker property="taggedValues">
   <ModelElementProperty property="taggedValues">
      <HasChildElementChecker modelType="TaggedValue">
         <IterationBlock modelType="TaggedValue">
            <Property property="name" />
            <Text> - </Text>
            <Property property="value" />
         </IterationBlock>
      </HasChildElementChecker>
   </ModelElementProperty>
</HasValueChecker>

Working with Table Records of Entity

<!-- Check if an entity (i.e. DBTable) has record specified -->
<HasValueChecker property="records">
   <TableBlock>
      <!-- Create a header row that shows the columns' name in each cell -->
      <TableRow>
         <IterationBlock modelType = "DBColumn">
            <TableCell>
               <Property property="name" />
            </TableCell>
         </IterationBlock>
      </TableRow>
      <!-- Create one row for each record -->
      <ModelElementProperty property="records">
         <IterationBlock modelType = "EntityRecord">
            <TableRow>
               <IterationBlock modelType = "EntityRecordCell">
                  <TableCell>
                     <!-- Output the value directly if it's a general column -->
                     <Property property="value" />
                     <!-- Use the following method to output the value if it's a FK -->
                     <HasValueChecker property="value" flag="true">
                        <ModelElementProperty property="value">
                           <Property property="value" />
                        </ModelElementProperty>
                     </HasValueChecker>
                  </TableCell>
               </IterationBlock>
            </TableRow>
         </IterationBlock>
      </ModelElementProperty>  
   </TableBlock>
</HasValueChecker>

Working with Working Procedures of BPMN Task/Sub-Process

<!-- Check if a BPMN task/sub-process has working procedure entered -->
<HasValueChecker property="bpProcedures">

   <!-- Retrieve the procedure steps -->
   <ForEach property="bpProcedures">
      <Property property="name" style="@heading"/>
      <ParagraphBreak/>
   
      <!-- Retrieve the steps in the querying procedure set -->
      <ForEach property="bpProcedureSteps">
         <Property property="name"/>
         <ParagraphBreak/>
      </ForEach>
   </ForEach>   
</HasValueChecker>

Working with Action and Action's Type

<HasChildElementChecker flag="true">
   <TableBlock colWidths="1,2" tableWidth="14500" alignment="right">
      <TableRow>
         <TableCell leftBorderEnable="false" rightBorderEnable="false" color="230, 230, 230">
            <Text style="Column header 1">Element</Text>
         </TableCell>
         <TableCell leftBorderEnable="false" rightBorderEnable="false" color="230, 230, 230">
            <Text style="Column header 1">Description</Text>
         </TableCell>
      </TableRow>
   
      <IterationBlock modelType="ActivityAction">
         <!-- Sort the activities by name. -->
         <Sortings>
            <Sorting by="name"></Sorting>
         </Sortings>

         <ValueChecker property="modelType" operator="not equals" value="">
            <TableRow>
               <TableCell leftBorderEnable="false" rightBorderEnable="false">
                  <Property property="name" style="Table Contents"/>
               </TableCell>
               <TableCell leftBorderEnable="false" rightBorderEnable="false">
                  <ValueChecker property = "documentation" operator = "NOT EQUAL" value = "">
                     <Property property="documentation" style="Table Contents"/>
                     <ParagraphBreak/>
                     <ParagraphBreak/>
                  </ValueChecker>

                  <ModelElementProperty property="actionType">
               
                     <!-- Call Behavior Action -->
                     <ValueChecker property="modelType" operator="equals" value="CallBehaviorAction">
                        <Text style="Table Contents">Call action:</Text>
                        <HasValueChecker property="behavior" flag="true">
                           <ModelElementProperty property="behavior">
                              <Property property="name" style="TableContents" isBold="true"/>
                          </ModelElementProperty>
                        </HasValueChecker>
                        <HasValueChecker property="behavior" flag="false">
                           <Text style="Table Contents">&lt;Unspecified&gt;</Text>
                        </HasValueChecker>
                     </ValueChecker>
                 
                     <!-- Call Operation Action -->
                     <ValueChecker property="modelType" operator="equals" value="CallOperationAction">
                        <Text style="Table Contents">Call operation:</Text>
                        <HasValueChecker property="operation" flag="true">
                 
                           <ModelElementProperty property="operation">
                              <ParentModel>
                                 <Property property="name" style="Table Contents"  isBold="true"/>
                              </ParentModel>
                              <Text style="Table Contents">.</Text>
                              <Property property="name" style="Table Contents"  isBold="true"/>
                           </ModelElementProperty>
                        </HasValueChecker>
                        <HasValueChecker property="operation" flag="false">
                           <Text style="Table Contents">&lt;Unspecified&gt;</Text>
                        </HasValueChecker>
                     </ValueChecker>
                  </ModelElementProperty>
                
               </TableCell>
            </TableRow>
         </ValueChecker>
      </IterationBlock>
   </TableBlock>
</HasChildElementChecker>

Working with Chart Relations

<!-- Show the Chart Relations details -->
<HasValueChecker property="chartRelations">
   <Text style="@heading+">Chart Relations</Text>
   <ParagraphBreak/>

   <TableBlock tableStyle="Summaries" colWidths="20, 80">
      <TableRow>
         <TableCell>
            <Text>Code</Text>
            </TableCell>
            <TableCell>
            <Text>Begins</Text>
         </TableCell>
         <TableCell>
            <Text>Ends</Text>
         </TableCell>
      </TableRow>

      <ForEach property="chartRelations">
         <TableRow>
            <TableCell>
               <ModelElementProperty property="code">
                  <Property property="code"/>
               </ModelElementProperty>
            </TableCell>
            <TableCell>
               <ModelElementProperty property="from">
                  <Icon/>
                  <Property property="name"/>
               </ModelElementProperty>
            </TableCell>
            <TableCell>
               <ModelElementProperty property="to">
                  <Icon/>
                  <Property property="name"/>
               </ModelElementProperty>
            </TableCell>
         </TableRow>
      </ForEach>

   </TableBlock>
</HasValueChecker>

Working with Model Transitor

<!-- Check if the querying element has transition, either from/to -->
<HasValueChecker property="Traceability">
   <Text>Traceability detected.</Text>
   <ParagraphBreak/>
</HasValueChecker>
<ParagraphBreak/>

<!-- List out the Transit From elements -->
<Text isBold="true">Transit From:</Text>
<ParagraphBreak/>
<ForEach property="transitFrom">
   <Property property="name"/>
   <ParagraphBreak/>
</ForEach>
<ParagraphBreak/>

<!-- List out the Transit To elements -->
<Text isBold="true">Transit To:</Text>
<ParagraphBreak/>
<ForEach property="transitTo">
   <Property property="name"/>
   <ParagraphBreak/>
</ForEach>
<ParagraphBreak/>

<!-- List out the Transit From diagrams -->
<Text isBold="true">Transit From (Diagram):</Text>
<ParagraphBreak/>
<ForEachDiagram property="transitFrom">
   <Property property="name"/>
   <ParagraphBreak/>
</ForEachDiagram>
<ParagraphBreak/>

<!-- List out the Transit To diagrams -->
<Text isBold="true">Transit To (Diagram):</Text>
<ParagraphBreak/>
<ForEachDiagram property="transitTo">
   <Property property="name"/>
   <ParagraphBreak/>
</ForEachDiagram>
<ParagraphBreak/>

Working with InstanceSpecification in an Object Diagram

<!-- Print the description of instanceSpecifications and their classifiers, in a given object diagram-->
<DiagramBaseInitiationBlock>
    <IterationBlock modelType="InstanceSpecification">
        <!-- Name of instance (in ${instance_name} : ${classifier} format)-->
        <Property property="name"/>
        <Text> : </Text>
        <HasValueChecker property="classifiers">
            <ForEach property="classifiers">
                <Property property="name" />
            </ForEach>
        </HasValueChecker>

        <!-- Description of class-->
        <ParagraphBreak/>
        <Text isBold="true">Description of classifier: </Text>
        <HasValueChecker property="classifiers">
            <ForEach property="classifiers">
                <Property property="description" />
            </ForEach>
        </HasValueChecker>    

        <!-- Description of instance-->
        <ParagraphBreak/>
        <Text isBold="true">Description of instance: </Text>
        <Property property="description"/>
        <ParagraphBreak/>
        <ParagraphBreak/>
    </IterationBlock>
</DiagramBaseInitiationBlock>

Related Resources

The following resources may help you to learn more about the topic discussed in this page.

 
13. Using variables in Doc. Composer Table of Contents 15. Supported Diagram Types
 

Technical Support

Have technical issues or suggestions? Please contact Visual Paradigm Support Team.

Sales Support

Have questions related to registration, licensing or payment? Feel free to contact Visual Paradigm Sales Team.

Discussion Forum

Share your suggestions of opinions at VP Discussion Forum.