示例#1
0
  @Override
  public void format(HtmlWriter writer) throws IOException {
    writer.writeStart("pre");

    State state = getState();
    ObjectType type = state.getType();
    if (type != null) {
      writer.writeHtml(type.getInternalName());
      writer.writeHtml(": ");
    }

    writer.writeStart(
        "a",
        "target",
        "_blank",
        "href",
        StringUtils.addQueryParameters(
            "/_debug/query", "where", "id = " + state.getId(), "action", "Run"));
    writer.writeHtml(getLabel());
    writer.writeEnd();
    writer.writeElement("br");

    writer.writeHtml(ObjectUtils.toJson(state.getSimpleValues(), true));

    writer.writeEnd();
  }
示例#2
0
  @Override
  public boolean setPriority(final int priority) {
    if (priority < Priority.MIN_PRIORITY || priority > Priority.MAX_PRIORITY) {
      throw new IllegalArgumentException("Priority out of bounds: " + priority);
    }

    State state;
    State newState;
    do {
      state = _stateRef.get();
      if (state.getType() != StateType.INIT) {
        return false;
      }

      newState = new State(state.getType(), priority);
    } while (!_stateRef.compareAndSet(state, newState));

    return true;
  }
示例#3
0
  public void verify() {
    for (State state : states) {
      if (state.getType() == StateType.start)
        if (startState == null) startState = state;
        else
          throw new IllegalStateException(
              "Found multiple start states. There should only one start state for a state machine.");
    }

    currentState = startState;
  }
示例#4
0
 protected boolean transitionDone() {
   State state;
   State newState;
   do {
     state = _stateRef.get();
     if (state.getType() == StateType.DONE) {
       return false;
     }
     newState = state.transitionDone();
   } while (!_stateRef.compareAndSet(state, newState));
   return true;
 }
示例#5
0
 protected void transitionPending() {
   State state;
   State newState;
   do {
     state = _stateRef.get();
     if (state.getType() != StateType.RUN) {
       return;
     }
     newState = state.transitionPending();
   } while (!_stateRef.compareAndSet(state, newState));
   markTaskPending();
 }
示例#6
0
 protected boolean transitionCancel(final Exception reason) {
   State state;
   State newState;
   do {
     state = _stateRef.get();
     final StateType type = state.getType();
     if (type == StateType.RUN || type == StateType.DONE) {
       return false;
     }
     newState = state.transitionDone();
   } while (!_stateRef.compareAndSet(state, newState));
   return true;
 }
示例#7
0
 protected boolean transitionRun(final TraceBuilder traceBuilder) {
   State state;
   State newState;
   do {
     state = _stateRef.get();
     if (state.getType() != StateType.INIT) {
       return false;
     }
     newState = state.transitionRun();
   } while (!_stateRef.compareAndSet(state, newState));
   _traceBuilder = traceBuilder;
   traceBuilder.addShallowTrace(_shallowTraceBuilder);
   return true;
 }
示例#8
0
 @Override
 public BeanInfo[] getAdditionalBeanInfo() {
   State state = getState();
   return state.getDatabase().getEnvironment().getAdditionalBeanInfoByType(state.getType());
 }
示例#9
0
  public boolean isEnded() {
    if (currentState == null) return false;

    return currentState.getType() == StateType.end;
  }