以下の2つのケースでTeamWARE USPを使用したシナリオ記述例を示します。
添付ファイルなしのリクエストの場合
添付ファイル付きのリクエストの場合
添付ファイルなしのリクエスト
以下の例は、自プロフィール参照を行うシナリオの作成例です。
TeamWAREに対して、自プロフィール情報の取得要求を行い、結果をそのまま画面に出力します。
PWScenarioParcelクラスのオブジェクトにXMLリクエストデータを設定します。
その際に、以下の設定が必要です。
パラメータの設定を行います。
sponsorAction に「request」を、httpMethodに「POST」を指定します。
Hashtable uspParam = new Hashtable(); uspParam.put("sponsorAction","request"); uspParam.put("httpMethod","POST");
Content-Typeには、「text/xml」を指定します。
同時に、このリクエストで送るXMLデータの「character encoding」の種類を以下のように指定します。
<pwst:parcelHeader name="Content-Type" value="text/xml; charset=utf-8"/>
<%@ page contentType="text/html; charset=UTF-8" %> <%@ page import="java.util.*" %> <%@ include file="/scenario/scenarioInit.jsp" %> <pwst:prologueScenario result="ps" debugFile="scenarioDebug.txt"/> <!--XMLリクエストの作成(コンテンツを直接書く方法)--> <pwst:parcel parcel="part1" > <pwst:parcelHeader name="Content-Type" value="text/xml; charset=utf-8"/> <pwst:parcelBody encoding="UTF-8" > <?xml version="1.0" encoding="UTF-8" ?> <teamware version="1.0" xmlversion="1.0" xmlns="urn:xmlns-fujitsu-com:tw2001-09"> <service>Directory</service> <head> <title>Get personal profile</title> </head> <body> <service>Directory</service> <dirownproperties>0</dirownproperties> <template_name>dir/get_personalprof.xml</template_name> <auth>required</auth> </body> </teamware> </pwst:parcelBody> </pwst:parcel> <!--リクエストの送信--> <% Hashtable uspParam = new Hashtable(); uspParam.put("sponsorAction","request"); uspParam.put("httpMethod","POST"); %> <pwst:call service="TWUSP" type="XML" sendDataObject="<%= part1 %>" paramObject="<%= uspParam %>" result="callResult" /> <pwst:epilogueScenario/> <% if (callResult.getReturnCode() != 0) { %> <br> callResult.getReturnCode = <%= callResult.getReturnCode() %> <br> callResult.getDetailCode = <%= callResult.getDetailCode() %> <br> callResult.getErrorMessage = <%= callResult.getErrorMessage() %> <br> <% } else { %> <jsp:forward page="uspDoc.jsp"/> <% } %>
<%@ page contentType="text/html; charset=UTF-8" %> <%@ include file="/scenario/docInit.jsp" %> <pwst:prologueDoc/> <pwst:receive timeout="60" type="XML" result="receiveResult"/> <% if(receiveResult.getReturnCode() != 0) { %> <br> receiveResult.getReturnCode=<%=receiveResult.getReturnCode()%> <br> receiveResult.getDetailCode=<%=receiveResult.getDetailCode()%> <br> <% } else { Object receiveObject; receiveObject=receiveResult.getXmlContent(); if (receiveObject == null) { receiveObject="### no receive XML data###"; } scenarioContext.contentToResponse(receiveObject); } %> <pwst:epilogueDoc/>
添付ファイル付きのリクエスト
以下の例は、メール送信を行うシナリオの作成例です。
TeamWAREに対して、メール送信要求を行い、処理結果をそのまま画面に出力します。
PWScenarioParcelクラスのオブジェクトにXMLリクエストデータを設定します。
その際に、以下の設定が必要です。
パラメータの設定を行います。sponsorActionに「request」を、httpMethodに「POST」を指定します。
Hashtable uspParam = new Hashtable(); uspParam.put("sponsorAction","request"); uspParam.put("httpMethod","POST");
Content-Typeには、「multipart/related」を指定します。
同時に、このリクエストの最初のパートで送られるXMLデータのコンテントタイプを指定します。つねに、「type=text/xml」となります。
最後に、このリクエストの最初のパートのコンテンツIDを指定します。「boundary」は自動的に付加されるので、ここで指定する必要はありません。
<pwst:parcel parcel="multiPart"/> <pwst:parcelHeader name="Content-Type" value="multipart/related; type=text/xml; start="<%=cid1%>"/> </pwst:parcel>
1つめのパートの情報設定します。
Content-Type、Content-Disposition、Content-IDを指定します。
<pwst:parcelHeader name="Content-Type" value="text/xml; charset=utf-8"/> <pwst:parcelHeader name="Content-Disposition" value=""form-data; name=\"start\"/> <pwst:parcelHeader name="Content-ID" value="<%=cid1%>"/>
2つめのパートの情報設定します。
Content-Type、Content-Disposition、Content-IDを指定します。
part2Headers = new Hashtable(); part2Headers.put("Content-Type", "text/plain; charset=Shift_JIS"); part2Headers.put("Content-Disposition", "form-data; name=\"attachment\"; filename=\"E:\doc\agenda.txt\""); part2Headers.put("Content-ID", cid2);
<%@ page contentType="text/html; charset=UTF-8" %> <%@ page import="java.util.*" %> <%@ include file="/scenario/scenarioInit.jsp" %> <pwst:prologueScenario result="ps" debugFile="scenarioDebug.txt"/> <% /* コンテンツIDの設定 */ String cid1 = "<SendMessageRequest@twsrv.fujitsu.com>"; String cid2 = "<E:\\doc\\agenda.txt@twsrv.fujitsu.com>"; %> <!--1個目のパートの作成(コンテンツを直接書く方法)--> <pwst:parcel parcel="part1" > <pwst:parcelHeader name="Content-Type" value="text/xml; charset=utf-8"/> <pwst:parcelHeader name="Content-Disposition" value="form-data; name=\"start\""/> <pwst:parcelHeader name="Content-ID" value="<%=cid1%>" /> <pwst:parcelBody encoding="UTF-8" > <?xml version="1.0" encoding="UTF-8" ?> <teamware version="1.0" xmlversion="1.0" xmlns="urn:xmlns-fujitsu-com:tw2001-09"> <service>Mail</service> <head> <title>Send message</title> </head> <body> <service>mail</service> <control_pXML>send</control_pXML> <subject>お知らせ</subject> <description> 会議を開催します。 日時 10月3日 場所 D303会議室 よろしくお願いします。 </description> <to>hanako</to> <toid>VBEAAAAAAAAADwAAZAAB2~lxKPxU;;;;;hanako</toid> <reply_req>false</reply_req> <importance>normal</importance> <priority>normal</priority> <sensitivity>nonsensitive</sensitivity> <notice>/mail/notice.xml</notice> <success>/mail/notice.xml</success> <fail>/mail/notice.xml</fail> <auth>required</auth> <attachment href="cid:<%=cid2%>" /> </body> </teamware> </pwst:parcelBody> </pwst:parcel> <!--2個目の添付の作成(コンテンツをオブジェクトで指定する方法)--> <% //任意のヘッダを設定 Hashtable part2Headers = new Hashtable(); part2Headers.put("Content-Type", "text/plain; charset=utf-8"); part2Headers.put("Content-Disposition", "form-data; name=\"attachment\"; filename=\"E:\\doc\\agenda.txt\""); part2Headers.put("Content-ID", cid2); String Part2Body="添付ファイルの内容"; %> <pwst:parcel headers="<%=part2Headers%>" parcel="part2"> <pwst:parcelBody encoding="UTF-8" body="<%=Part2Body%>"/> </pwst:parcel> <!--親のコンテンツを作成(マルチパートコンテンツを設定する方法)--> <pwst:parcel parcel="multiPart"> <pwst:parcelHeader name="Content-Type" value="multipart/related; type=text/xml; start=\"<%=cid1%>\""/> </pwst:parcel> <pwst:addParcel parcel="<%=multiPart%>" add="<%=part1%>"/> <pwst:addParcel parcel="<%=multiPart%>" add="<%=part2%>"/> <!--マルチパートコンテンツの送信--> <% Hashtable uspParam = new Hashtable(); uspParam.put("sponsorAction","request"); uspParam.put("httpMethod","POST"); %> <pwst:call service="TWUSP" type="XML" sendDataObject="<%= multiPart %>" paramObject="<%= uspParam %>" result="callResult" /> <pwst:epilogueScenario/> <% if (callResult.getReturnCode() != 0) { %> <br> callResult.getReturnCode = <%= callResult.getReturnCode() %> <br> callResult.getDetailCode = <%= callResult.getDetailCode() %> <br> callResult.getErrorMessage = <%= callResult.getErrorMessage() %> <br> <% }else{ %> <jsp:forward page="uspDoc.jsp"/> <% } %>
<%@ page contentType="text/html; charset=UTF-8" %> <%@ include file="/scenario/docInit.jsp" %> <pwst:prologueDoc/> <pwst:receive timeout="60" type="XML" result="receiveResult"/> <% if(receiveResult.getReturnCode() != 0) { %> <br> receiveResult.getReturnCode=<%=receiveResult.getReturnCode()%> <br> receiveResult.getDetailCode=<%=receiveResult.getDetailCode()%> <br> <% } else { Object receiveObject; receiveObject=receiveResult.getXmlContent(); if (receiveObject == null) { receiveObject="### no receive XML data###"; } scenarioContext.contentToResponse(receiveObject); } %> <pwst:epilogueDoc/>