package com.hotent.base.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 工作流注解
 * <pre>
 * 在某个方法上添加这个注解，则执行该方法时会自动启动对应的工作流实例。
 * </pre>
 *
 * @company 广州宏天软件股份有限公司
 * @author heyifan
 * @email heyf@jee-soft.cn
 * @date 2018年8月16日
 */
@Target({ElementType.METHOD}) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface Workflow {
	/**
	 * 流程定义key。
	 * @return
	 */
	public String flowKey() default "";
	/**
	 * 业务系统编码
	 * <pre>
	 * 当整个系统中很多模块都通过这种方式启动流程时，传递的业务主键可能会有重复的情况，添加一个业务系统编码可以避免主键重复。
	 * </pre>
	 * @return
	 */
	public String sysCode() default "";
	/**
	 * 变量keys集合
	 * <pre>
	 * 流程启动时可以传递变量集合，通过keys指定变量的值来自业务实体的哪些字段。
	 * </pre>
	 * @return
	 */
	public String[] varKeys() default "";

	/**
	 * 流程发起成功后的回调方法名
	 * 
	 * <p>
	 * 当前注解所在的类中可以定义一个回调方法，该方法会在流程发起成功后被调用，该方法有两个参数：<br />
	 * 1.ObjectNode objectNode: 是流程发起成功后的返回数据； <br />
	 * 2.BaseModel model: 是当前方法的实体类。
	 * </p>
	 * 
	 * @return
	 */
	public String callbackMethodName() default "";
}
