arcadia 7; project alarm_response "Alarm response" { description "A complete small OA/SA source-authoring example. Numerical annotations are descriptive."; oa_actor plant_operator "Plant operator" {} oa_entity maintenance "Maintenance team" {} oa_activity manage_alarm "Manage a pressure alarm" { oa_activity detect_alarm "Detect alarm" {} // Assessing the alarm is work decomposition, independently allocated below. oa_activity assess_alarm "Assess alarm" {} } oa_capability safe_response "Respond safely" {} oa_exchange_item alarm_report "Alarm report" { mechanism Flow; oa_data_field reported_pressure "Reported pressure" { type_ref Real; unit "kPa"; } } allocation operator_detects "Operator detects" { source @plant_operator; target @detect_alarm; } allocation team_assesses "Team assesses" { source @maintenance; target @assess_alarm; } interaction alarm_message "Pressure alarm report" { source @detect_alarm; target @assess_alarm; items [@alarm_report]; } capability_involvement assessment_supports_response "Assessment supports safe response" { source @assess_alarm; target @safe_response; } oa_process triage "Alarm triage" { steps [@detect_once, @assess_once]; oa_occurrence detect_once "Detect this alarm" { body { Action { action @detect_alarm; lifeline none; }; }; } oa_occurrence assess_once "Assess this alarm" { body { Action { action @assess_alarm; lifeline none; }; }; } } sequence_link assessment_after_detection "Assess after detecting" { source @detect_once; target @assess_once; } chain_involvement triage_supports_response "Triage supports safe response" { source @triage; target @safe_response; } oa_scenario notification "Alarm notification" { viewpoint OperationalActivity; context @safe_response; steps [@notify_once]; oa_lifeline detector_line "Detector" { represented @detect_alarm; } oa_lifeline assessor_line "Assessor" { represented @assess_alarm; } oa_occurrence notify_once "Report this pressure" { body { Exchange { exchange @alarm_message; sender @detector_line; receiver @assessor_line; message_kind Asynchronous; reply_to none; values [{ field @reported_pressure; path []; expression "420"; }]; }; }; } } sa_system alarm_console "Alarm console" { sa_state_machine console_status "Console status" { sa_region console_region "Main region" { sa_initial console_start "Start" {} sa_state console_ready "Ready" {} sa_state console_alerting "Alerting" {} } } } sa_function classify_alarm "Classify alarm" {} sa_functional_chain classification_flow "Alarm classification" { steps [@classify_once]; sa_occurrence classify_once "Classify this alarm" { body { Action { action @classify_alarm; lifeline none; }; }; } } allocation console_classifies "Console classifies" { source @alarm_console; target @classify_alarm; } sa_event alarm_received "Alarm received" {} state_transition initialize_console "Initialize" { source @console_start; target @console_ready; } state_transition display_alarm "Display alarm" { source @console_ready; target @console_alerting; triggers [@alarm_received]; } trace assessment_refinement "Alarm classification refines assessment" { oa @assess_alarm; sa @classify_alarm; baseline { oa { name "Assess alarm"; description ""; }; sa { name "Classify alarm"; description ""; }; }; } artifact response_procedure "Response procedure" { owner @assess_alarm; uri "procedures/alarm-response.md"; revision "review-1"; } diagram response_view "Operational work" { projection FunctionalDataflow; } node detector_card { diagram @response_view; element @detect_alarm; position { x 40; y 40; }; } node assessor_card { diagram @response_view; element @assess_alarm; position { x 400; y 40; }; } }