public void UpdateTravellingUIEFromTo(ITravelableUIE sourceUIE, ITravelableUIE targetUIE)
 {
     if (thisTravellingUIE == null)
     {
         throw new System.InvalidOperationException("this prcess has already been stopped or expired");
     }
     else
     {
         if (sourceUIE != thisTravellingUIE)
         {
             throw new System.InvalidOperationException("souceUIE does not match thisTravellingUIE");
         }
         else
         {
             sourceUIE.SetRunningTravelProcess(null);
             thisTravellingUIE = targetUIE;
             targetUIE.SetRunningTravelProcess(this);
         }
     }
 }
 public override void Run()
 {
     base.Run();
     thisTravellingUIE.SetRunningTravelProcess(this);
 }