fc2ブログ

申請書と基幹システムの連携

基幹システムは RedHat4.5 に WebSphere V6.1 + Oracle10g、クライアントは Windows2000 に IE6。Dominoは8.5 x64、クライアントは 6.56。
基幹システムはベンダーが開発、Notesは自社開発。これが当社の環境です。

ベンダーはNotes開発未経験、基幹システムの自社開発は保守の絡みでダメ。そんなで承認済みのNotes申請書の内容を基幹システムへ連携できていません。連携する方法は CSV吸い上げやバッチプログラム・・・1文書に対して1レコードを追加なら他愛もないのですが、1トランザクションのテーブル数が多いのも手付かずの理由にあります。まぁ開発予算が全くないのが一番の理由で、ベンダーも相手してくれないのは当然です。

とうに諦めていた折、今年始めにコメントスパムの被害を受けたときに自社開発でできる連携方法を思い付きました。それは基幹システムの入力画面の項目にNotes文書をセットする方法で、サンプルとしてNotesフォームの項目内容をGoogle の検索キー項目にセットしてみます。

(1) フォームを用意して項目とボタンを追加。
転送

(2) ボタンのClickイベントに下記のLotusScriptを記述。
Declare Function SetForegroundWindow Lib "user32" (Byval hWnd As Long) As Long
Declare Function IsIconic Lib "user32" (Byval hWnd As Long) As Long
Declare Function ShowWindowAsync Lib "user32" (Byval hWnd As Long, Byval nCmdShow As Long) As Long
Const SW_RESTORE& = 9

Sub Click(Source As Button)
  Dim UIWorkspace As New NotesUIWorkspace
  Dim UIDocument As NotesUIDocument
  Dim ShellApp As Variant
  Dim Windows As Variant
  Dim IExplore As Variant
  Dim IExplores() As Variant
  Dim TITLES() As String
  Dim TITLE As Variant
  Dim t As Integer
  Dim e As Integer
  Dim i As Integer
  Dim hWnd As Long
  
  Set UIDocument = UIWorkspace.CurrentDocument
  Set ShellApp = CreateObject("Shell.Application")
  Set Windows = ShellApp.Windows()
  For i = Windows.Count To 1 Step -1
    Set IExplore = Windows.Item(Windows.Count - i)
    If Instr(Strconv(IExplore.FullName, 2), "iexplore.exe") > 0 Then
      If Left(IExplore.Document.URL, 23) = "http://www.google.co.jp" Then
        Redim Preserve IExplores(e)
        Set IExplores(e) = IExplore
        e = e + 1
      End If
    End If
  Next
  If e = 1 Then
    t = 0
  Elseif e > 1 Then
    Redim TITLES(e - 1)
    For i = 0 To e - 1
      TITLES(i) = i + 1 & "番目"
    Next
    TITLE = UIWorkspace.Prompt(4, "転送", "Googleが複数開かれています。転送する画面を選択してください。", , TITLES)
    If Isempty(TITLE) Then
      Exit Sub
    End If
    t = Arraygetindex(TITLES, TITLE)
  Else
    Msgbox "Googleを開いてください。", 0 + 48, "転送"
    Exit Sub
  End If
  IExplores(t).Document.GetElementsByName("q")(0).Value  = UIDocument.FieldGetText("KEY")
  Msgbox "Googleへ転送しました。", 0 + 64, "転送"
  hWnd = IExplores(t).hWnd
  If IsIconic(hWnd) Then
    Call ShowWindowAsync(hWnd, SW_RESTORE)
  End If
  SetForegroundWindow hWnd
End Sub

IEでGoogleを開き、作ったフォームを実行すると
転送

機械を修理するために部品購入の申請書があります。承認になった後で機械の廃棄が決まり結局購入しない場合もあり、基幹システムに取り込む前にワンクッション意思入れが必要になります。そのような場合、いわゆるコピペ連携も悪くはないのではと思っています。

森と水のエコクイズ2010
森と水のエコクイズ2010
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

ピヨパパ

Author:ピヨパパ
静岡市のエンドユーザーSE。
最近はDominoの開発ばかりでうんざり。
是非気軽にコメントして下さい。

FC2カウンター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる