实现附件文件中的“统一接入服务” 使用httpInput post提交需求是这样的:
由于这边需要集成到总线上的厂家有多个,因此有多个信息系统,由于部分业务流程非常复杂,因此可能其他厂家需要直接调用MQ的发送和接收的函数,但是发送和接收也不能直接给他们用,因为有可能造成的情况是,他们胡乱调用,造成esb瘫痪或者其他问题,而这种情况发生的话我们也不容易发现问题所在,是谁调用导致问题的发生,因此我想到的办法就是,我将MQ发送的函数封装成webservice,其他厂家都需要安全验证来进行调用,若需要回调,则其他厂家调用的时候带上回调的webservice地址,也就是说,其他厂家需要发布一个接收MQ反馈信息的webservice,其他厂家调用我这边MQ发送的webservice之后,由我这边通过调用其他厂家的webservice将反馈信息传递给他们。
现在的问题是,如何使用HttpInput节点进行post提交
get提交我已经实现了,方法如下:
http input -------> Compute --------> http request -------> http reply
http input节点的设置:
Basic(path suffix for url):/ws
Advanced(Parse Query String):勾上
Compute节点设置:
指定data source
ESQL module如下
CREATE COMPUTE MODULE ws_Compute
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
declare url character;
declare queryString character;
declare ws_id character;
CALL CopyMessageHeaders();
CALL CopyEntireMessage();
set queryString = InputRoot.HTTPInputHeader."X-Query-String";
set url = 'http://192.168.100.120:3344/Send.jsp?' || queryString;
set OutputLocalEnvironment.Destination.HTTP.RequestURL = url;
set OutputLocalEnvironment.Destination.HTTP.RequestLine.Method = 'GET';
RETURN TRUE;
END;
CREATE PROCEDURE CopyMessageHeaders() BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER;
SET J = CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;
CREATE PROCEDURE CopyEntireMessage() BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE;
上面的实现了get提交的方式,但是post提交的方式就不知道怎么弄了 哪位大哥会的帮帮忙
我是上述需求,跟以下附件解决方案中55页和70页图中的“统一接入服务”差不多 忘各位高手出手相助如何实现附件:
基于SOA的应用集成平台规范.part1.rar (6.68 MB)
基于SOA的应用集成平台规范.part2.rar (2.22 MB)