我们系统要做一个接口供其他系统调用,我们系统是一个流程,其他系统调用我们一个方法,我们这边执行流程,而且每执行一个过程,就得及时把状态返回给调用方。比如其他系统调用我们的申请,我们这边就得从申请-->审核-->复核-->最终确定 走完流程,而且每一个流程都得返回状态,如果我们这边不往下走,他人的系统的状态就总是停在那里。有思路的请告诉我
补充:我们系统是一个通用的系统,会有很多系统调用我们的接口,对方调用的时候把所需信息传过来,我们这边人为一步步处理,每处理一步就得把状态返回,到最后确认的时候得把确认信息返回。所以相互调用这个可行性不高,因为其他人的系统一个是比较多,也不是我们开发的;再次,当对方的地址变化时,不好处理。
可以通过双方互相调用,即他调用你的,然后你处理完调用他,这和在同一个系统内是一样的
另一种是一方只提供被动调用的接口,另一方调用后,定时轮询,以获知是否继续处理
您好,首先感谢您的积极回答。但是我得说一个问题:就是我们系统是一个比较通用的系统,会有十几个甚至上百个系统调用我们的接口,我们不能够把调用我们系统的对方地址都获取并保存,这个方案可行性不高,如果是单独的两个系统对接,这个是完全可以的;对于第二种定时轮询,那多久询一次呢,而且有的数据的及时性程度不同的话,也会有数据的延迟情况,还有就是到最终确认时还得把我们这边的处理结果返回给调用方。
@郑智平: 你们这种情况,只能使用第二种,由所有调用方自行调用你们定义好的接口
调用时间可以在你的文档中定义,然后对方按规则调用,不过一般都只是做一个频率限制,防止被拖死。每种数据的及时性是不一样的,所以需要提供不同的接口,每一种接口都会有不同的轮询间隔
比如,如果是一个电子商务类的平台,库存信息可能每分钟都要同步,订单每十分钟抓取一次就可以了,而商品信息,可能每小时才会同步一次
另外你最后那个确认,也可以通过一样的方式,只是你们提供一个接口,然后对方通过一个事务标识来获取你这边的处理状态。(事务标识是指接口使用的key,比如库存同步用的是商品ID,订单同步用的是订单号等)
延迟肯定会有的,这种方式只能做异步,而异步必然产生延迟。(PS:同步也无法完全避免延迟,比如他调用了,然后你系统很忙,返回很慢,不但还是有延迟,而且对方会一直卡在那里)
@丁学: 嗯,你说得很对,我们内部也讨论和很久,觉得说的第二种方案最可行,我们只负责写方法,他们可以轮回调用,有一点点数据延迟是允许的。
双方用WebService来实现,首先确定整体流程,该谁实现的谁就实现,然后确定接口函数,函数参数、参数类型等,每次调用都返回统一的参数告知对方,这样就可以成功了。
您好,很感谢您的积极回答。
您说的和上面那位仁兄的第一种情况一样。
但是我们有一个问题:就是我们系统是一个比较通用的系统,会有很多系统调用我们的接口,我们不能够把调用我们系统的对方地址都获取并保存,而且还要对方系统有相应的接口,这个方案可行性不高,如果是单独的两个系统对接,这个是完全可以的。
@郑智平: 做医疗行业的?
@az235: 各种行业都会有这种业务吧,比如淘宝的开放API,也是一样的方式
@丁学: 淘宝这种根本就不用这么复杂,只有医疗行业的最复杂。
@az235: 不巧在下两个行业都做过,兄弟小看电商了啊
这个问题支付宝的接口就实现了啊。首先提供一个标准的接口供对方调用,提交的参数中要有一个接收通知的接口地址,你们把返回的状态信息通过他们提供的地址返回回去,他们接受成功后返回给你success,否则你们要继续通知。
你好,我想问一下你们系统怎么对接的?