一 . bpmn2.0
-
添加手工任務節(jié)點
- 名稱
填寫通知的標題 - 描述
填寫需要通知的角色
- 如有多個需要逗號分割
role1,role2
- 監(jiān)聽器
- 監(jiān)聽事件
start
- 監(jiān)聽類
com.jeeplus.modules.act.listener.TestNotifyListener
這個類已經(jīng)編寫好了桥滨,這個類會給添加Notify的數(shù)據(jù)庫記錄
二 . 監(jiān)聽類
/**
* @see 手工任務專用 測試知會供能
*/
@Component
public class NotifyListener implements JavaDelegate
{
private static final String String = null;
@Override
public void execute(DelegateExecution execution) throws Exception
{
SystemService systemService = SpringContextHolder.getBean(SystemService.class);
NotifyService notifyService = SpringContextHolder.getBean(NotifyService.class);
// 獲取流程id
String procInsId = execution.getProcessInstanceId();
// 通知名稱
String notifyName = execution.getCurrentActivityName();// 節(jié)點名稱
// 通知類型(流程key玻孟,通過對比key民鼓,才可以確認查詢的數(shù)據(jù)類型)
String processDefinitionId = execution.getProcessDefinitionId();
/**
* jeeplus/a/act/task/form?
* taskDefKey=&
* procInsId=426dc735210d4a2390d80e47027db173&
* procDefId=finance_loan:1:4619ac0def5b46ad998af6b81795f887
*
* taskDefKey不用寫值表示,最終狀態(tài)
*
* */
// 角色1潜秋,角色2(填寫的內(nèi)容是角色的“enmame”)
String roles = (java.lang.String) ActUtils.getProperties(execution).get("documentation");// 手工任務中的描述填寫角色(dep,emp)
String[] ennames = roles.split(",");
// 根據(jù)roles獲取要通知的人
HashSet<User> users = new HashSet<>();
for (String enname : ennames)
{
Role role = systemService.getRoleByEnname(enname);
User user = new User(role);
List<User> findUser = systemService.findUser(user);
for (User us : findUser)
{
users.add(us);// 因為set可以去重(但是這里的User類需要重寫hashcode的方法)
}
}
for (User user : users)
{
Notify notify = new Notify(notifyName, processDefinitionId, user, procInsId, "未讀");
// 保存通知單
notifyService.save(notify);
System.out.println();
}
}
}