ページの先頭行へ戻る
Interstage Interaction Manager V9.1.1 Interstage Portalworksシナリオ作成支援ガイド

1.4.1 TeamWARE USPによるシナリオ作成例

以下の2つのケースでTeamWARE USPを使用したシナリオ記述例を示します。

添付ファイルなしのリクエスト

シナリオ実行概要

以下の例は、自プロフィール参照を行うシナリオの作成例です。

TeamWAREに対して、自プロフィール情報の取得要求を行い、結果をそのまま画面に出力します。

自プロフィール参照を行うアクティブシナリオJSP(uspScenario.jsp)

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"/>
    <% 
    } 
    %>
    
結果を出力するアクティブドックJSP(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に対して、メール送信要求を行い、処理結果をそのまま画面に出力します。

メール送信を行うアクティブシナリオJSP(uspScenario.jsp)

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"/>
    
    <% } %>
    
結果を出力するアクティブドックJSP(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/>