public override void WritePropertiesData(DataWriter writer)
 {
     writer.WriteStartObject(Name);
     base.WritePropertiesData(writer);
     if (Status == Core.Process.ProcessStatus.Inactive)
     {
         writer.WriteFinishObject();
         return;
     }
     if (Page != null)
     {
         if (Page.GetType().IsSerializable ||
             Page.GetType().GetInterface("ISerializable") != null)
         {
             writer.WriteSerializableObjectValue("Page", Page, null);
         }
     }
     if (!HasMapping("Icon"))
     {
         writer.WriteValue("Icon", Icon, null);
     }
     if (!HasMapping("Buttons"))
     {
         writer.WriteValue("Buttons", Buttons, null);
     }
     if (!HasMapping("WindowCaption"))
     {
         writer.WriteValue("WindowCaption", WindowCaption, null);
     }
     if (!HasMapping("MessageText"))
     {
         writer.WriteValue("MessageText", MessageText, null);
     }
     if (ResponseMessages != null)
     {
         if (ResponseMessages.GetType().IsSerializable ||
             ResponseMessages.GetType().GetInterface("ISerializable") != null)
         {
             writer.WriteSerializableObjectValue("ResponseMessages", ResponseMessages, null);
         }
     }
     if (!HasMapping("ProcessInstanceId"))
     {
         writer.WriteValue("ProcessInstanceId", ProcessInstanceId, null);
     }
     if (PageParameters != null)
     {
         if (PageParameters.GetType().IsSerializable ||
             PageParameters.GetType().GetInterface("ISerializable") != null)
         {
             writer.WriteSerializableObjectValue("PageParameters", PageParameters, null);
         }
     }
     writer.WriteFinishObject();
 }