If you put an approved order on hold and then later cancel an item on the order, the order is auto approved. Order must have two line items to test the behavior. The expected result is that order should stay on hold.
In this chain of events, following eca is triggered. The service 'checkOrderItemStatus' should be fixed such that it also check the current order header status before it approve the order.