Hitachi

uCosminexus Service Coordinator Interactive Workflow BPMN連携機能 使用の手引


6.4.1 RESTアプリケーションの実装例

RESTアプリケーションを構成するJavaプログラムの実装例を示します。この例では,RESTアプリケーションは3つのJavaプログラムで構成されています。

〈この項の構成〉

(1) PartsInfoService.java

PartsInfoService.javaは,RESTアプリケーションのルートリソースクラスのソースファイルです。「<コンテキストルート> + "/parts/order"」のURLに対するPOSTリクエストを受信するリソースメソッドorderを持っています。

PartsInfoService.javaの実装例

package xxx.usrapp;

import java.util.List;
import java.util.Calendar;

import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

/**
 * BPMSから呼び出されるRESTアプリケーションです。
 */
@Path("/parts")
public class PartsInfoService {

  /**
   * BPMSから呼び出されるメソッドです。
   * @param reqData リクエストデータ
   * @return レスポンスデータ
   */
  @POST
  @Produces({"application/xml;charset=UTF-8"})
  @Path("order")
  public CSCIWRestBody order(CSCIWRestBody reqData) {

    //リクエストデータの取得
    if (reqData != null) {
      List<CSCIWData> list = reqData.getDataList();
      if (list != null) {
        for (CSCIWData d : list) {
          System.out.println(
            String.format("AppInfo: key=%1$s, value=%2$s", d.getKey(), d.getValue())
          );
        }
      }
    }

    //レスポンスデータの作成
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.DATE, cal.get(Calendar.DATE)+5);
    CSCIWData data = new CSCIWData("schedule", cal.getTime().toString());
    CSCIWRestBody res = new CSCIWRestBody();
    res.add(data);

    return res;
  }
}

(2) CSCIWRestBody.java

CSCIWRestBody.javaは,RESTアプリケーションが送受信するエンティティのcsciwRestBody要素のソースファイルです。CSCIWRestBody.javaは,data要素を子要素として持っています。data要素は,任意の数を指定できます。

CSCIWRestBody.javaの実装例

package xxx.usrapp;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * RESTアプリケーション送受信データのクラスです。
 */
@XmlRootElement(name="csciwRestBody")
public class CSCIWRestBody {

  private List<CSCIWData> list = new ArrayList<CSCIWData>();

  @XmlElement(name="data")
  public List<CSCIWData> getDataList() { return list; }
  public void setDataList(List<CSCIWData> l) { list = l; }

  /**
   * 指定されたデータをリストに追加します。
   * @param data 追加するデータ
   */
  public void add(CSCIWData data) {
    list.add(data);
  }
}

(3) CSCIWData.java

CSCIWData.javaは,RESTアプリケーションが送受信するエンティティのcsciwRestBody要素の子要素である,data要素のソースファイルです。data要素は,子要素としてkey要素およびvalue要素を1つずつ持っています。key要素およびvalue要素のデータ型は,string型です。

CSCIWData.javaの実装例

package xxx.usrapp;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * RESTアプリケーション送受信データのクラスです。
 */
@XmlRootElement(name="data")
public class CSCIWData {

  private String key = "";   //キー
  private String value = ""; //値

  /** コンストラクタ */
  public CSCIWData(){}
  public CSCIWData(String k, String v){ key = k; value = v; }

  @XmlElement(name="key")
  public String getKey() { return key; }
  public void setKey(String k) { key = k; }

  @XmlElement(name="value")
  public String getValue() { return value; }
  public void setValue(String v) { value = v; }
}