import com.actionsoft.bpms.bpmn.engine.model.run.delegate.TaskInstance;
import com.actionsoft.bpms.server.UserContext;
public class NotifyTest {
/**
* 任务通知的方法
*
* @param uc 当前操作人的用户上下文对象
* @param taskInst 接收人的任务实例
* @param sender 任务发送人,即taskInst.getOwner()
* @param target 任务接收人,即taskInst.getTarget()
* @param param 发送的类型以及内容参数,格式:{"notifyType":"sms wx","notifyContent":"通知内容"},notifyType的内容是在参数中配置的对应的type
* @return
*/
public void notify(UserContext uc, TaskInstance taskInst, String sender, String target, String param) {
int taskState = taskInst.getState(); //获取任务类型
// 1:常规待办任务
// 2:只读传阅任务【不影响流程推进】
// 3:待办任务,从哪来回哪去
// 4:只读等待任务,如等待作者修改
// 9:系统通知任务【不影响流程推进】
// 11:加签任务
if(sender != target && taskState != 2 ){ //自己发给自己时不提醒、传阅任务不提醒 (可根据实际需求判断)
JSONObject obj = null;
String types = ""; //任务发送者选择的类型 ,多个空格隔开
String content = ""; //通知内容
try {
obj = new JSONObject(param);
types = obj.getString("notifyType");
content = obj.getString("notifyContent");
String[] type = types.split(" ");
for(int i =0; i < type.length; i++){
if(type[i].equals("sms")){ //sms 为邮件通知应用参数` 通知类型(notifyType)`定义的type值
//此处调用相关类型的发送API方法
System.out.println("【" + sender + "】给手机号码 :" + UserContext.fromUID(target).getUserModel().getMobile() + " 发送内容为:" + content);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
/**
* 注册插件
*/
public class Plugins implements PluginListener{
public List<AWSPluginProfile> register(AppContext arg0) {
List<AWSPluginProfile> list = new ArrayList<AWSPluginProfile>();
// 注册应用扩展点
Map<String, Object> params2 = new HashMap<String, Object>();
params2.put("notifyClass", NotifyTest.class.getName());
list.add(new AppExtensionProfile("自定义任务提醒", "aslp://com.actionsoft.apps.addons.mail/registerApp", params2));
return list;
}
}
该实现类监听事件在AWS系统内仅需注册一次,则系统内所有应用任务办理时均可使用。