週刊プリザンター第57,58,59合併号

こんにちは。IISの田口です。
年明け早々本業がパニックになるくらい忙しく、執筆が滞ってしまいました。
なんとかバージョンアップに追いついていきたいと思っています。
週刊プリザンター第57,58,59号です。
1/20~2/9を追いかけます。

フィルタの項目連携機能を追加(0.50.130)

項目連携がフィルタでも利用できるようになりました。
「管理」-「フィルタ」に"項目連携を使用する"というチェックボックスが追加になっています。
あらかじめ「エディタ」で項目連携を設定しておいた項目をフィルタ(検索条件)に表示している場合に、項目連携が有効になります。
《設定画面》 f:id:imageinformationsystem:20200212222918p:plain 《フィルタでの動き》 f:id:imageinformationsystem:20200212222930p:plain f:id:imageinformationsystem:20200212222938p:plain

拡張SQLを実行するAPIを追加(0.50.130)

新機能APIが追加になりました。
今回追加になったのは、任意のSQLを実行し、その結果を取得するAPIになります。
API利用ですので、事前にAPIキーの作成が必須です。

拡張SQL

\Pleasanter\App_Data\Parameters\ExtendedSqls\配下に以下の内容を含むjsonファイルを作成してください。 ファイル名は任意です。

パラメータ名 値の例 説明
Description 例)"このSQLは・・・を取得します" SQLの説明。動作には影響しません。
Name 例)"hogehoge" APIで実行するSQL文の名前です。POSTするjsonデータのNameと一致した場合、CommandTextに記載したSQL文を実行します。
Api 例)true trueの場合、APIで実行します。
CommandText 例)select [Results].[Title], [Results].[ClassA], [Results].[ClassB] from [Results] where [Results].[SiteId] = @param1;
select [Results].[Title], [Results].[NumC], [Results].[NumD] from [Results] where [Results].[SiteId] = 999 and [Results].[ClassA] = @param2;
実行するSQLを記述します。複数のSQLを指定することができます。

URL

下記のURLを使用します。

http://{servername}/pleasanter/api/extended/sql

"http://{servername}/pleasanter" の部分は、適宜、環境に合わせて編集してください。

リクエス

HTTP POSTで下記の形式のjsonデータを送信してください。Content-Typeに'application/json'、文字コードUTF-8を使用してください。

{
    "ApiKey": "XXXXXXXXXX...",
    "Name": "hogehoge",
    "Params": {
        "param1": 1,
        "param2": "aaa",
    }
}

"Name"には前述の拡張SQL側で設定する名前を指定します。
Paramsに入れたパラメータは@param1など拡張SQLの中でパラメータとして使用できます。パラメータを渡す必要がない場合は"Param":{}とします。

レスポンス

以下形式のjsonデータが返却されます。
既存の取得APIとの差はResponse.Dataにの配下に
Response.Data.Table (1つめのテーブル)
Response.Data.Table1 (2つめのテーブル)
Response.Data.Table2 (3つめのテーブル)
のように拡張SQLのCommadnTextで指定したSQLの数に合わせてテーブルが格納されます。
テーブル内にはレコードの配列があり、レコード内はKey, ValueのHashでテーブルカラム名と値が入ります。

{
    "StatusCode": 200,
    "Response": {
        "Data": {
            "Table": [
                {
                    "Title": "SampleData_1",
                    "ClassA": "ああああ",
                    "ClassB": "いいいい"
                },
                {
                    "Title": "SampleData_2",
                    "ClassA": "かかかか",
                    "ClassB": "きききき"
                },
            ],
            "Table1": [
                {
                    "Title": "SampleData_11",
                    "NumC": 123,
                    "NumD": 9999
                }
            ]
        }
    }
}

注意点)
1.拡張SQLファイルとAPIの紐付けは"Name"値となります。既存の拡張SQLのようにSiteId指定ではありません。
2.権限チェックはAPIキーやセッションによるログイン確認のみです。テーブルへの権限チェックなどは一切ないので、SQLの中で適宜実施してください。
3.画面上空欄の値の扱いが既存の取得用APIと異なります。当方で確認した結果は以下のような差異がありました。

項目種類 画面表示 既存の取得API 拡張SQLAPI
分類(Class) 空欄 ""(空文字) NULL
数値(Num) 0 0 NULL
日付(Date) 空欄 "1899-12-30T00:00:00" NULL
チェック(Check) チェックなし FALSE NULL
説明(Description) 空欄 ""(空文字) NULL

その他

不具合解消やソースコードリファクタリングなどで12個のアップデートが実施されています。

バージョンアップに追いつけ!

プリザンターは日々進化しつづけて、新しい機能が追加されています。
皆さんの参考になるよう毎週紹介していきたいと思いますので、ご期待ください!

「+読者になる」のお願い

プリザンターの他、C#によるWebアプリ開発IISの得意とする領域です。今後もプリザンターの機能、拡張スクリプト、ページ追加の研究を進めて行くつもりです。関心のある方、よかったらブログ上部の「+読者になる」をクリックをお願いします!

最後に  

IISはプリザンターのスクリプトによるカスタマイズの経験が豊富です。
プリザンター導入に際してカスタマイズをご検討されている方は是非ご相談ください!
またご不明点やご質問などございましたら弊社までお問い合わせください。