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

基幹システムは 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を記述。
IEでGoogleを開き、作ったフォームを実行すると

機械を修理するために部品購入の申請書があります。承認になった後で機械の廃棄が決まり結局購入しない場合もあり、基幹システムに取り込む前にワンクッション意思入れが必要になります。そのような場合、いわゆるコピペ連携も悪くはないのではと思っています。
基幹システムはベンダーが開発、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
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を開き、作ったフォームを実行すると

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