Skip to content

Commit

Permalink
feat: parsed connections from different UMLs between same nodes are a…
Browse files Browse the repository at this point in the history
…dded as distinct edges (to allow editing)
  • Loading branch information
tsypuk committed Jan 19, 2024
1 parent b162a0d commit db55741
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 3 deletions.
4 changes: 2 additions & 2 deletions multicloud_diagrams/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -716,7 +716,7 @@ def extract_messages_from_uml(self, sequence_diagram, actors, participants, laye
self.actors_to_nodes[data[1]],
action=[f'{action_id}: {data[2]}'],
layer_name=layer_name,
edge_style=edge_style, label_style=label_style, prefix=prefix_counter)
edge_style=edge_style, label_style=label_style, prefix=f'{layer_name}_{prefix_counter}')
except KeyError:
print('No such node')
if entity == 'actor':
Expand All @@ -728,7 +728,7 @@ def extract_messages_from_uml(self, sequence_diagram, actors, participants, laye
self.actors_to_nodes[data[1]],
action=[f'{action_id}: {data[2]}'],
layer_name=layer_name,
edge_style=edge_style, label_style=label_style, prefix=prefix_counter)
edge_style=edge_style, label_style=label_style, prefix=f'{layer_name}_{prefix_counter}')

def read_uml_mappings(self, yaml_name: str):
self.actors_to_nodes = {}
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<mxfile host="drawio-plugin" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36" modified="2024-01-19T20:10:20.942Z" version="20.5.3" etag="qxKskqLJAw_2JW9f-WZD" type="embed"><diagram id="diagram_1" name="AWS components"><mxGraphModel dx="1615" dy="1865" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="1"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" value="&lt;b&gt;Name&lt;/b&gt;: producer-lambda&lt;BR&gt;&lt;b&gt;ARN&lt;/b&gt;: arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda&lt;BR&gt;-----------&lt;BR&gt;&lt;b&gt;CodeSize&lt;/b&gt;: 1234&lt;BR&gt;&lt;b&gt;Handler&lt;/b&gt;: main&lt;BR&gt;&lt;b&gt;Layers&lt;/b&gt;: 0&lt;BR&gt;&lt;b&gt;Memory&lt;/b&gt;: 128&lt;BR&gt;&lt;b&gt;PackageType&lt;/b&gt;: Zip&lt;BR&gt;&lt;b&gt;Runtime&lt;/b&gt;: go1.x&lt;BR&gt;&lt;b&gt;Timeout&lt;/b&gt;: 30&lt;BR&gt;&lt;b&gt;TracingConfig&lt;/b&gt;: {'Mode': 'Active'}&lt;BR&gt;&lt;b&gt;Version&lt;/b&gt;: $LATEST" style="verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;align=left;pointerEvents=1;shape=mxgraph.aws3.lambda_function;prIcon=server;fillColor=#F58534;gradientColor=none;html=1;" parent="1" vertex="1"><mxGeometry x="-40" y="-202" width="69" height="72" as="geometry"/></mxCell><mxCell id="vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:consumer-lambda" value="&lt;b&gt;Name&lt;/b&gt;: consumer-lambda&lt;BR&gt;&lt;b&gt;ARN&lt;/b&gt;: arn:aws:lambda:eu-west-1:123456789012:function:consumer-lambda" style="verticalLabelPosition=bottom;verticalAlign=top;aspect=fixed;align=left;pointerEvents=1;shape=mxgraph.aws3.lambda_function;prIcon=server;fillColor=#F58534;gradientColor=none;html=1;" parent="1" vertex="1"><mxGeometry x="1470" y="-172" width="69" height="72" as="geometry"/></mxCell><mxCell id="vertex:dynamo:arn:aws:dynamodb:eu-west-1:123456789012:table/table1" value="&lt;b&gt;Name&lt;/b&gt;: table1&lt;BR&gt;&lt;b&gt;ARN&lt;/b&gt;: arn:aws:dynamodb:eu-west-1:123456789012:table/table1" style="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=left;html=1;shape=mxgraph.aws3.dynamo_db;fillColor=#2E73B8;gradientColor=none;" parent="1" vertex="1"><mxGeometry x="1470" y="80" width="72" height="81" as="geometry"/></mxCell><mxCell id="vertex:sns:arn:aws:sns:eu-west-1:123456789012:internal.fifo" value="&lt;b&gt;Name&lt;/b&gt;: internal&lt;BR&gt;&lt;b&gt;ARN&lt;/b&gt;: arn:aws:sns:eu-west-1:123456789012:internal.fifo&lt;BR&gt;-----------&lt;BR&gt;&lt;b&gt;Owner&lt;/b&gt;: 123456789&lt;BR&gt;&lt;b&gt;SubscriptionsConfirmed&lt;/b&gt;: 3&lt;BR&gt;&lt;b&gt;SubscriptionsPending&lt;/b&gt;: 0" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#FF4F8B;gradientDirection=north;fillColor=#BC1356;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=left;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.sns;" parent="1" vertex="1"><mxGeometry x="530" y="-470" width="78" height="78" as="geometry"/></mxCell><mxCell id="vertex:sqs:arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events.fifo" value="&lt;b&gt;Name&lt;/b&gt;: events&lt;BR&gt;&lt;b&gt;ARN&lt;/b&gt;: arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events.fifo&lt;BR&gt;-----------&lt;BR&gt;&lt;b&gt;DelaySeconds&lt;/b&gt;: 0&lt;BR&gt;&lt;b&gt;FifoQueue&lt;/b&gt;: TRUE&lt;BR&gt;&lt;b&gt;ReceiveMessageWaitTimeSeconds&lt;/b&gt;: 0&lt;BR&gt;&lt;b&gt;SqsManagedSseEnabled&lt;/b&gt;: false&lt;BR&gt;&lt;b&gt;VisibilityTimeout&lt;/b&gt;: 30" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#FF4F8B;gradientDirection=north;fillColor=#BC1356;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=left;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.sqs;" parent="1" vertex="1"><mxGeometry x="1060" y="-80" width="78" height="78" as="geometry"/></mxCell><mxCell id="vertex:sqs:arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events2.fifo" value="&lt;b&gt;Name&lt;/b&gt;: events2&lt;BR&gt;&lt;b&gt;ARN&lt;/b&gt;: arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events2.fifo" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=#FF4F8B;gradientDirection=north;fillColor=#BC1356;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=left;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.sqs;" parent="1" vertex="1"><mxGeometry x="1060" y="-589" width="78" height="78" as="geometry"/></mxCell><mxCell id="vertex:s3:arn:aws:s3:::bucket_name/key_name" value="&lt;b&gt;Name&lt;/b&gt;: key_name&lt;BR&gt;&lt;b&gt;ARN&lt;/b&gt;: arn:aws:s3:::bucket_name/key_name" style="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=left;html=1;shape=mxgraph.aws3.bucket_with_objects;fillColor=#E05243;gradientColor=none;" parent="1" vertex="1"><mxGeometry x="550" y="60" width="78" height="78" as="geometry"/></mxCell><mxCell id="edge:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda:to:sns:arn:aws:sns:eu-west-1:123456789012:internal.fifo" style="jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="1" source="vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" target="vertex:sns:arn:aws:sns:eu-west-1:123456789012:internal.fifo" edge="2"><mxGeometry as="geometry"/></mxCell><mxCell id="edge:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda:to:s3:arn:aws:s3:::bucket_name/key_name" style="jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="1" source="vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" target="vertex:s3:arn:aws:s3:::bucket_name/key_name" edge="2"><mxGeometry as="geometry"/></mxCell><mxCell id="edge:sns:arn:aws:sns:eu-west-1:123456789012:internal.fifo:to:sqs:arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events.fifo" style="jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="1" source="vertex:sns:arn:aws:sns:eu-west-1:123456789012:internal.fifo" target="vertex:sqs:arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events.fifo" edge="2"><mxGeometry as="geometry"/></mxCell><mxCell id="edge:sns:arn:aws:sns:eu-west-1:123456789012:internal.fifo:to:sqs:arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events2.fifo" style="jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="1" source="vertex:sns:arn:aws:sns:eu-west-1:123456789012:internal.fifo" target="vertex:sqs:arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events2.fifo" edge="2"><mxGeometry as="geometry"/></mxCell><mxCell id="edge:sqs:arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events.fifo:to:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:consumer-lambda" style="jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="1" source="vertex:sqs:arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events.fifo" target="vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:consumer-lambda" edge="2"><mxGeometry as="geometry"/></mxCell><mxCell id="edge:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:consumer-lambda:to:dynamo:arn:aws:dynamodb:eu-west-1:123456789012:table/table1" style="jettySize=auto;html=1;startArrow=none;endArrow=none;" parent="1" source="vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:consumer-lambda" target="vertex:dynamo:arn:aws:dynamodb:eu-west-1:123456789012:table/table1" edge="2"><mxGeometry as="geometry"/></mxCell><mxCell id="2" value="same_entity_diff_elements" parent="0" visible="0"/><mxCell id="edge_same_entity_diff_elements_1:actor:5991ce42:to:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" style="jettySize=auto;html=1;orthogonalLoop=1;edgeStyle=orthogonalEdgeStyle;curved=1;startArrow=oval;endArrow=classicThin;dashed=1;strokeColor=#FF3333;strokeWidth=1;fontSize=22;" parent="2" source="vertex:actor:5991ce42" target="vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" edge="2"><mxGeometry as="geometry"/></mxCell><mxCell id="label_same_entity_diff_elements_1:actor:5991ce42:to:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" value="1: Put new file into S3 bucket" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;fontColor=#FF3333;fontStyle=0;fontSize=14;" parent="edge_same_entity_diff_elements_1:actor:5991ce42:to:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" vertex="1" connectable="0"><mxGeometry relative="1" as="geometry"><mxPoint as="offset"/></mxGeometry></mxCell><mxCell id="edge_same_entity_diff_elements_2:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda:to:s3:arn:aws:s3:::bucket_name/key_name" style="jettySize=auto;html=1;orthogonalLoop=1;edgeStyle=orthogonalEdgeStyle;curved=1;startArrow=oval;endArrow=classicThin;dashed=1;strokeColor=#FF3333;strokeWidth=1;fontSize=22;" parent="2" source="vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" target="vertex:s3:arn:aws:s3:::bucket_name/key_name" edge="2"><mxGeometry as="geometry"/></mxCell><mxCell id="label_same_entity_diff_elements_2:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda:to:s3:arn:aws:s3:::bucket_name/key_name" value="2: Put new file into S3 bucket" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;fontColor=#FF3333;fontStyle=0;fontSize=14;" parent="edge_same_entity_diff_elements_2:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda:to:s3:arn:aws:s3:::bucket_name/key_name" vertex="1" connectable="0"><mxGeometry relative="1" as="geometry"><mxPoint as="offset"/></mxGeometry></mxCell><mxCell id="edge_same_entity_diff_elements_3:actor:5991ce42:to:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" style="jettySize=auto;html=1;orthogonalLoop=1;edgeStyle=orthogonalEdgeStyle;curved=1;startArrow=oval;endArrow=classicThin;dashed=1;strokeColor=#FF3333;strokeWidth=1;fontSize=22;" parent="2" source="vertex:actor:5991ce42" target="vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" edge="2"><mxGeometry as="geometry"/></mxCell><mxCell id="label_same_entity_diff_elements_3:actor:5991ce42:to:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" value="3: Put new file into S3 bucket" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;fontColor=#FF3333;fontStyle=0;fontSize=14;" parent="edge_same_entity_diff_elements_3:actor:5991ce42:to:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" vertex="1" connectable="0"><mxGeometry relative="1" as="geometry"><mxPoint as="offset"/></mxGeometry></mxCell><mxCell id="edge_same_entity_diff_elements_4:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda:to:sns:arn:aws:sns:eu-west-1:123456789012:internal.fifo" style="jettySize=auto;html=1;orthogonalLoop=1;edgeStyle=orthogonalEdgeStyle;curved=1;startArrow=oval;endArrow=classicThin;dashed=1;strokeColor=#FF3333;strokeWidth=1;fontSize=22;" parent="2" source="vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" target="vertex:sns:arn:aws:sns:eu-west-1:123456789012:internal.fifo" edge="2"><mxGeometry as="geometry"/></mxCell><mxCell id="label_same_entity_diff_elements_4:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda:to:sns:arn:aws:sns:eu-west-1:123456789012:internal.fifo" value="4: Send Event to SNS that file processing is finished" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;fontColor=#FF3333;fontStyle=0;fontSize=14;" parent="edge_same_entity_diff_elements_4:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda:to:sns:arn:aws:sns:eu-west-1:123456789012:internal.fifo" vertex="1" connectable="0"><mxGeometry relative="1" as="geometry"><mxPoint as="offset"/></mxGeometry></mxCell><mxCell id="edge_same_entity_diff_elements_5:sns:arn:aws:sns:eu-west-1:123456789012:internal.fifo:to:sqs:arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events.fifo" style="jettySize=auto;html=1;orthogonalLoop=1;edgeStyle=orthogonalEdgeStyle;curved=1;startArrow=oval;endArrow=classicThin;dashed=1;strokeColor=#FF3333;strokeWidth=1;fontSize=22;" parent="2" source="vertex:sns:arn:aws:sns:eu-west-1:123456789012:internal.fifo" target="vertex:sqs:arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events.fifo" edge="2"><mxGeometry as="geometry"/></mxCell><mxCell id="label_same_entity_diff_elements_5:sns:arn:aws:sns:eu-west-1:123456789012:internal.fifo:to:sqs:arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events.fifo" value="5: Fanout Event to SQS" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;fontColor=#FF3333;fontStyle=0;fontSize=14;" parent="edge_same_entity_diff_elements_5:sns:arn:aws:sns:eu-west-1:123456789012:internal.fifo:to:sqs:arn:aws:sqs:eu-west-1:123456789012:int-eu-live-events.fifo" vertex="1" connectable="0"><mxGeometry relative="1" as="geometry"><mxPoint as="offset"/></mxGeometry></mxCell><mxCell id="3" value="actors" parent="0"/><mxCell id="vertex:actor:5991ce42" value="&lt;b&gt;Name&lt;/b&gt;: Donald" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="3" vertex="1"><mxGeometry x="-560" y="-400" width="30" height="60" as="geometry"/></mxCell><mxCell id="4" value="same_entity_diff_elements2" parent="0"/><mxCell id="edge_same_entity_diff_elements2_1:actor:5991ce42:to:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" style="jettySize=auto;html=1;orthogonalLoop=1;edgeStyle=orthogonalEdgeStyle;curved=1;startArrow=oval;endArrow=classicThin;dashed=1;strokeColor=#0A0CA4;strokeWidth=1;fontSize=22;" parent="4" source="vertex:actor:5991ce42" target="vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" edge="2"><mxGeometry as="geometry"/></mxCell><mxCell id="label_same_entity_diff_elements2_1:actor:5991ce42:to:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" value="1: Put another file into S3 bucket" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;fontColor=#0A0CA4;fontStyle=0;fontSize=14;" parent="edge_same_entity_diff_elements2_1:actor:5991ce42:to:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" vertex="1" connectable="0"><mxGeometry relative="1" as="geometry"><mxPoint as="offset"/></mxGeometry></mxCell><mxCell id="edge_same_entity_diff_elements2_2:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda:to:s3:arn:aws:s3:::bucket_name/key_name" style="jettySize=auto;html=1;orthogonalLoop=1;edgeStyle=orthogonalEdgeStyle;curved=1;startArrow=oval;endArrow=classicThin;dashed=1;strokeColor=#0A0CA4;strokeWidth=1;fontSize=22;" parent="4" source="vertex:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda" target="vertex:s3:arn:aws:s3:::bucket_name/key_name" edge="2"><mxGeometry as="geometry"/></mxCell><mxCell id="label_same_entity_diff_elements2_2:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda:to:s3:arn:aws:s3:::bucket_name/key_name" value="2: Put another file into S3 bucket" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=#FFF2CC;fontColor=#0A0CA4;fontStyle=0;fontSize=14;" parent="edge_same_entity_diff_elements2_2:lambda_function:arn:aws:lambda:eu-west-1:123456789012:function:producer-lambda:to:s3:arn:aws:s3:::bucket_name/key_name" vertex="1" connectable="0"><mxGeometry relative="1" as="geometry"><mxPoint as="offset"/></mxGeometry></mxCell></root></mxGraphModel></diagram></mxfile>
56 changes: 56 additions & 0 deletions samples/samples/aws_plant_uml_2_entities_2umls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
from multicloud_diagrams import MultiCloudDiagrams
from samples.samples.aws_service_end_2_end import prepare_end2end


def main():
mcd = MultiCloudDiagrams()

prefix = 'prod'
prev_file = f'../output/output.{prefix}_plantuml_2_entities_2uml.end2end.drawio'

mcd.read_coords_from_file(prev_file)
prepare_end2end(mcd)

mcd.read_uml_mappings('same_entity_diff_elements.yaml')
label_style = {
'labelBackgroundColor': 'none',
'fontColor': '#FF3333',
'fontStyle': 0,
'fontSize': 14
}
edge_style = {
'orthogonalLoop': '1',
'edgeStyle': 'orthogonalEdgeStyle',
'curved': '1',
'startArrow': 'oval',
'endArrow': 'classicThin',
'dashed': '1',
'strokeColor': '#FF3333',
'strokeWidth': '1',
'fontSize': '22'
}
label_style2 = {
'labelBackgroundColor': 'none',
'fontColor': '#0A0CA4',
'fontStyle': 0,
'fontSize': 14
}
edge_style2 = {
'orthogonalLoop': '1',
'edgeStyle': 'orthogonalEdgeStyle',
'curved': '1',
'startArrow': 'oval',
'endArrow': 'classicThin',
'dashed': '1',
'strokeColor': '#0A0CA4',
'strokeWidth': '1',
'fontSize': '22'
}
mcd.read_uml_from_file('same_entity_diff_elements.plantuml', edge_style=edge_style, label_style=label_style)
mcd.read_uml_from_file('same_entity_diff_elements2.plantuml', edge_style=edge_style2, label_style=label_style2)

mcd.export_to_file(prev_file)


if __name__ == "__main__":
main()
9 changes: 9 additions & 0 deletions samples/samples/same_entity_diff_elements2.plantuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
@startuml
actor Donald
participant stage1
participant S3Bucket

Donald->>stage1: Put another file into S3 bucket
stage1->>S3Bucket: Put another file into S3 bucket
note left: Single line note on the left
@enduml

0 comments on commit db55741

Please sign in to comment.