// Rhino engine (engine type: 0) to use E4X
//////// START "main()" ////////
main();
function main(){
//// == Config Retrieving / 工程コンフィグの参照 ==
var appId = configs.get( "conf_AppId" ) + ""; // required
var dataIdB = configs.get( "conf_DataIdB" ) + ""; // required
var dataIdC = configs.get( "conf_DataIdC" ) + "";
var dataIdD = configs.get( "conf_DataIdD" ) + "";
var dataIdE = configs.get( "conf_DataIdE" ) + "";
var dataIdF = configs.get( "conf_DataIdF" ) + "";
var dataIdG = configs.get( "conf_DataIdG" ) + "";
// 'java.lang.String' (String Obj) to javascript primitive 'string'
//// == Data Retrieving / ワークフローデータの参照 ==
var strCorpNum = "";
if( engine.findDataDefinitionByNumber( dataIdB ).matchDataType( "SELECT_SINGLE" ) ){
strCorpNum = engine.findDataByNumber( dataIdB ).get(0).getValue() + "";
}else{
strCorpNum = engine.findDataByNumber( dataIdB ) + "";
}
//// == Calculating / 演算 ==
// prepare API Request
var apiRequest = httpClient.begin(); // HttpRequestWrapper
// - com.questetra.bpms.core.event.scripttask.HttpClientWrapper
apiRequest = apiRequest.queryParam( "id", appId );
apiRequest = apiRequest.queryParam( "number", strCorpNum );
apiRequest = apiRequest.queryParam( "type", 12 ); // Response Format: XML
apiRequest = apiRequest.queryParam( "history", 0 );
// access API (with get())
var response = apiRequest.get( "https://api.houjin-bangou.nta.go.jp/3/num" );
var httpStatus = response.getStatusCode() + ""; // HttpResponseWrapper
var responseStr = response.getResponseAsString() + "";
engine.log( "GET [Corp Info]: " + httpStatus );
engine.log( " responseStr: \n" + responseStr ); // for debug
if( httpStatus !== "200" ){
var errorMessage = "\n- HTTP STATUS is not 200, Service Task stopped. -\n";
errorMessage += responseStr + "\n";
throw new Error( errorMessage );
}
// parse XML (ECMAScript for XML (E4X))
responseStr = responseStr.replace(/^<\?xml\s+version\s*=\s*(["'])[^\1]+\1[^?]*\?>/, "");
// E4X bug 336551
var xmlObj = new XML( responseStr );
var strCorpName = xmlObj.corporation[0].name + "";
var strCorpPostCode = xmlObj.corporation[0].postCode + "";
var strCorpAddress = xmlObj.corporation[0].prefectureName + "";
strCorpAddress += xmlObj.corporation[0].cityName + "";
strCorpAddress += xmlObj.corporation[0].streetNumber + "";
var strCorpFurigana = xmlObj.corporation[0].furigana + "";
var strCorpUpdate = xmlObj.corporation[0].updateDate + "";
//// == Data Updating / ワークフローデータへの代入 ==
if( dataIdC !== "" ){
engine.setDataByNumber( dataIdC, strCorpName );
}
if( dataIdD !== "" ){
engine.setDataByNumber( dataIdD, strCorpPostCode );
}
if( dataIdE !== "" ){
engine.setDataByNumber( dataIdE, strCorpAddress );
}
if( dataIdF !== "" ){
engine.setDataByNumber( dataIdF, strCorpFurigana );
}
if( dataIdG !== "" ){
engine.setDataByNumber( dataIdG, java.sql.Date.valueOf(strCorpUpdate) );
}
} //////// END "main()" ////////