定义枚举
public enum NodeType {
USER_TASK("userTask", "用户审批节点", UserTask.class);
public String type;
public String name;
public Class<?> clazz;
public String getType() {
return type;
}
NodeType(String type, String name, Class<?> clazz) {
this.type = type;
this.name = name;
this.clazz = clazz;
}
/**
* 根据type获取枚举
*
* @param type
* @return
*/
public static NodeType getByType(String type) {
for (NodeType value : NodeType.values()) {
if (value.getType().equals(type)) {
return value;
}
}
return null;
}
}
public enum UserTask {
ARGS1("args1", "assignType", "审批类型"),
ARGS2("args2", "assignValue", "关联审批人或组"),
ARGS3("args3", "javaClass", "自定义类名"),
ARGS4("args4", "dueDate", "持续时间"),
ARGS5("args5", "isSequential", "是否会签");
public String args;
public String key;
public String name;
public String getArgs() {
return args;
}
public String getKey() {
return key;
}
UserTask(String args, String key, String name) {
this.args = args;
this.key = key;
this.name = name;
}
}
测试:
public static void main(String[] args) throws Exception {
NodeType nodeType = NodeType.getByCode("userTask");
Class<?> clazz = nodeType.clazz;
Object[] objects = clazz.getEnumConstants();
Method getKey = clazz.getMethod("getKey");
for (Object object : objects) {
String key = (String) getKey.invoke(object);
System.out.println(key);
}
}
输出结果:
assignType
assignValue
javaClass
dueDate
isSequential