docs: public BaseMessage processMessage(BaseMessage internalMessage)
      {
          if (internalMessage.getMessageDataDesc(null) == null)
              internalMessage.addMessageDataDesc(new RunRemoteProcessMessageData(null, null));
          
          RunRemoteProcessMessageData runRemoteProcessMessageData = (RunRemoteProcessMessageData)internalMessage.getMessageDataDesc(null);
          String processClassName = (String)runRemoteProcessMessageData.get(RunRemoteProcessMessageData.PROCESS_CLASS_NAME);
          if (processClassName == null)
          	return null;
          
          BaseProcess process = null;
          Task task = this.getTask();
          Map<String,Object> properties = new HashMap<String,Object>();
          MapMessage.convertDOMtoMap(internalMessage.getDOM(), properties, true);
          process = (BaseProcess)ClassServiceUtility.getClassService().makeObjectFromClassName(processClassName);
          if (process == null)
          	return null;
          process.init(task, null, properties);
          
          BaseMessage messageReply = null;
          if (process instanceof BaseMessageProcess)
          	messageReply = ((BaseMessageProcess)process).processMessage(internalMessage);
          else
          	process.run();
        
          return messageReply;
      }