Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The Workflow Framework example is used to illustrate how instrumentation is applied to Java language constructs. The Workflow Framework example is based on the following classes and interfaces:

package xmp.wfm.task;

 

@Retention(RetentionPolicy.RUNTIME)
public @interface TransactionProvider {}

 

@Retention(RetentionPolicy.RUNTIME)
public @interface Transaction {}

 

@Retention(RetentionPolicy.RUNTIME)
public @interface RecoverableTransactionProvider {}

...

@Retention(RetentionPolicy.RUNTIME)
public @interface Resource {}

...

@TransactionProvider

...

public interface Task {

...

@Transaction

...

public void start();
public void stop();
public void stop(boolean force);

}

...

@RecoverableTransactionProvider
public interface RecoverableTask extends Task {
     public void start(RecoverableTaskContext context);
}

...

public abstract class AbstractTask implements Task {

...

@Transaction
public void start() { }
protected void start(TaskContext taskContext) { }
public void stop() { }
public void stop(boolean force) { }

}

package xmp.wfm.server;

...

@Resource
public class NonRecoverableTaskAdapter extends AbstractTask {
}

...

@Resource
public class RecoverableTaskAdapter extends AbstractTask implements RecoverableTask {
     public void start() { }
     public void start(RecoverableTaskContext context) { }
     protected void recover(RecoverableTaskContext context) { }
     public void stop() { }
     public void stop(boolean force) { }
}

About instrumenting interfaces

...