@Retention(value=RUNTIME)
@Target(value=TYPE)
public @interface ActivityInterface
Workflow.newActivityStub(Class)
methods.
Each method of the interface annotated with ActivityInterface
including inherited
from interfaces is a separate activity. By default the name of an activity type is its method
name with the first letter capitalized. Use namePrefix()
or {ActivityMethod.name()
} to make sure that activity type names are distinct.
Example:
public interface A {
a();
}
@ActivityInterface(namePrefix = "B_")
public interface B extends A {
b();
}
@ActivityInterface(namePrefix = "C_")
public interface C extends B {
c();
}
public class CImpl implements C {
public void a() {}
public void b() {}
public void c() {}
}
When CImpl
instance is registered with the Worker
the
following activities are registered:
B
and C
interfaces. A call to crate stub to A
interface will fail
as A
is not annotated with ActivityInterface.Modifier and Type | Optional Element and Description |
---|---|
java.lang.String |
namePrefix
Prefix to prepend to method names to generate activity types.
|
public abstract java.lang.String namePrefix
Note that this value is ignored if a name of an activity is specified explicitly through
ActivityMethod.name()
.
Be careful about names that contain special characters. These names can be used as metric tags. And systems like prometheus ignore metrics which have tags with unsupported characters.