Barbados Crisis Management System (BCMS)

Preamble

BCMS (requirements definition doc. ⤳ PDF) is a software case study, which is implemented in State Chart XML (SCXML) and PauWare. PauWare is a Java engine for executing Harel's Statecharts in general.

Application Programming Interface (API): Javadoc.

Resources
Installation requirements
_BCMS_state_machine = new com.pauware.pauware_engine.Core.StateMachine(… /*, new com.pauware.pauware2web.PauWare2Web_client()*/);
Specification (statechart) as full-size SVG image
BCMSStep_3_Coordinationallow: timeout/BCMS.record_timeout_reason(Long,String)exit/ BCMS.to_be_killedRoute_for_police_vehicles_fixed→Route_for_fire_trucks_fixed→Fire_trucks_arriving→Police_vehicles_arriving→Completion_of_objectivesStep_5_Arrivalallow: crisis is less severe/BCMS.recall_fire_truckallow: crisis is less severe/BCMS.recall_police_vehicleallow: crisis is less severe/^BCMS.enough_fire_trucks_arrivedallow: crisis is less severe/^BCMS.enough_police_vehicles_arrivedallow: fire truck breakdown/BCMS.breakdown_fire_truck(String,String)allow: police vehicle breakdown/BCMS.breakdown_police_vehicle(String,String)Police_vehicles_arrival→Completion_of_objectivesPolice_vehicles_arrivingAll_police_vehicles_arrivedinvariant: [BCMS.PV_arrived_greater_or_equal_to_PV_dispatched]enough_police_vehicles_arrived[BCMS.no_more_dispatched_police_vehicles_and_not_in_All_fire_trucks_arrived]police_vehicle_arrived/BCMS.arrive_police_vehicle(String);^BCMS.enough_police_vehicles_arrivedenough_police_vehicles_arrived[BCMS.no_more_dispatched_police_vehicles_and_in_All_fire_trucks_arrived]Fire_trucks_arrival→Completion_of_objectivesFire_trucks_arrivingAll_fire_trucks_arrivedinvariant: [BCMS.FT_arrived_greater_or_equal_to_FT_dispatched]fire_truck_arrived/BCMS.arrive_fire_truck(String);^BCMS.enough_fire_trucks_arrivedenough_fire_trucks_arrived[BCMS.no_more_dispatched_fire_trucks_and_not_in_All_police_vehicles_arrived]enough_fire_trucks_arrived[BCMS.no_more_dispatched_fire_trucks_and_in_All_police_vehicles_arrived]All_police_vehicles_dispatchedinvariant: [BCMS.PV_dispatched_equal_to_PV_required]InitFSC_connectedPSC_connectedCrisis_details_exchangeentry/ BCMS.to_be_killedentry/ BCMS.to_be_set(Long)Step_4_DispatchingAll_fire_trucks_dispatchedinvariant: [BCMS.FT_dispatched_equal_to_FT_required]End_of_crisis→Route_for_fire_trucks_fixed→Route_for_police_vehicles_fixedNumber_of_fire_truck_definedSteps_33a1_33a2_NegotiationRoute_for_police_vehicles_development→Step_4_DispatchingRoute_plan_development→Route_for_police_vehicles_to_be_proposedRoute_for_police_vehicles_fixedRoute_for_police_vehicles_approvedFSC_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]FSC_disagrees_about_police_vehicle_routeroute_for_police_vehiclesroute_for_police_vehiclesRoute_for_fire_trucks_development→Step_4_DispatchingRoute_plan_development→Route_for_fire_trucks_to_be_proposedRoute_for_fire_trucks_approvedRoute_for_fire_trucks_fixedFSC_agrees_about_fire_truck_route[BCMS.in_Route_for_police_vehicles_approved]route_for_fire_trucksroute_for_fire_trucksFSC_agrees_about_fire_truck_route[BCMS.not_in_Route_for_police_vehicles_approved]FSC_disagrees_about_fire_truck_routeRoute_plan_developmentNumber_of_police_vehicle_definedenough_police_vehicles_dispatched[BCMS.police_vehicle_dispatched_greater_than_or_equal_to_number_of_police_vehicle_required]state_police_vehicle_number/BCMS.set_number_of_police_vehicle_required(Integer)enough_fire_trucks_dispatched[BCMS.fire_truck_dispatched_greater_than_or_equal_to_number_of_fire_truck_required]PSC_connection_requestFSC_agrees_about_police_vehicle_route[BCMS.in_Route_for_fire_trucks_approved]fire_truck_dispatched[BCMS.fire_truck_dispatched_less_than_number_of_fire_truck_required]/BCMS.dispatch_fire_truck(String);^BCMS.enough_fire_trucks_dispatchedFSC_connection_requestfire_truck_dispatched[BCMS.fire_truck_dispatched_less_than_number_of_fire_truck_required]/BCMS.dispatch_fire_truck(String);^BCMS.enough_fire_trucks_dispatchedpolice_vehicle_dispatched[BCMS.police_vehicle_dispatched_less_than_number_of_police_vehicle_required]/BCMS.dispatch_police_vehicle(String);^BCMS.enough_police_vehicles_dispatchedFSC_agrees_about_fire_truck_route[BCMS.in_Route_for_police_vehicles_approved]enough_police_vehicles_dispatched[BCMS.police_vehicle_dispatched_greater_than_or_equal_to_number_of_police_vehicle_required]closestate_fire_truck_number/BCMS.set_number_of_fire_truck_required(Integer)crisis_is_more_severefire_truck_blocked/BCMS.block_fire_truck(String)police_vehicle_blocked/BCMS.block_police_vehicle(String)PSC_connection_requestFSC_connection_requestpolice_vehicle_dispatched[BCMS.police_vehicle_dispatched_less_than_number_of_police_vehicle_required]/BCMS.dispatch_police_vehicle(String);^BCMS.enough_police_vehicles_dispatchedenough_fire_trucks_arrived[BCMS.no_more_dispatched_fire_trucks_and_in_All_police_vehicles_arrived]enough_police_vehicles_arrived[BCMS.no_more_dispatched_police_vehicles_and_in_All_fire_trucks_arrived]enough_fire_trucks_dispatched[BCMS.fire_truck_dispatched_greater_than_or_equal_to_number_of_fire_truck_required]state_fire_truck_number/BCMS.set_number_of_fire_truck_required(Integer)route_for_fire_trucksstate_police_vehicle_number/BCMS.set_number_of_police_vehicle_required(Integer)route_for_police_vehiclesno_more_route_left