spring.xml
spring.xml
完整内容为:
1 2 3 4 5 6 7 8 9 10 11
| <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="beanName" class="packageName"/>
</beans>
|
plugin.xml
plugin.xml
完整内容为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <?xml version="1.0" encoding="UTF-8"?> <plugin xmlns="http://www.example.org/plugin-config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/plugin-config ../../plugin.xsd ">
<extension point="com.landray.kmss.lbpm.engine.event"> <item name="listener"> <param name="unid" value="kmImissiveSmsMainListener"/> <param name="messageKey" value=""/> <param name="eventTypes" value="manualNodeHanlderGetterEvent"/> <param name="listener" value="kmImissiveSmsMainListener"/> <param name="enforce" value="true"/> </item> </extension>
</plugin>
|
反向建立对应的 Bean
即可。
Listener
完整代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
| package com.landray.kmss.jtt.sms.listener;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.landray.kmss.common.model.IBaseModel; import com.landray.kmss.km.imissive.model.KmImissiveMain; import com.landray.kmss.sys.lbpm.engine.builder.ManualNodeDefinition; import com.landray.kmss.sys.lbpm.engine.builder.ProcessDefinition; import com.landray.kmss.sys.lbpm.engine.manager.event.EventExecutionContext; import com.landray.kmss.sys.lbpm.engine.manager.event.IEventListener; import com.landray.kmss.sys.lbpmservice.node.support.ManualNodeHanlderGetterEvent; import com.landray.kmss.sys.organization.interfaces.ISysOrgCoreService; import com.landray.kmss.sys.organization.model.SysOrgPerson; import com.landray.kmss.sys.right.interfaces.ExtendAuthModel; import com.landray.kmss.util.SpringBeanUtil; import com.landray.kmss.util.UserUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory;
import java.util.ArrayList; import java.util.List;
public class GlobalSmsListener implements IEventListener {
private static final Log log = LogFactory.getLog(GlobalSmsListener.class);
@Override public void handleEvent(EventExecutionContext execution, String s) throws Exception { ManualNodeHanlderGetterEvent manualNodeHanlderGetterEvent = (ManualNodeHanlderGetterEvent) execution.getEvent(); ManualNodeDefinition manualNodeDefinition = manualNodeHanlderGetterEvent.getManualNodeDefinition();
log.info("HandlerIds类型: " + JSONUtil.toJsonStr(manualNodeDefinition.getHandlerSelectType()));
ProcessDefinition processDefinition = manualNodeDefinition.getProcessDefinition();
IBaseModel mainModel = execution.getMainModel(); String notifyType = processDefinition.getNotifyType();
boolean classResult = mainModel instanceof KmImissiveMain; if (!classResult) { return; }
ExtendAuthModel kmImissiveMain = Convert.convert(ExtendAuthModel.class, mainModel);
String docSubject = kmImissiveMain.getDocSubject(); log.info("预置信息-docSubject:" + docSubject);
final String mobileStr = "mobile"; log.info("短信匹配-提示类型:" + notifyType); log.info("短信匹配:" + StrUtil.containsAny(notifyType, mobileStr));
if (StrUtil.containsAny(notifyType, mobileStr)) { String handlerIds = manualNodeDefinition.getHandlerIds(); log.info("handlerIds匹配:" + JSONUtil.toJsonStr(handlerIds)); List<String> userIdList = StrUtil.splitTrim(handlerIds, ';');
ISysOrgCoreService sysOrgCoreService = (ISysOrgCoreService) SpringBeanUtil.getBean("sysOrgCoreService"); String[] userIdArray = ArrayUtil.toArray(userIdList, String.class); log.info("userIdArray匹配:" + JSONUtil.toJsonStr(userIdArray)); try { List byPrimaryKeys = sysOrgCoreService.findByPrimaryKeys(userIdArray); List expandToPerson = sysOrgCoreService.expandToPerson(byPrimaryKeys); List parseSysOrgRole = sysOrgCoreService.parseSysOrgRole(byPrimaryKeys, sysOrgCoreService.findByPrimaryKey( UserUtil.getUser().getFdId()));
List result = new ArrayList(2 * (expandToPerson.size() + parseSysOrgRole.size())); result.addAll(expandToPerson); result.addAll(parseSysOrgRole);
if (CollUtil.isNotEmpty(result)) { for (Object itemObj : result) { try { SysOrgPerson user = Convert.convert(SysOrgPerson.class, itemObj); String fdName = user.getFdName(); String fdMobileNo = user.getFdMobileNo(); if (StrUtil.isBlank(fdMobileNo)) { log.error("接收人 [" + fdName + "] 手机号为空,不予发送!"); continue; } } catch (Exception e) { log.error("发送信息失败,可能由于接收对象不正确导致。"); log.error(itemObj.toString()); return; } } } } catch (Exception e) { log.error(e.getMessage()); } } else { log.debug("待办内容不匹配短信,不予发送!"); } }
}
|
验证
涉及到流程的模块均会触发此代码进行监听,代码中手动写死了仅处理公文模块,且流程节点需要配置短信通知方式才会被触发。