统一待办推送同步服务
默认同步到基于 bropen-workbench 的统一待办应用中。
可以在应用中新建一个同名的子类,实现 push 和 isMultiPushSupported 方法,将任务推送到其他第三方系统中。
| Modifiers | Name | Description |
|---|---|---|
protected String |
WORKBENCH_APP_CODE |
|
protected String |
WORKBENCH_SRV_URL |
|
static Integer |
aliasOverridingOrder |
| Type | Name and description |
|---|---|
bropen.framework.core.ErrorService |
errorService |
bropen.framework.core.SettingService |
settingService |
| Type | Name and description |
|---|---|
void |
bootStrapInit()如果启用了统一待办推送,则监听任务事件、执行推送操作 |
static String |
getTaskUrl(Map task)获得任务的URL |
protected Boolean |
isMultiPushSupported()推送任务(push)方法是否支持批量推送任务 |
protected boolean |
isPushEnabled() |
void |
logSyncTasks(String event, Task task, Map result)记录推送成功或失败的任务 |
protected Map |
push(String event, Task task, List<Long> actorIds)推送任务 |
void |
pushFailedTasks()重新推送一周内失败的任务 |
void |
pushTask(String event, Task task, List<Long> deletedActorIds)同步监听草稿、待办、待阅等类型任务的更新/删除事件,并推送到统一待办系统中。 |
static String |
replaceInvalidChars(String s)替换一些特殊字符为空,避免接口执行异常 |
static void |
setPropertyConverter(Class clazz, Closure converter)设置属性的转换器 |
| Methods inherited from class | Name |
|---|---|
class Object |
Object#wait(long, int), Object#wait(long), Object#wait(), Object#equals(Object), Object#toString(), Object#hashCode(), Object#getClass(), Object#notify(), Object#notifyAll() |
如果启用了统一待办推送,则监听任务事件、执行推送操作
相关系统参数:bropen.bpm.plugins.workbench.push.XXXX。
获得任务的URL
task - 包含 docId、taskId、applicationId、completeTime 等属性的任务 Map推送任务(push)方法是否支持批量推送任务
默认为支持,可以继承后返回 false 表示支持逐条推送。
记录推送成功或失败的任务
推送任务
默认调用统一待办(bropen-workbench)的推送服务,可以继承后实现其他推送接口。
需要注意的是,event 为 SyncTask.EVENT_CREATE 或 SyncTask.EVENT_UPDATE 时,目标系统需处理状态转换的问题,如待办变已办、待阅变待办等情况。
如目标系统不能自动处理,可以在本方法中,根据推送的返回结果,修改推送方式、多次推送,比如抽单后已办变待办的情况:
这里的 event 是更新,那么先推送一条待办更新,如果目标系统返回数据不存在的失败消息(因为目标系统里是已办),则再推送一条已办删除(不论返回结果)、和一条待办新增。
[success: true/false, actorIds: 成功或失败的办理人ID列表(默认等于参数 actorIds), message: 成功或失败的消息] 的推送结果event - 删除或更新、创建任务的事件类型actorIds - 推送的办理人(员工)ID列表;如果不支持批量推送(isMultiPushSupported 返回 false),则只包含一个 ID。重新推送一周内失败的任务
同步监听草稿、待办、待阅等类型任务的更新/删除事件,并推送到统一待办系统中。
当推送服务关闭的情况下,可以用下面的代码在 console 中临时开启:
ctx.settingService.createOrUpdate("bropen.bpm.plugins.workbench.push.enabled", "true")
// 设置 Workbench 中配置的应用代码
ctx.settingService.createOrUpdate("bropen.bpm.plugins.workbench.push.app.code", "BroBPM")
// 设置 Workbench 服务器地址
ctx.settingService.createOrUpdate("bropen.bpm.plugins.workbench.push.service.url", "http://localhost:7090/BroWorkbench/services/workbench/tasks")
// 开启推送服务
ctx.workbenchSyncService.bootStrapInit()
ctx.settingService.createOrUpdate("bropen.bpm.plugins.workbench.push.enabled", "false")
// 测试单个任务
ctx.osmEmployeeService.notify(bropen.bpm.Constants.PLUGIN_NAME + ":task", [event: "create/update/delete", task: Task.get(xxxx), deletedActorIds: [...]])
替换一些特殊字符为空,避免接口执行异常
s - 要处理的字符串设置属性的转换器
用于同步(推送、拉取)时转换属性值,如下例所示,将所有的密级设置为秘密、所有优先级设为一般:
import bropen.bpm.plugins.workbench.WorkbenchSyncService
import bropen.bpm.plugins.workbench.WorkbenchSyncService.Priority
import bropen.bpm.endpoint.workbench.WorkbenchSyncService.Security
WorkbenchSyncService.setPropertyConverter( Priority, {Integer priority-> Priority.NORMAL } )
WorkbenchSyncService.setPropertyConverter( Security, {Integer security-> Security.SECRET } )
clazz - 需要转换的数据类型,目前只支持 Priority、Securityconverter - 转换器闭包