開発Blog

SVF(SuperVisualFormade)とintra-martの連携について

投稿日:


※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。
最新のintra-martでは、異なる情報であることがありますので、ご注意ください。


最近、SuperVisualFormade(以下SVF)との連携を要望されるお客様が増えてまいりま した。このコラムでは、intra-martベースモジュール/フレームワークとSVFとの連携方法について詳述いたします(J2EE開発モデルでの連携方法です)。

(1)SVFの概要
図のようにユーザAPIからSVFAPI経由でSVFを呼び出します。

(2)SVF機能一覧
以下にSVFを利用する際の機能一覧を記します。

(3)コーディング例

JAVAサンプルプログラム(クエリー使用)

package servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import jp.co.fit.vfreport.*;      //SVF for WEB パッケージのインポート
public class Servlet_Sample extends HttpServlet{
static Vrw32 svf = new Vrw32();     //PDF生成クラスのインスタンス生成
static int ret;     //グローバル変数の初期化
public void init(ServletConfig config)throws ServletException{
super.init(config);     //HTTP Post リクエストの処理
}
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
PrintWriter out = new PrintWriter(response.getOutputStream());
response.setContentType("text/html");
ret = svf.Vrinit();     //クラスの初期化
ret = svf.VrSetDocName2("レポートライターサンプル1");     //PDFファイルのドキュメント名の設定
ret = svf.VrSetSpoolFileName2("D:\\demo\\sample.pdf");     //PDFファイル名の設定
ret = svf.VrSetForm("Sample.frm",5);     //SVFで設計したフォームの設定/
ret = svf.VrSetQuery("UID=scott;PWD=tiger","D:\\servlet\\Sample.vrq",0);    // クエリーファイルの設定
ret = svf.VrCondition("DEPTNO=10",0);     //クエリーの条件(Where句)の設定/
ret = svf.VrReport();     //クエリーの実行
ret = svf.VrPrint();     //PDFファイルの出力
ret = svf.VrQuit();     //PDFファイル出力処理終了
out.println("<html><body leftmargin=0 topmargin=0 scroll=no>)
<embed width=100% height=100% fullscreen=yes
src=\"http://10.15.20.105/DEMO/sample.pdf\"></body></html>");     //作成されたPDFファイルをブラウザに表示
out.close();
}
}


JAVAサンプルプログラム(アプリケーション側で データ抽出の場合)

package servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import jp.co.fit.vfreport.*;     //SVF for WEB パッケージのインポート
public class Servlet_Sample2 extends HttpServlet{
static Vrw32 svf = new Vrw32();     //PDF生成クラスのインスタンス生成
static int ret;     //グローバル変数の初期化
public void init(ServletConfig config)throws ServletException{
super.init(config);     //HTTP Post リクエストの処理
}
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
PrintWriter out = new PrintWriter(response.getOutputStream());
response.setContentType("text/html");
ret = svf.Vrinit();     //クラスの初期化
ret = svf.VrSetDocName2("レポートライターサンプル1");     //PDFファイルのドキュメント名の設定
ret = svf.VrSetSpoolFileName2("D:\\demo\sample.pdf");     //PDFファイル名の設定
ret = svf.VrSetForm("Sample.frm",4);     //SVFで設計したフォームの設定/
ret = svf.VrsOut("DEPTNO","10" );     //フィールドにデータを貼り付け
ret = svf.VrsOut("DNAME","SALES" );
ret = svf.VrsOut("LOC" ,"CHICAGO");
ret = svf.VrsOut("EMPNO","7844" );
ret = svf.VrEndRecord();     //レコードの出力
ret = svf.VrPrint();     //PDFファイルの出力
ret = svf.VrQuit();     //PDFファイル出力処理終了
(PDFファイルが生成される)
out.println("<html><body leftmargin=0 topmargin=0 scroll=no>)
<embed width=100% height=100% fullscreen=yes
src=\"http://10.15.20.105/DEMO/sample.pdf\"></body></html>");     //作成されたPDFファイルをブラウザに表示
out.close();
}
}


JAVAサンプルプログラム (PDFファイルを作らない方法)

package servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import jp.co.fit.vfreport.*;     //SVF for WEB パッケージのインポート
public class Servlet_Sample2 extends HttpServlet{
static Vrw32 svf = new Vrw32();     //PDF生成クラスのインスタンス生成
static int ret;     //グローバル変数の初期化
public void init(ServletConfig config)throws ServletException{
super.init(config);     //HTTP Post リクエストの処理
}
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
PrintWriter out = new PrintWriter(response.getOutputStream());
response.setContentType("application/pdf");
OutputStream os = response.getOutputStram();

ret = svf.Vrinit();     //クラスの初期化
ret = svf.VrSetDocName2("レポートライターサンプル1");     //PDFファイルのドキュメント名の設定
ret = svf.VrSetSpoolFileStream(os);     //PDFファイルをメモリー出力の設定
ret = svf.VrSetForm("Sample.frm",4);     //SVFで設計したフォームの設定
ret = svf.VrsOut("DEPTNO","10" );     //フィールドにデータを貼り付け
ret = svf.VrsOut("DNAME","SALES" );
ret = svf.VrsOut("LOC" ,"CHICAGO");
ret = svf.VrsOut("EMPNO","7844" );
ret = svf.VrEndRecord();      //レコードの出力
ret = svf.VrPrint();     //PDFファイルの出力
ret = svf.VrQuit();     //PDFファイル出力処理終了

os.close();     //作成されたPDFファイルをブラウザに表示
}
}


以上を参考に連携プログラムを作成してみてください。
ちなみにページベース開発モデルのJavaScriptからはLiveConect(Java呼び出し)を使えばできます。
SVFの提供しているのはJAVAのAPIのみなので、JavaScriptのAPIとして使いたい場合は、こちらでSVFのJAVAのAPIをラップし て、JavaScriptのAPIを作ってあげる必要があります。

以上

-開発Blog
-

執筆者:

関連記事

no image

intra-mart Advent Calendar 2013 第23日:iWP/iAFでJSP1ファイルだけで、任意の画面を呼び出す方法

この記事は、intra-mart Advent Calendar 2013 第23日の記事です。 Accel Platformの機能紹介を行ってきたintra-mart Advent Calender …

no image

1pxへのこだわり♪

IM-FormaDesignerでは、Webブラウザ上でアプリを作ることができます。 まもなくリリース予定のパッチ2では、フォーム・デザイナに関して以下の3つの改善と修正を行います。 要件 [1679 …

no image

e Builder Application ProducerでDB設計♪

こんにちは、開発本部の江本です。 私は現在、e Builder Application Producer の開発をやってます。 e Builder の便利な機能やTips、今後の機能強化などについてブ …

no image

統合検索モジュール(ConceptBase連携)について

※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。最新のintra-martでは、異なる情報であることがありますので、ご注意ください。 ベースモジュールver2.2(または …

no image

IM-共通マスタ CSVスナップショットインポートのパフォーマンス検証

WebPlatform/AppFramework Ver.7.2 パッチ6の要件16570にて、IM-共通マスタからアプリケーション共通マスタへの同期処理のパフォーマンス改善を行い、下記効果を確認しま …