Barbados Crisis Management System

Preamble

Barbados Crisis Management System (BCMS -> PDF) is a software case study, which is implemented in State Chart XML and PauWare engine.

Resources

Note: there is another (simplified and thus more compact) BCMS SCXML document (.xml file). This alternative SCXML specification does not comply with the prior Java SE application. Indeed, because of PlantUML limitations (the PauWare view add-on tool reuses PlantUML), the initial BCMS SCXML document (.xml file) must be slightly adapted to the way PlantUML is capable of displaying statecharts.

Installation requirements

BCMS as Web Enterprise Application

Specification

Full-size SVG image may be found at the end of this Web page.

Barbados Crisis Management System

Full-size SVG image

BCMS Step_3_Coordination allow: timeout/BCMS.record_timeout_reason(Long,String) exit/ BCMS.to_be_killed Completion_of_objectives All_police_vehicles_dispatched invariant: [BCMS.PV_dispatched_equal_to_PV_required] Init entry/ BCMS.clear FSC_connected PSC_connected Crisis_details_exchange entry/ BCMS.to_be_killed entry/ BCMS.to_be_set(Long) Step_4_Dispatching All_fire_trucks_dispatched invariant: [BCMS.FT_dispatched_equal_to_FT_required] End_of_crisis Step_5_Arrival allow: police vehicle breakdown/BCMS.police_vehicles_dispatched_remove(String) allow: fire truck breakdown/BCMS.fire_trucks_dispatched_remove(String) allow: crisis is less severe/BCMS.fire_truck_recalled allow: crisis is less severe/BCMS.police_vehicle_recalled allow: crisis is less severe/^BCMS.enough_fire_trucks_arrived allow: crisis is less severe/^BCMS.enough_police_vehicles_arrived Police_vehicles_arrival End_of_police_vehicles_arrival Police_vehicles_arriving All_police_vehicles_arrived invariant: [BCMS.PV_arrived_greater_or_equal_to_PV_dispatched] police_vehicle_arrived[BCMS.police_vehicle_arrived_less_than_police_vehicle_dispatched]/BCMS.police_vehicles_arrived_add(String);^BCMS.enough_police_vehicles_arrived enough_police_vehicles_arrived[BCMS.police_vehicle_arrived_greater_than_or_equal_to_police_vehicle_dispatched_and_not_in_All_fire_trucks_arrived] enough_police_vehicles_arrived[BCMS.police_vehicle_arrived_greater_than_or_equal_to_police_vehicle_dispatched_and_in_All_fire_trucks_arrived] Fire_trucks_arrival End_of_fire_trucks_arrival Fire_trucks_arriving All_fire_trucks_arrived invariant: [BCMS.FT_arrived_greater_or_equal_to_FT_dispatched] fire_truck_arrived[BCMS.fire_truck_arrived_less_than_fire_truck_dispatched]/BCMS.fire_trucks_arrived_add(String);^BCMS.enough_fire_trucks_arrived enough_fire_trucks_arrived[BCMS.fire_truck_arrived_greater_than_or_equal_to_fire_truck_dispatched_and_not_in_All_police_vehicles_arrived] enough_fire_trucks_arrived[BCMS.fire_truck_arrived_greater_than_or_equal_to_fire_truck_dispatched_and_in_All_police_vehicles_arrived] Number_of_fire_truck_defined Route_plan_development Number_of_police_vehicle_defined Steps_33a1_33a2_Negotiation Route_for_police_vehicles_development Route_for_police_vehicles_to_be_proposed End_of_route_for_police_vehicles_development Route_for_police_vehicles_fixed Route_for_police_vehicles_approved FSC_agrees_about_police_vehicle_route[BCMS.not_in_Route_for_fire_trucks_approved] FSC_agrees_about_police_vehicle_route[BCMS.in_Route_for_fire_trucks_approved] route_for_police_vehicles FSC_disagrees_about_police_vehicle_route Route_for_fire_trucks_development Route_for_fire_trucks_to_be_proposed Route_for_fire_trucks_approved Route_for_fire_trucks_fixed End_of_route_for_fire_trucks_development FSC_agrees_about_fire_truck_route[BCMS.not_in_Route_for_police_vehicles_approved] FSC_agrees_about_fire_truck_route[BCMS.in_Route_for_police_vehicles_approved] route_for_fire_trucks FSC_disagrees_about_fire_truck_route route_for_fire_trucks/^BCMS.route_for_fires_trucks route_for_police_vehicles/^BCMS.route_for_police_vehicles state_fire_truck_number/BCMS.set_number_of_fire_truck_required(Integer) state_police_vehicle_number/BCMS.set_number_of_police_vehicle_required(Integer) FSC_connection_request PSC_connection_request FSC_connection_request PSC_connection_request state_police_vehicle_number/BCMS.set_number_of_police_vehicle_required(Integer) state_fire_truck_number/BCMS.set_number_of_fire_truck_required(Integer) no_more_route_left fire_truck_dispatched[BCMS.fire_truck_dispatched_less_than_number_of_fire_truck_required]/BCMS.fire_trucks_dispatched_add(String);^BCMS.enough_fire_trucks_dispatched police_vehicle_dispatched[BCMS.police_vehicle_dispatched_less_than_number_of_police_vehicle_required]/BCMS.police_vehicles_dispatched_add(String);^BCMS.enough_police_vehicles_dispatched police_vehicle_dispatched[BCMS.police_vehicle_dispatched_less_than_number_of_police_vehicle_required]/BCMS.police_vehicles_dispatched_add(String);^BCMS.enough_police_vehicles_dispatched enough_fire_trucks_dispatched[BCMS.fire_truck_dispatched_greater_than_or_equal_to_number_of_fire_truck_required] enough_police_vehicles_dispatched[BCMS.police_vehicle_dispatched_greater_than_or_equal_to_number_of_police_vehicle_required] fire_truck_dispatched[BCMS.fire_truck_dispatched_less_than_number_of_fire_truck_required]/BCMS.fire_trucks_dispatched_add(String);^BCMS.enough_fire_trucks_dispatched enough_police_vehicles_dispatched[BCMS.police_vehicle_dispatched_greater_than_or_equal_to_number_of_police_vehicle_required] crisis_is_more_severe police_vehicle_blocked/BCMS.police_vehicles_dispatched_remove(String) fire_truck_blocked/BCMS.fire_trucks_dispatched_remove(String) enough_fire_trucks_dispatched[BCMS.fire_truck_dispatched_greater_than_or_equal_to_number_of_fire_truck_required] close