#统一待办接口

#统一待办接口

# 统一待办接口 # 接口调用方式 需要在OA Java主程序中调用本接口,依赖OA中相关实例。

# 应用场景 客户需要与第三方系统进行统一待办集成:将OA中产生的待办数据推送到第三方系统,同时如果OA中已经处理、终止数据则也需要同步通知第三方进行相应操作、

传统的开发模式是:监听OA中的所有相关Event事件,分别编写处理动作。传统开发模式的困难点是:接口多,代码量高,容易遗失场景。

期望:技术上只需要监听一个Event事件,系统中的待办、已办、终止、回退、撤销等一系列操作都触发给这个Event,开发在一个接口中完成三方同步的动作。

# 解决方案 标准产品提供了com.seeyon.apps.zhifei.event.ExtIntegrationExtendEvent统一待办事件接口完成上述诉求!

接口能力:支持协同、公文、会议、新闻、公告、调查、讨论模块的发起、提交、撤销、终止等操作。

注:标准产品有命名为ExtIntegrationEvent的接口,此接口属于旧接口;V8.2以上用户均推荐使用ExtIntegrationExtendEvent接口,此接口适配范围更广。

# 开发示例 监听统一待办Event非常简单,参照如下代码实现即可:

public class TodoTaskEvenListener {

/**编写一个事件监听ExtIntegrationExtendEvent**/

@ListenEvent(event = ExtIntegrationExtendEvent.class, async = true)

public void onExtIntegrationEvent(ExtIntegrationExtendEvent event) throws BusinessException {

ExtSummary extSummary = event.getExtSummary();

// 监听到对象时,执行对应的业务逻辑操作,比如将对象推送给第三方

todo(extSummary);

}

}

参照源码示例:\apps-weixin\src\main\java\com\seeyon\apps\weixin\todotask\listener\TodoTaskEvenListener.java

# 参数解释 ExtIntegrationExtendEvent.getExtSummary()返回ExtSummary对象,是一条流程数据基础信息,对象中的数据类似于COL_SUMMARY,相关属性如下:

public class ExtSummary {

private String extSummarySubject;// 协同的标题

private String extSummaryId;// 协同summaryId

private Integer extSummaryFlowState;//实例状态 = 流程状态 (总状态)OA流程状态枚举参考 CollaborationEnum.flowState

private String extSummaryStartMemberId;//协同发起人ID

private Long extSummaryStartDate;//协同发起时间 时间戳

private Long extSummaryReceiveDate;//协同接受时间 时间戳

private Long extSummaryFinishDate;//流程结束时间

private Long extSummaryUpdateDate;//流程更新时间,此条数据当前操作人员的oa系统中的id

private Long extSummaryHandleUserId;//此条数据当前操作人员的oa系统中的id

private String oaAppCode; // 具体功能模块,比如自由协同、公文、表单模板,对应枚举 ApplicationCategoryEnum

private String extSummaryPcUrl; //发起节点Pc端跳转链接

private String extSummaryMobileUrl; //发起节点手机端跳转链接

private String extSummaryAccountId; //当前协同的AccountId

private Map extraParams;//额外参数,比如协同处理的意见

private List ExtAffairs;// oa事务列表

}

ExtSummary.extSummaryFlowState表示整个流程的状态,对应枚举CollaborationEnum.flowState,协同和公文均是这个状态,相关属性如下:

public static enum flowState {

run, // 运行中,对应数值0

terminate, // 终止结束,对应数值1

cancel, // 取消(实际没有用,通过affair的state=2/substate来决定),对应数值2

finish, // 正常结束,对应数值3

deleted; // 被删除(公文:结束后归档,再从档案中删除),对应数值4

}

ExtSummary.getExtAffairs()返回多条节点对象ExtAffair,类似于CTP_AFFAIR,相关属性如下:

public class ExtAffair {

private String ctpAffairId;//OA个人事项(节点)Id

private Long ctpAffairMemberId;// OA个人事项人员ID

private Long ctpProxyMemberId;// OA个人事项代理人ID

private int ctpAffairState;// 当前流程节点处理的状态 OA处理人状态枚举参考 StateEnum,详见本文档后续参数解释

private int ctpAffairSubState;// 当前流程节点处理的状态 OA处理人副状态枚举参考 SubStateEnum,详见本文档后续参数解释

private Long ctpAffairCreateDate;// 个人事务创建时间

private Long ctpAffairReceiveDate;//事项接受时间 时间戳

private Long ctpAffairCompleteDate;//事项完成时间 时间戳

private Long ctpAffairUpdateDate;// 个人事务更新时间,比如处理状态变了

private String pcUrl;//pc端穿透地址

private String mobileUrl;//移动端穿透地址

private boolean isDelete = false; // 已办&已发是否被删除

private Map extraParams;//额外参数,比如协同处理的意见

ExtAffair.ctpAffairState流程节点处理状态,对应枚举StateEnum参数:

public enum StateEnum {

col_waitSend(1), // 协同-待发

col_sent(2), // 协同-已发

col_pending(3), // 协同-待办

col_pending_repeat_auto_deal(30), //待办-重复处理自动跳过

col_done(4), // 协同-已办

col_cancel(5), // 协同-撤销

col_stepBack(6), // 协同-回退

col_takeBack(7), // 协同-取回

col_competeOver(8), // 协同-竞争执行结束

col_competedOthersCanView(11), //竞争执行完,但是其他人可以查看。

col_stepStop(15), //协同-终止

col_itemRemoved(16),//事项被删除,不是列表里面的逻辑删除,而是直接从流程图中被删除了,这个人不在流程中了。例如督办里面复合节点的具体人员的删除功能。

mt_attend(9), //会议-参与

mt_unAttend(10), //会议-不参与

edoc_exchange_send(3), //公文交换-待发送

edoc_exchange_sent(4), //公文交换-已发送

edoc_exchange_receive(3), //公文交换-待签收

edoc_exchange_received(4), //公文交换-已签收

edoc_exchange_register(3), //公文交换--待登记

edoc_exchange_registered(4), //公文交换--已登记

edoc_exchange_withdraw(18), //公文交换--被撤销

inquiry_no_audit(20), //调查--待审核

bul_toaudit(21), // 公告--待审核

news_toaudit(22), // 新闻--待审核

info_failure(23), //信息报送-失效

info_stepBack(24); //信息报送-退件

}

ExtAffair.ctpAffairSubState流程节点二级处理状态,对应枚举SubStateEnum参数:

public enum SubStateEnum {

col_normal(0), // 协同-子状态-正常

col_waitSend_draft(1), // 协同-待发-草稿

col_waitSend_stepBack(2), // 协同-待发-被回退

col_waitSend_cancel(3), // 协同-待发-被撤销

col_waitSend_sendBack(4), //公文-退回拟稿人

col_cancel(5), //协同-撤销

col_pending_takeBack(6),//协同-待办-取回

col_pending_Back(7),//协同-待办-被回退

col_pending_unRead(11), // 协同-待办-未读

col_pending_read(12), // 协同-待办-已读

col_pending_ZCDB(13), // 协同-待办-暂存待办

col_pending_assign(14), //协同-待办-知会

//col_pending_stepBack_ZCDB(15), //协同-待办-被回退-暂存待办

col_pending_specialBack(15),//协同-待办-主动指定回退的状态,我指定回退给别人,这是我的状态

// 张家强 虽然是pending,但待发状态substate也是16,考虑改名或加详细注释

col_pending_specialBacked(16),//协同-待办--被指定回退到的事项,别人回退给我,这是我的状态

col_pending_specialBackCenter(17),//协同-待办--被指定回退到的事项,又指定回退给别人,中间事项的状态,比如A->B->C->D,D指定回退给C,C又制定回退给B。那么此时C的状态就是17。

col_pending_specialBackToSenderCancel(18),//协同-待发--指定回退到发起人并且选择流程重走,这是发起人的状态

col_pending_specialBackToSenderReGo(19),//公文--在办时,指定退回(直接提交给我)普通节点

col_done_stepStop(21), // 协同-已办-流程被终止

col_done_delete(22), //协同-已办-删除

col_done_pighone(23), //协同-已办 -归档

col_done_overtimeskip(24),//协同-已办 -超期跳过

col_done_activeStepStop(25), // 协同-已办-流程主动终止

meeting_pending_join(31), //会议-待办-参加

meeting_pending_unJoin(32), //会议-待办-不参加

meeting_pending_pause(33), //会议-待办-待定

meeting_pending_periodicity(34), // 周期性会议

edoc_pending_exchange_back(40); // 公文-待办-签收流程回退到发起人,发起人的事项

}

# 问题和方案 问题:干预人处理待办未触发统一待办Event

详细描述:ExtIntegrationExtendEvent待办监听接口如果有超级节点,且超级节点转干预人处理的时候,干预人收到待办的时候能监听到待办数据,但是干预人处理待办的时候监听不到处理事件。

方案回复:V9.0版本已经标准适配,更早版本项目上如有需求,请参考V9.0源码自行向下合并下代码:apps-collaboration\src\main\java\com\seeyon\apps\collaboration\manager\ColManagerImpl.java#transFinishAndZcdb。

编撰人:het、admin 快速跳转

统一待办接口接口调用方式应用场景解决方案开发示例参数解释问题和方案

分享链接分享链接

相关推荐

滑跪大集锦,滑跪失败不尴尬,不懂化解才尴尬
365bet在线足球开户

滑跪大集锦,滑跪失败不尴尬,不懂化解才尴尬

📅 11-26 👁️ 960
你吃过的正宗三文鱼,也大多染过色
365bet在线足球开户

你吃过的正宗三文鱼,也大多染过色

📅 08-24 👁️ 427
目前有哪些手机本身支持防窥屏功能?
365bet在线足球开户

目前有哪些手机本身支持防窥屏功能?

📅 07-06 👁️ 5031