うーん、疑似コードで良いかな。
statusは足せる列挙体持ってる言語ならその方が良い。

uint APPLY=1
uint CANCEL=2
uint XXXXX=4
class Order
 uint status = 0x0
 なんかプロパティ
 bool isEnabledFor(proc)
  return (this.status & proc)
 bool isValid()
  //dbと突き合わせるなり

class QueueOrder
 Order order
 uint Operation

class OrderProcessor
 void exec(QueueOrder qo)
  if(qo.order.isValid() && qo.order.isEnabledFor(qo.Operation))
   //Operarionごとに処理とstatusの更新
   
   return order
  else
   ログに残すやらなんやら

みたいになるんじゃないの?