Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Removed translated content for 'zh'
Sv translation
languageen

You can create your own API Endpoints using BellaDati Extensions feature. This tutorial describes how to create an endpoint which exports public Report to XLS.

You can download complete Extension with an endpoint here and import it to BellaDati Extensions. Refer to Importing Extensions section in Extensions documentation.

Preconditions

  • You have BellaDati instance in version 2.8.6.2+.
  • You have role Super Admin in multi-domain environment or Domain Admin in single-domain environment.
  • You are familiar with Java/Groovy.
  • You have a public Report. Refer to Public Report section in Sharing Report documentation.

Tutorial

Step 1. Create an Extension

  1. Go to Manage extensions page that is available in the Extensions section, under Administration menu.
  2. Click on Create extension 
  3. Create an Extension with type Create new page


Step 2. Create an API Endpoint in Extension

After creating the Extension you should be redirected to Extension detail.

  1. In the panel on the left click on API Endpoints
  2. Click on Add button
  3. Name the endpoint and click on Add

Step 3. Write code which will export Report to XLS and send it to client

After creating the Endpoint you should be redirected to Endpoint detail with code editor where you can write/paste your code.

In the Endpoint class are 2 methods, doGet() and doPost(). Each will be executed based on the endpoint call method (GET/POST).

We will call this endpoint as GET so we will write the code in the doGet() method. Refer to the code below:

Code Block
languagejava
package com.example;

import com.belladati.extension.BaseExtensionEndpoint;
import org.apache.tapestry5.StreamResponse;

public class MyEndpoint extends BaseExtensionEndpoint {
  
	@Override
	public StreamResponse doGet() {
      try {
        // get parameter value from URL
      	def reportIdParameter = getParameter("reportId");
        int reportId = reportIdParameter.toInteger();
        // export Report to xls
        File xlsFile = exportToXLS(reportId);
        InputStream is = new FileInputStream(xlsFile);
        
        /**
         * @param is data which are sent to client
         * @param mimeType MIME type of data
         * @param responseStatusCode response status
         */
        // createStreamResponse( InputStream is, String mimeType, int responseStatusCode)
        
       	// send Report exported as xls to client  
        return createStreamResponse(is, "application/vnd.ms-excel", 200);
      } catch (Exception e) {
            return createStreamResponse(e);
      }
	}
	@Override
	public StreamResponse doPost() {
		// TODO Auto-generated method stub. Please insert here your code for POST operation.
		return null;
	}
}

Step 4. Endpoint usage

Extension has to be activated before the endpoint can be used. We also have to activate Public access so public users will be able to use the endpoint.

Endpoint is now ready to use so we can try it. 

Clicking on Link above the code editor will open URL with our endpoint. We just have to append parameter "reportId" with ID of Report which should be exported (refer to implementation above).

Your URL should look like this:

Code Block
languagejs
https://service.belladati.com/extension/detail:endpoint/104/exportReportToXLS?reportId=12345

Example usage in HTML:

Code Block
languagexml
<!--Using download attribute-->
<!--Clicking on the button will open "Save as" prompt-->
<a 
 href="/extension/detail:endpoint/104/exportReportToXLS?reportId=12345"
 download="Revenue_March2017.xls"
>
 <div class="my-button">
  Export to XLS
 </div>
</a>
Sv translation
languageja

拡張を使用して、独自のAPIエンドポイントを作成できます。このチュートリアルでは、パブリックレポートをXLSにエクスポートするエンドポイントを作成する方法について説明します。

ここからエンドポイントを含む完全な拡張機能をダウンロードして、BellaDati拡張機能にインポートできます。拡張機能の「拡張機能のインポート」セクションを参照してください。

前提条件

  • BellaDati 2.8.6.2以降であること。
  • マルチドメイン環境ではSuper Admin、シングルドメイン環境ではドメイン管理者の役割を持っていること。
  • Java / Groovyに精通していること。
  • パブリックレポートであること。レポートの共有の「パブリックレポート」のセクションを参照してください。

チュートリアル

Step 1. 拡張機能の作成

  1. [管理]メニューの[拡張機能]セクションにある[拡張機能を管理する]ページに移動します。
  2. [拡張機能を作成する]をクリックします。
  3. [新しいページを作成する]タイプの拡張機能を作成します。


Step 2. 拡張機能でAPIエンドポイントを作成する

拡張機能を作成した後、拡張機能の詳細にリダイレクトする必要があります。

  1. 左側のパネルで、[APIエンドポイント]をクリックします。
  2. [追加する]ボタンをクリックします。
  3. エンドポイントに名前を付けて、[追加する]をクリックします。

Step 3. レポートをXLSにエクスポートしてクライアントに送信するコードを記述します

エンドポイントを作成した後、コードを記述/貼り付けることができるコードエディタを使用して、エンドポイントの詳細にリダイレクトする必要があります。

Endpointクラスには、 doGet()とdoPost()の2つのメソッドがあります。それぞれがエンドポイント呼び出しメソッド(GET/POST)に基づいて実行されます。

このエンドポイントをGETで呼び出すために、doGet()メソッドでコードを記述します。以下のコードを参照してください:

Code Block
languagejava
package com.example;

import com.belladati.extension.BaseExtensionEndpoint;
import org.apache.tapestry5.StreamResponse;

public class MyEndpoint extends BaseExtensionEndpoint {
  
	@Override
	public StreamResponse doGet() {
      try {
        // get parameter value from URL
      	def reportIdParameter = getParameter("reportId");
        int reportId = reportIdParameter.toInteger();
        // export Report to xls
        File xlsFile = exportToXLS(reportId);
        InputStream is = new FileInputStream(xlsFile);
        
        /**
         * @param is data which are sent to client
         * @param mimeType MIME type of data
         * @param responseStatusCode response status
         */
        // createStreamResponse( InputStream is, String mimeType, int responseStatusCode)
        
       	// send Report exported as xls to client  
        return createStreamResponse(is, "application/vnd.ms-excel", 200);
      } catch (Exception e) {
            return createStreamResponse(e);
      }
	}
	@Override
	public StreamResponse doPost() {
		// TODO Auto-generated method stub. Please insert here your code for POST operation.
		return null;
	}
}

Step 4. エンドポイントの使用

エンドポイントを使用する前に、拡張機能をアクティブ化する必要があります。また、パブリックユーザーがエンドポイントを使用できるように、パブリックアクセスをアクティブ化する必要があります。


これでエンドポイントを使用する準備ができたので、試してみることができます。

コードエディタの上にあるリンクをクリックすると、エンドポイントを含むURLが開きます。エクスポートするレポートのIDを、"reportId"パラメーターに追加するだけです(上記の実装を参照)。

URLは次のようになります:

Code Block
languagejs
https://service.belladati.com/extension/detail:endpoint/104/exportReportToXLS?reportId=12345

HTMLでの使用例:

Code Block
languagexml
<!--Using download attribute-->
<!--Clicking on the button will open "Save as" prompt-->
<a 
 href="/extension/detail:endpoint/104/exportReportToXLS?reportId=12345"
 download="Revenue_March2017.xls"
>
 <div class="my-button">
  Export to XLS
 </div>
</a>