Questetra ロールメンバー削除

Questetra の「ロール」からメンバーを削除し、通信ログを文字型データ項目に格納します
Questetra ロールメンバー削除
Questetra-rolemembershipDel-20171211-addonxml.txt
(md5:c1d533fee50780ef223d5bb76c12aa2c)

    • B’: Bで選択したデータ項目に格納されているロール
    • C’: Cで選択したデータ項目に格納されているユーザ
    • ユーザ C’ をロール B’ から削除します
    • 通信ログが、Xで選択したデータ項目に格納されます
    • [システム設定]>[APIクライアント]>[OAuth2 クライアント一覧]より、「OAuth2 クライアント」を登録し、「クライアントID」「クライアントシークレット」を取得してください

    A. OAuth2通信許可設定名 (←[OAuth 2.0 設定])単一行記述必須
    A2. Application-Root URI をセットしてください ( https://... )単一行記述EL式挿入も可必須
    B. Qrole ID(ロールID)が格納されている文字列型orチェックボックス型データを選択してくださいデータ項目選択文字列型(単一行)or選択型(チェックボックス)必須
    C. Quser のメールアドレスが格納されている文字列型データorユーザ型データを選択してくださいデータ項目選択ユーザ型or文字列型(単一行)必須
    X. 通信ログが格納される文字列型データを選択してください (更新)データ項目選択文字列型(複数行)
    -設定変数名設定ラベル
    Aconf_OAuth2OAuth2通信許可設定名 (←[OAuth 2.0 設定])
    A2conf_ApplicationRootApplication-Root URI をセットしてください ( https://... )
    Bconf_DataIdBQrole ID(ロールID)が格納されている文字列型orチェックボックス型データを選択してください
    Cconf_DataIdCQuser のメールアドレスが格納されている文字列型データorユーザ型データを選択してください
    Xconf_DataIdX通信ログが格納される文字列型データを選択してください (更新)
    // Deleting a Quser from Qrole via Questetra System Settings API (ver. 20171211)
    // (c) 2017, Questetra, Inc. (the MIT License)
    
    //// == Config Retrieving / 工程コンフィグの参照 ==
    var oauth2  = configs.get( "conf_OAuth2" ) + "";
    var applicationRoot = configs.get( "conf_ApplicationRoot" ) + "";
    var dataIdB = configs.get( "conf_DataIdB" ) + "";
    var dataIdC = configs.get( "conf_DataIdC" ) + "";
    var dataIdX = configs.get( "conf_DataIdX" ) + "";
    // convert 'java.lang.String' to 'javascript string'
    
    
    //// == Data Retrieving / ワークフローデータの参照 ==
    var targetGroups = [];
    if( engine.findDataDefinitionByNumber( dataIdB ).matchDataType("SELECT_CHECKBOX") ){
      var selectedGroups = engine.findDataByNumber( dataIdB );
      for( var i = 0; i < selectedGroups.size(); i++ ){ // java.util.ArrayList
        var pushGroup = selectedGroups.get(i).getValue() + "";
        targetGroups.push( pushGroup );
      }
    }else{
      var pushGroup = engine.findDataByNumber( dataIdB ) + "";
      targetGroups.push( pushGroup );
    }
    var userId = "";
    if( engine.findDataDefinitionByNumber( dataIdC ).matchDataType("QUSER") ){
      userId = engine.findDataByNumber( dataIdC ).getId() + "";
      // com.questetra.bpms.core.event.scripttask.QuserView	
    }else{
      var userEmail = engine.findDataByNumber( dataIdC ) + "";
      userId = quserDao.findByEmail( userEmail ).getId() + "";
    }
    
    
    //// == Calculating / 演算 ==
    var accessLog = "";
    var token  = httpClient.getOAuth2Token( oauth2 );
    var apiUri = applicationRoot + "API/UGA/RoleMembership/delete";
    
    for( var i = 0; i < targetGroups.length; i++  ){ // javascript array
      // preparing for API Request
      var apiRequest = httpClient.begin(); // HttpRequestWrapper
      // com.questetra.bpms.core.event.scripttask.HttpClientWrapper
      apiRequest = apiRequest.bearer( token );
      apiRequest = apiRequest.formParam( "quserId",  userId );
      apiRequest = apiRequest.formParam( "qroleId", targetGroups[i] );
    
      // Access to the API (POST, GET, PUT, etc)
      var response = apiRequest.post( apiUri ); // HttpResponseWrapper
      var httpStatus = response.getStatusCode() + "";
      accessLog = "---POST request--- " + httpStatus + "\n";
      accessLog += response.getResponseAsString() + "\n";
    
      // Error Handling
      if( httpStatus !== "200" ){
        if( dataIdX !== "" ){ engine.setDataByNumber( dataIdX, accessLog ); }
        throw new Error( accessLog );
      }
    }
    
    
    //// == Data Updating / ワークフローデータへの代入 ==
    if ( dataIdX !== "" ){ engine.setDataByNumber( dataIdX, accessLog ); }