@Override
  protected void doRun() {
    selectObj = getSelectedObject().get(0);

    JobOptionsDialog dialog =
        new JobOptionsDialog(
            getShell(), Messages.JobProcesssDialogTiggerTitle_title, Execution.EMBEDDED);
    dialog.setBlockOnOpen(true);
    int ret = dialog.open();
    if (ret == Dialog.CANCEL) {
      return;
    }

    String jobName = ""; // $NON-NLS-1$
    String jobVersion = ""; // $NON-NLS-1$

    if (selectObj instanceof IRepositoryViewObject) {
      jobName = ((IRepositoryViewObject) selectObj).getProperty().getLabel();
      jobVersion = ((IRepositoryViewObject) selectObj).getProperty().getVersion();
    }
    // check exist
    IValidateService validateService =
        (IValidateService) GlobalServiceRegister.getDefault().getService(IValidateService.class);
    if (validateService != null) {
      boolean result =
          validateService.validateAndAlertObjectExistence(
              IServerObjectRepositoryType.TYPE_ROUTINGRULE, getNewTriggerName(jobName), null);
      if (!result) {
        return;
      }
    }
    //
    WSRoutingRuleE routingRule = createTrigger(jobName, jobVersion, dialog);
    // if the new objectect is opened ,than close it before regenerating
    IRepositoryViewObject toDelete =
        RepositoryResourceUtil.findViewObjectByName(
            IServerObjectRepositoryType.TYPE_ROUTINGRULE, PREFIX + jobName);
    if (toDelete != null) {
      IEditorPart openedEditor = UIUtil.findOpenedEditor(toDelete);
      if (openedEditor != null) {
        UIUtil.closeEditor(openedEditor, false);
      }
      // delete directly
      RepositoryResourceUtil.removeViewObjectPhysically(toDelete, jobVersion);
    }
    AttachToTriggerView(jobName, routingRule);
  }