ฉันจะแสดงการกระทำที่ซ้อนกันในแผนภาพกิจกรรม UML ได้อย่างไร


16

คำถามนี้จะคล้ายกับคนนี้แต่คำตอบไม่ตรงกับความต้องการของฉัน มันมุ่งเน้นไปที่เครื่องมือ UML เฉพาะ (Papyrus) ในขณะที่คำถามของฉันเป็นเรื่องทั่วไปเกี่ยวกับ UML

ฉันต้องการที่จะเป็นตัวแทนของการกระทำที่ซ้อนกันในแผนภาพกิจกรรมแต่ฉันไม่ทราบว่าวิธีการทำมันคืออะไร แนวคิดคือมีการกระทำในขอบเขตเดียวกันมากกว่าการกระทำอื่น แต่มีความซับซ้อนในการดำเนินการ ฉันต้องการแสดงรายละเอียดเพิ่มเติมเกี่ยวกับการดำเนินการของมันในขณะที่ยังสามารถแสดงการกระทำนี้ในระดับเดียวกันกว่าที่อื่น ๆ

ในตัวอย่างด้านล่างซึ่งเป็นแผนภาพกิจกรรมที่แสดงกิจกรรม " กลับบ้าน " บางอย่างการกระทำที่ซ้อนกันอยู่ในการPet the catดำเนินการ โปรดทราบว่ามีข้อผิดพลาดที่อาจเกิดขึ้นอีกในแผนภาพนี้ดูข้อผิดพลาดในตอนท้ายของคำถาม

ในที่สุดก็กลับบ้าน

ฉันได้ใช้โหนดที่มีโครงสร้าง แต่ฉันไม่แน่ใจว่ามันเป็นวิธีที่ถูกต้องดังนั้นคำถาม ในสถานะชาร์ตเทียบเท่าจะเป็นคอมโพสิต แต่ฉันก็ไม่สามารถหาอะไรเกี่ยวกับคอมโพสิตแอ็คชั่น เกี่ยวกับโหนดที่มีโครงสร้างหลังจากอ่านเอกสารสองสามฉบับเกี่ยวกับมันฉันยังไม่เข้าใจว่ามันควรจะใช้อย่างไรดังนั้นฉันอาจผิดทั้งหมดกับแผนภาพนี้

ฉันรู้ด้วยว่ามีความเป็นไปได้ที่จะอ้างถึงกิจกรรมย่อยอื่นที่มีสัญลักษณ์ตรีศูลตามภาพด้านล่าง แต่มันไม่ตรงกับความต้องการของฉันเพราะฉันต้องการข้อมูลทั้งหมดในแผนภาพเดียวกัน (ดังนั้นฉันจึงสามารถพิมพ์ได้ มันโดยไม่สูญเสียข้อมูลใด ๆ ):

ตรีศูลกิจกรรมย่อย

ดังนั้นวิธีมาตรฐานในการเป็นตัวแทนของการกระทำที่ซ้อนกันคืออะไร? ตามมาตรฐานฉันหมายถึง UML ที่ถูกต้องที่เห็นได้ทั่วไปและหากเป็นไปได้สามารถทำได้ในเครื่องมือออกแบบ UML ส่วนใหญ่

errata ที่ไม่เกี่ยวข้อง: มีอีกอย่างหนึ่งที่ผิดในแผนภาพของฉันลูกศรที่เข้ามาสู่การกระทำแบบเดียวกัน ( Scratch behind the ears) ควรไปที่โหนดที่รวมกันก่อนที่จะเข้าสู่การกระทำ ดูความคิดเห็นด้านล่างรวมทั้งคำพูดของ JOT


คุณไม่ได้ถามเกี่ยวกับเรื่องนี้ แต่ฉันต้องการที่จะชี้ให้เห็นว่าการกระทำ "เกาหลังหู" ไม่สามารถดำเนินการได้ ไม่มีใครรู้ว่าทำไมสิ่งนี้ถึงเป็นจริง
จิมลิตร

ดีฉันไม่รู้ แต่ฉันหวังว่ามันเป็นเพียงอารมณ์ของแมวเพราะแผนภาพในที่สุดฉันก็มอบให้เจ้านายของฉันดูเหมือนเป็นอย่างนี้: /
ทิม

เหตุผลก็คือต้องมีการมอบโทเค็นจากทั้งสองเส้นทางให้กับการดำเนินการเพื่อเริ่มต้นซึ่งเป็นไปไม่ได้เนื่องจากเป็นสิ่งที่มาจากสิ่งอื่นที่จะไม่เกิดขึ้น
จิมลิตร

@ JimL คุณหมายถึงว่าทั้งสองเงื่อนไขต้องเป็นจริงเพื่อเข้าสู่สถานะนี้หรือไม่? ถ้าอย่างนั้นจะเป็นวิธีการแสดงสิ่งที่ฉันตั้งใจจะแสดง การรวมโหนดเพชรก่อนทางเข้ารัฐ?
ทิม

เรากำลังพูดถึงการกระทำไม่ใช่รัฐ แต่ใช่จำเป็นต้องมีการผสานเพื่อแก้ไขปัญหานี้
Jim L.

คำตอบ:


23

ทั้งสองเป็น "มาตรฐาน" ภาพแรกตามข้อกำหนด UML คือ

โหนดกิจกรรมที่มีโครงสร้าง

StructuredActivityNode เป็นแอ็คชันที่เป็นกลุ่มกิจกรรม (ดูข้อย่อย 15.6) และพฤติกรรมที่ระบุโดย ActivityNodes และ ActivityEdges ซึ่งแตกต่างจากประเภทอื่น ๆ ของ ActivityGroup, StructuredActivityNode เป็นเจ้าของ ActivityNodes และ ActivityEdges มันมีอยู่และดังนั้นโหนดหรือขอบสามารถมีได้โดยตรงในหนึ่ง StructuredActivityNode StructuredActivityNodes อาจซ้อนกัน (เช่น StructuredActivityNode ในฐานะการกระทำก็เป็น ActivityNode) เช่นกันดังนั้นขอบหรือโหนดอาจมีอยู่ในทางอ้อมในจำนวน StructuredActivityNodes ทางอ้อม

กลุ่มกิจกรรม

ActivityGoups เป็นโครงสร้างการจัดกลุ่มสำหรับ ActivityNodes และ ActivityEdges โหนดและขอบอาจอยู่ในกลุ่มมากกว่าหนึ่งกลุ่ม ประโยคย่อยนี้อธิบาย ActivityGroups สองประเภทที่เป็นรูปธรรม, ActivityPartitions และ InterruptibleActivityRegions StructuredActivityNodes เป็น ActivityGroup ชนิดที่สาม แต่ยังเป็น Actions และถูกกล่าวถึงในส่วนย่อย 16.11 ของข้อ 16 ใน Actions

ภาพที่สองคือ

การกระทำการอุทธรณ์

InvocationAction เป็นการกระทำที่ส่งผลโดยตรงหรือโดยอ้อมในการร้องขอพฤติกรรม (ดูข้อย่อย 13.2) InvocationActions รวมถึง CallActions สำหรับการเรียกการดำเนินงานหรือพฤติกรรมและสำหรับการเริ่มต้นพฤติกรรมที่มีอินสแตนซ์ก่อนหน้านี้ InvocationActions ประเภทเพิ่มเติมอนุญาตให้มีการส่งสัญญาณเป้าหมายและวัตถุอื่น ๆ และความสามารถในการกระจายสัญญาณไปยังผู้รับที่มีอยู่

ความแตกต่างที่สำคัญระหว่างทั้งสองกรณีคือการนำกลับมาใช้ใหม่ ในขณะที่อยู่ในสถานที่แรกที่คุณมีความซับซ้อนในที่เดียว (ของคุณPet the cat) ที่สองคือเมื่อคุณ (อีกครั้ง) ใช้การกระทำบางอย่างที่หลายแห่ง อย่างไรก็ตามฉันมักจะใช้ตัวแปรการเรียกใช้แม้ว่าจะใช้เพียงครั้งเดียวเท่านั้น ที่นี่ฉันเพิ่มคอมโพสิตไดอะแกรม (ซึ่งใน EA เปิดใน dbl คลิก) เพื่อแสดงรายละเอียดของการกระทำตาม โฟลว์หลักแสดงเฉพาะภาพรวมและหากจำเป็นต้องใช้รายละเอียดมันเป็นเพียง dbl-click

ตอนนี้การสร้างแผนภาพคอมโพสิตใน EA นั้นแตกต่างกัน (อีกครั้ง) คุณต้องสร้างโฆษณาตามระดับแพ็คเกจและจากนั้นลากไปยังองค์ประกอบที่เรียกใช้ ตอนนี้เมื่อคุณคลิกที่นี่ไดอะแกรมที่ฝังตัวจะเปิดขึ้น


ขอบคุณสำหรับคำตอบ. คุณช่วยให้รายละเอียดเพิ่มเติมเกี่ยวกับเมื่อคุณใช้ความเป็นไปได้ที่? ฉันพบว่าข้อมูลจำเพาะ UML ค่อนข้างอ่านยากด้านผู้ใช้
ทิม

ไม่มีการบรรยายก่อนนอน :-) ฉันจะพยายามเพิ่มคำอธิบายเพิ่มเติม
qwerty_so

ฉันทำการอัปเดตโดยมีคำพูดเกี่ยวกับ EAUI อื่น
qwerty_so
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.