2023年4月17日リリース版のTx5.0より、トランザクション自動取込みを、WebAPIにて取込みを行う機能を追加いたしました。
WebAPIは、他システムとの連係に使用するトランザクション自動取込みが、簡易Webサーバー(HTTPSサーバー)として動作し、このHTTPSサーバーのURLへコマンドを送ることで、トランザクション自動取込みを行うことができる機能です。
この機能は、トランザクションインターフェースオプションが必要です。デモ版動作(アイテム件数50件以下)でもお試しいただけます。
TPiCS自体に、HTTPSサーバーが組み込まれており、別途Webサーバーの構築も不要で、複雑なシステム構築もなく、すぐにご利用いただけます。また簡易ながら、待ち受けIPアドレスの指定や、接続を許可するIPアドレス設定できるので、不用意な端末からの実行を防ぐことも可能です。
3通りのリアルタイム連係方法
WebAPIのReadByZID連係
トランザクション自動取込テーブルにInsert後に、WebAPIのReadByZIDコマンドにて取込をする方法です。既存のテーブル連係システムを生かし、WebAPIでZIDを特定したトランザクション取込ができます。
WebAPIのReadDirect連係
連係システムを作成する際にテーブルへの書き込みをせずに、WebAPIのみで連係が可能です。
ストアドプロシージャ経由の連係
既存のテーブル連係システムを生かし、データベース接続にストアドプロシージャを実行して、特定のZIDをトランザクション取込ができます。
連係できるトランザクションデータ
- 計画明細データ(XSLIP)
- 実績データ(XSACT)
- 払出実績データ(XPACT)
- 在庫移動実績データ(XPACT)
- 引落明細データ(XHIKI)
- 引落実績データ(XHACT)
- 受注データ(XRECE)
- 出荷実績データ(XRACT)
- 製番計画データ(XSEIB)
WebAPI動作に必要なオプション
- トランザクションインターフェースオプション
- 取込処理を実行できる稼動クライアント数
1.WebAPIのHTTPSサーバーの動作には
1-1.WebAPIの取込権限ユーザーの登録
WebAPIの取込処理は、[ユーザーとグループの登録]で「API経由のログインを許可」をオン(✓)にしたユーザーのみ実行が可能です。
HTTPサーバーがコマンドを読み取ると、指定されたユーザーでログイン処理が実行され、同時実行ユーザー数に空きがあり、許可されているユーザーであれば取込処理が行われます。取込処理が終わればログアウト処理されます。
このため、通常使用しているユーザーの場合には、TPiCSにログインしてフォームを開いて使用している場面が多く、そのユーザーでは取込処理が行えません。連係専用のユーザーを追加することで両立できます。
TPiCSは同時実行ユーザーライセンスになっており、連係ユーザーの追加のためにの稼働ライセンスの追加は不要ですが、同時実行ユーザー数が不足する場合には稼動ライセンスの追加購入をご検討ください。
1-2.設定の変更
・「トランザクション処理の実行間隔(秒)」ゼロ(動作テストの場合)
[設定]-[定形処理]-[トランザクションインターフェースの設定]-[共通設定]-「トランザクション処理の実行間隔(秒)」をゼロに設定します。
今までのように、実行間隔を設定して定期的な自動取込み処理と、WebAPIによる即時読込の併用も可能ですが、コマンドの実行テストを行うときには、取込状況が分かりづらくなるので、ゼロに設定してからお試しください。
・「 https通信を許可するIPアドレス」(セキュリティを高める場合)
[設定]-[定形処理]-[トランザクションインターフェースの設定]-[自動取込みの設定]-「https通信を許可するIPアドレス」にて、HTTPSサーバーで通信を受け付けるときに、送信元クライアントのIPアドレスの範囲を指定できます。
ローカルネットワーク内のパソコンやタブレット端末、ハンディ端末からのWebAPIコマンドを実行可能に制限する場合に、アドレスに“192.168.*.*”のような、ワイルドカード(*の指定)で設定することができます。
未指定は、すべての端末からのコマンドを実行を許可します。
“192.168.*.*”ならば、192.168.0.0~192.168.255.255のアドレス範囲の送信元を許可します。
1-3.HTTPSサーバー設定と開始
(1)サーバー設定
[トランザクション自動取込み]フォームのヘッダー部の[サーバー設定]にてhttpsサーバーの設定が行えます。
-
☑全てのIPアドレスで待ち受ける ON(デフォルト)
「☑全てのIPアドレスで待ち受ける」をチェックオンで、WebAPIコマンドを待ち受けます。
セキュリティを高めるときには、
「□全てのIPアドレスで待ち受ける」をOFFにし、「指定のIPアドレスで待受ける」に、待ち受けるネットワークカードのIPアドレスを指定します。サーバに複数のネットワークカードが接続されている場合や、優先LANと無線LANが同時に接続されているノートパソコンなどで、特定のネットワークカードのみ通信を許可したい場合に使用します。
-
API URL
連係システムからWebAPIを実行するためのURLです。 -
待受ポートこのHTTPSサーバーが使用する通信ポートです。通常は変更不要です。
Windowsのファイヤーウォールの設定を別途行うとき参考にしていください。
任意に変更することができますが、80(HTTP)や、25(SMTP)、1433(SQL Server)のように他のシステムが使用していポートもあります。一般的に使用されるポートは、ここなどを参考に衝突しないように設定してください。
(2)httpsサーバーも開始 ON
[httpsサーバーも開始]をONにします。この後の[取込開始]ボタンで、WebAPIの待ち受けも開始されます。
(3)WebAPIの取込待ち受け開始
[取込開始]ボタンの押すことでWebAPIの待ち受けが開始されます。
(4)Windowsのファイヤウォール設定
[取込開始]により、Windowsのファイアウォール機能チェックされ、許可するとWindowsのファイアウォールに許可設定が登録できます。
Windowsのファイヤウィールを使用していない場合や、許可画面が表示されない場合は、手動でセキュリティソフトのファイヤウォールの設定で「待受ポート」のポート番号の受信許可を設定してください。
ファイヤウォールを使用していない場合は、そのまま、WebAPIコマンドが実行できます。
2.WebAPIコマンドの実行テスト方法
WebAPIをテストするためのツールを使用してのテストも可能ですが、簡単にテストする場合には、Windows10(バージョン1803)から標準コマンドになったCURLコマンドで実行のテストができます。
curlコマンド
curlコマンドは、コマンドラインから URL を利用してデータを転送するためのツールです。
コマンドプロンプトやバッチファイル、PowerShellからも実行可能です。
HTTPSサーバーへコマンドを送ると即時、取込処理が行われ、結果が返ってきます。
curl [オプション] <url> のように指定して使用
[オプション] | ||
-k | : | SSL認証のスキップオプションが必要です。 |
-d 又は --data
|
:
|
JSONの指定。
JSON内の引用符は、' シングルクォーテーションも使用可能です。-d オプションの値が、””ダブルクォーテーションで括られているので、シングルクォーテーションで指定します。 |
実行例
curl https://サーバー名:待ち受けポート -k -d "{'command':'ReadByZID','userid':'TPiCSユーザーID','password':'ログインパスワード','zid':'XAACTテーブルに書き込まれたデータのZID'}"
3.WebAPIのReadByZID連係
WebAPIのコマンドは、http通信のPOST送信によって処理します。
POST送信のリクエストボディにJSON形式で以下のフォーマットでリクエストすることで、トランション自動取込テーブル(XAACT)に書込み済みのデータを取込みします。
3-1.ReadByZIDコマンド(1件取込)
トランザクション自動取込みテーブルのプライマリキーフィールドのZIDを指定してTPiCSに取込みを行います。
POSTのデータに指定するJSONデータのフォーマット
JSONデータのcommand要素に、ReadByZID を指定することで、ReadByZIDコマンドして取込処理を行います。
{
"command": "ReadByZID",
"userid": "処理するTPiCSに登録したユーザーID",
"password": "ログインパスワード",
"zid": "XAACTテーブルに書き込まれたデータのZID"
}
curlでコマンド実行の場合
curl https://サーバー名:待ち受けボート -k -d "{'command':'ReadByZID','userid':'処理するTPiCSに登録したユーザーID','password':'ログインパスワード','zid':'XAACTテーブルに書き込まれたデータのZID'}"
※zidの値は数値なので、””で括らずに数値を指定。
実行例
トランザクション自動取込テーブル(XAACT)に書き込まれているZIDが1234のレコードを、TPiCSに登録したユーザー:USER_Aで取り込む場合は以下のように設定します。
curl https://サーバー名:待ち受けボート -k -d
"{
"command": "ReadByZID",
"userid": "USER_A",
"password": "TPICS",
"zid": 1234
}"
取込結果(レスポンス)
・取込みが成功
取込みが成功すると以下のようなレスポンスを返します。
{
"Result": "OK",
"ZID": 1234,
"EResult": ""
}
・エラー発生時
エラー発生時はエラー内容を含めて以下のようなレスポンスを返します。
{
"Result": "NG",
"ZID": 1234,
"EResult": "在庫一覧にこの保管場所は登録されていません Y:SZI"
}
3-2.ReadByZIDコマンド(複数件取込)
2023年7月リリース版より、1つのリクエストで複数件のデータを取込むことができます。
取込む複数件のデータ1件毎にトランザクションを掛けながら処理を行います。
一部のデータで取込みエラー発生時には、該当データはエラーのレスポンスになり、それ以外のデータは、取込処理を続行し成功のレスポンスになります。
POSTのデータに指定するJSONデータのフォーマット
{
"command": "ReadByZID",
"userid": "処理するTPiCSに登録したユーザーID",
"password": "ログインパスワード",
"zid": [XAACTテーブルに書き込まれたデータのZID,ZID,ZID,...]
}
※zidの値は数値なので、””で括らずに、[数値,数値,数値]のように数字の配列で指定。
curlでコマンド実行の場合
curl https://サーバー名:待ち受けボート -k -d "{'command':'ReadByZID','userid':'処理するTPiCSに登録したユーザーID','password':'ログインパスワード','zid':'[XAACTテーブルに書き込まれたデータのZID,ZID,ZID,...]'}"
実行例
トランザクション取込テーブル(XAACT)に書き込まれているZIDが10、20、30のレコードを、1つのリクエストで取込む場合は以下のように[ ]内で取込みするZIDを複数指定します。
指定したZIDのデータ1件毎にトランザクションを掛けて取込みするには、JSONデータのcommand要素に ReadByZID を指定します。
{
"command": "ReadByZID",
"userid": "処理するTPiCSに登録したユーザーID",
"password": "ログインパスワード",
"zid": [10,20,30]
}
取込結果(レスポンス)
・取込み成功時
取込みが成功すると以下のようなレスポンスになります。
[
{
"Result": "OK",
"ZID": 10,
"EResult": ""
},{
"Result": "OK",
"ZID": 20,
"EResult": ""
},{
"Result": "OK",
"ZID": 30,
"EResult": ""
},
]
・一部データのエラー発生時
エラー発生時はエラーが起きたデータに対して以下のようなレスポンスになります。
[
{
"Result": "OK",
"ZID": 10,
"EResult": ""
},{
"Result": "NG",
"ZID": 20,
"EResult": "存在しないデータです。"
},{
"Result": "OK",
"ZID": 30,
"EResult": ""
},
]
3-3.ReadByZIDTransコマンド(トランザクションをかけた複数件取込)
2023年7月リリース版より、1つのリクエストで複数件のデータを取込むことができます。
取込むデータを複数件のデータを1つのトランザクションで処理を行います。そのため、取込みで1件でもエラーが起こった際は、すべてのデータに対してエラーのレスポンスが返り、全てのデータでエラーなく取込みされれば、全てのデータに対して成功のレスポンスを返します。
取込みを行う場合は、JSONデータのcommand要素に、ReadByZIDTrans を指定します。
ReadByZIDのトランザクションバージョンです。
複数のZIDを取込むときに、1連の処理としてトランザクション処理をかけてTPiCSに取込みを行います。
POSTのデータに指定するJSONデータのフォーマット
{
"command": "ReadByZIDTrans",
"userid": "処理するTPiCSに登録したユーザーID",
"password": "ログインパスワード",
"zid": [XAACTテーブルに書き込まれたデータのZID,ZID,ZID,...]
}
実行例
トランザクション取込テーブル(XAACT)に書き込まれているZIDが10、20、30のレコードを、1つのリクエストで取込む場合は以下のように[ ]内で取り込みするZIDを複数指定します。
指定したZIDのデータを1つのトランザクションで取込みするには、JSONデータのcommand要素に ReadByZIDTrans を指定します。
{
"command": "ReadByZIDTrans",
"userid": "処理するTPiCSに登録したユーザーID",
"password": "ログインパスワード",
"zid": [10,20,30]
}
取込結果(レスポンス)
・取込み成功時
全ての取込みが成功すると以下のようなレスポンスを返します。
[
{
"Result": "OK",
"ZID": 10,
"EResult": ""
},{
"Result": "OK",
"ZID": 20,
"EResult": ""
},{
"Result": "OK",
"ZID": 30,
"EResult": ""
},
]
・一部データのエラー発生時
一部のデータでエラーが発生した場合、エラーが発生したデータに対してはエラー内容を返し、他のデータにはどのデータでエラーが起こったのかを返します。
[
{
"Result": "NG",
"ZID": 10,
"EResult": "ZID=20のレコードでエラーが発生したので取込みをキャンセルしました。"
},{
"Result": "NG",
"ZID": 20,
"EResult": "存在しないデータです。"
},{
"Result": "NG",
"ZID": 30,
"EResult":"ZID=20のレコードでエラーが発生したので取込みをキャンセルしました。"
},
]
4.WebAPIのReadDirect連係
ReadDirectコマンド、ReadDirectTransコマンドは、トランザクション自動取込テーブル(XAACT)を介在しなくとも、HTTPのpostデータを直接受け渡すことで自動取込み処理が行えるコマンドです。
コマンドを受け取ると、トランザクション取込テーブル(XAACT)にデータを追加と取込み処理を行います。失敗した場合にはXAACTテーブルにて確認も可能です。
4-1.ReadDirectコマンド (1件取込)
values要素に配列データでフィールドと値を指定することで、取込み処理が行なえます。
POSTのデータに指定するJSONデータのフォーマット
{
"command": "ReadDirect",
"userid": "処理するユーザーID",
"password": "ログインパスワード",
"values": {
"XAACTテーブルのフィール名": "値",
"XAACTテーブルのフィール名": "値",
"XAACTテーブルのフィール名": "値",
...
}
}
curlでコマンド実行の場合
curl HTTPSサーバー名:ポート番号 -k -d "{'command':'ReadDirect','userid':'処理するユーザーID','password':'ログインパスワード','values':{'XAACTテーブルのフィール名':'値','XAACTテーブルのフィール名':'値','XAACTテーブルのフィール名':'値',...}}"
実行例
計画外の実績データで、アイテムコードXを10個の実績データの登録例。
{
"command": "ReadDirect",
"userid": "処理するユーザーID",
"password": "ログインパスワード",
"values": {
"DKUBU": "SA-New",
"AKUBU": "Z",
"CODE": "X",
"BUMO": "製造担当",
"VENDOR": "発注先",
"JITU0": 10,
"HOKAN": "保管場所",
}
}
取込結果(レスポンス)
取込み成功とエラー発生時のレスポンスはReadByZIDの時と同様です。
・取込みが成功
取込が成功すると以下のようなレスポンスを返します。
{
"Result": "OK",
"ZID": 1234,
"EResult": ""
}
・エラー発生時
エラー発生時はエラー内容を含めて以下のようなレスポンスを返します。
{
"Result": "NG",
"ZID": 1234,
"EResult": "在庫一覧にこの保管場所は登録されていません X:SZI"
}
取込み時にエラーが起きた場合、エラーのステータスを元の値に9を加算して記憶します。特に指定をしなければエラーステータスは"9"(エラー)となり定期間隔での取り込みと同じエラーステータスになります。
そのため、定期間隔の取込みと区別する場合は、values要素に "ESTATUS":"20" または "ESTATUS":"30" を追加してください。
4-2.ReadDirectコマンド(複数件取込)
データ1件毎にトランザクションを掛けながら処理を行う場合は、values要素を[ ]で囲みカンマ区切る形式で複数件記述して下さい。
複数件のデータ1件毎にトランザクションを掛けて取り込みする場合はcommand要素に、ReadDirect を指定します。
POSTのデータに指定するJSONデータのフォーマット
{
"command": "ReadDirect",
"userid": "処理するユーザーID",
"password": "ログインパスワード",
"values": [{
"XAACTテーブルのフィール名": "値",
"XAACTテーブルのフィール名": "値",
"XAACTテーブルのフィール名": "値",
...
},{
"XAACTテーブルのフィール名": "値",
"XAACTテーブルのフィール名": "値",
"XAACTテーブルのフィール名": "値",
...
},{
"XAACTテーブルのフィール名": "値",
"XAACTテーブルのフィール名": "値",
"XAACTテーブルのフィール名": "値",
...
}],
}
実行例
{
"command": "ReadDirect",
"userid": "処理するユーザーID",
"password": "ログインパスワード",
"values": [{
"DKUBU": "SA-New",
"PORDER": "WW0001",
"PEDA": "0",
"KBAN": 0,
"AKUBU": "L",
"JITU":0
},{
"DKUBU": "HA-New",
"PORDER": "WW0001",
"PEDA": "0",
"CODE": "X",
"JITU": 10,
"AKUBU": "H",
},{
"DKUBU": "HA-New",
"PORDER": "WW0001",
"PEDA": "0",
"CODE": "Y",
"JITU": 10,
"AKUBU": "H",
}]
}
取込結果(レスポンス)
・取込みが成功
取込み成功とエラー発生時のレスポンスはReadDirectの時と同様です。
取込みが成功すると以下のようなレスポンスを返します。
[
{
"Result": "OK",
"ZID": 10,
"EResult": ""
},
{
"Result": "OK",
"ZID": 20,
"EResult": ""
},
{
"Result": "OK",
"ZID": 30,
"EResult": ""
}
]
・エラー発生時
エラー発生時はエラー内容を含めて以下のようなレスポンスを返します。
[
{
"Result": "OK",
"ZID": 10,
"EResult": ""
},
{
"Result": "NG",
"ZID": 20,
"EResult": "該当する引落明細データが見つかりませんでした"
},
{
"Result": "OK",
"ZID": 30,
"EResult": ""
}
]
4-3.ReadDirectTransコマンド(トランザクションをかけた複数件取込)
ReadDirectのトランザクションバージョンです。
複数のjsonデータを取込むときに、1連の処理としてトランザクション処理をかけてTPiCSに取込みを行います。
POSTのデータに指定するJSONデータのフォーマット
{
"command": "ReadDirectTrans",
"userid": "処理するユーザーID",
"password": "ログインパスワード",
"values": [{
"XAACTテーブルのフィール名": "値",
"XAACTテーブルのフィール名": "値",
"XAACTテーブルのフィール名": "値",
...
},{
"XAACTテーブルのフィール名": "値",
"XAACTテーブルのフィール名": "値",
"XAACTテーブルのフィール名": "値",
...
},{
"XAACTテーブルのフィール名": "値",
"XAACTテーブルのフィール名": "値",
"XAACTテーブルのフィール名": "値",
...
},
...
}
実行例
{
"command": "ReadDirectTrans",
"userid": "処理するユーザーID",
"password": "ログインパスワード",
"values": [{
"DKUBU": "SA-New",
"PORDER": "WW0001",
"PEDA": "0",
"KBAN": 0,
"AKUBU": "L",
"JITU":0
},{
"DKUBU": "HA-New",
"PORDER": "WW0001",
"PEDA": "0",
"CODE": "X",
"JITU": 10,
"AKUBU": "H",
},{
"DKUBU": "HA-New",
"PORDER": "WW0001",
"PEDA": "0",
"CODE": "Y",
"JITU": 10,
"AKUBU": "H",
}]
}
取込結果(レスポンス)
・取込みが成功
取込が成功すると以下のようなレスポンスを返します。
[
{
"Result": "OK",
"ZID": 10,
"EResult": ""
},
{
"Result": "OK",
"ZID": 20,
"EResult": ""
},
{
"Result": "OK",
"ZID": 30,
"EResult": ""
}
]
・エラー発生時
エラー発生時はエラー内容を含めて以下のようなレスポンスを返します。
[
{
"Result": "NG",
"ZID": 10,
"EResult": "ZID=20のレコードでエラーが発生したので取込みをキャンセルしました。"
},
{
"Result": "NG",
"ZID": 20,
"EResult": "該当する引落明細データが見つかりませんでした"
},
{
"Result": "NG",
"ZID": 30,
"EResult": "ZID=20のレコードでエラーが発生したので取込みをキャンセルしました。"
}
]
5.ストアドプロシージャ経由でZID指定取込
テーブル連係で、SQL文のストアドプロシージャ実行によりZID指定したトランザクション自動取込みも可能になりました。
5-1.ストアドプロシージャの作成
[データベース設定ツール]に[ストアドプロシージャ作成]機能が追加され、[ストアドプロシージャ作成]ボタンを押すと、接続中のデータベースに、「httpsサーバーのIPアドレス」に指定したIPアドレスへReadByZIDコマンドを送るストアドプロシージャが追加できます。
作成されるストアドプロシージャ名:ReadAACTByZID
※ストアドプロシージャの作成は、MS SQL Serverのみ対応しております。
5-2.SQL文による実行
トランザクション自動取込テーブルにデータをInsertした後、以下のクエリにて読み込むZIDを指定すると、ストアドプロシージャからWebAPIのReadByZIDコマンドが実行されます。
exec ReadAActByZID [取込み対象のZID],[USERID],[PASSWARD]
例として、取込み対象の自動取込みレコードのZIDが1234、ログインユーザーがUSER_A、パスワードはTPICSの場合は
exec ReadAActByZID [1234],[USER_A],[TPICS]
となります。
なお、スキーマ名が"dbo"以外の場合は、exec スキーマ名.ReadAACTByZID~~のように記述してください。
5-3.ストアドプロシジャーの実行結果
実行結果は以下のように表示形式で返ってきます。
<取込みが問題なく完了した場合>
RESULT | ZID | ERESULT |
OK | 1234 |
<取込みエラーになった場合>
RESULT | ZID | ERESULT |
NG | 1234 | 在庫一覧にこの保管場所は登録されていません Y:S01 |
<httpサーバーに接続できない、または取込みが正常に行われなかった場合>
RESULT | ZID | ERESULT |
ERR | 1234 | Processing failed |
6.その他
6-1.トランザクション取込テーブル(XAACT)に追加されたステータス
API連係機能の追加に伴い、トランザクション自動取込テーブルのステータスにタイマー取込みの対象外にするステータス値が追加されました。
新たなステータスは、既存の 0:取込前 ステータスに、20を足して、20:取込前(NoRead) のようなステータスになっています。既存のステータス(0:取込前 など)はタイマー処理で取込まれ、20:取込前(NoRead)などの新ステータスは自動取込されません。こちらはWebAPIからの取込みが必要です。
また、トランザクション取込みを行うと、トランザクション自動書出しにもデータが追加されますが、30:取込前(NoRead NoATrn)を指定によりトランザクション書出しされないように制御できます。取込んだ結果、さらに別のシステムへの連係が必要な場合は、20:取込前(NoRead)、不要の場合は、30:取込前(NoRead NoATrn) のように使い分けます。
・タイマー自動取込の対象(既存のステータス)
0:取込前
1:済み
2:処理中
7:引落し途中
8:実績取込残
9:エラー
・タイマー自動取込の対象外(新ステータス)
20:取込前(NoRead)
21:済み(NoRead)
22:処理中(NoRead)
27:引落し途中(NoRead)
28:実績取込残(NoRead)
29:エラー(NoRead)
・タイマー自動取込の対象外でトランザクション書出しを行わない(新ステータス)
30:取込前(NoRead NoATrn)
31:済み(NoRead NoATrn)
32:処理中(NoRead NoATrn)
37:引落し途中(NoRead NoATrn)
38:実績取込残(NoRead NoATrn)
39:エラー(NoRead NoATrn)
6-2.HTTPS接続のログについて
「ログ・ジャーナルテーブル出力レベル」の設定を"2"以上にすると、HTTPS接続の確認用のログが出力されます。
リクエスト/レスポンスの内容や接続元IPアドレス、ブロックしたIPアドレスや接続に失敗した内容などを出力可能です。
6-3.SSL認証のための自己署名証明書について
HTTPS接続を行うためのSSL認証書として自己署名証明書を生成して接続に利用しています。
HTTPSサーバーを開始する毎に自己署名証明書ファイルである“Tx50Server.pfx”が作業フォルダ内に出力されます。