0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Unityからkintoneアプリのレコードを承認する方法

Posted at

はじめに

この記事では、kintoneアプリ内で設定したプロセス管理をUnity内から操作する方法を案内します。実現方法に注力したいため、『Unityのプレイヤーがスペースキーを押したら、特定のレコードが承認される』というシンプルなシナリオにします。
shounin.png

なお、例ではJSONの作成をしやすくするためにSimpleJSONを使用しています。プロジェクト内で利用する方法は下記の記事を参考にしてください:

kintoneアプリの準備

プロセス管理を設定したアプリを作りましょう。
kintone環境を持っていない方はcybozu developer networkのこのページから1年間無料で使用できる開発者ライセンスのkintone環境を手に入れてください。

フィールドの設定

好みのフィールドを設定してください

プロセス管理の設定

アプリの設定画面から、設定タブ→プロセス管理 に遷移するとプロセス管理の設定を有効に出来ます。
この記事の例では『**《特定のユーザ》が作業者として設定されたレコードを《承認》というアクションでプロセス管理のステータスを《承認済》に進める』というのをREST APIで実行します。REST APIを実行する際に、この《特定のユーザ》**でパスワード認証を行います。
下記のようにプロセス管理の設定をしましょう。
Screen Shot 2019-11-27 at 21.41.30.png

設定が終わったら保存をし、アプリを公開/更新しましょう。

スクリプトの準備

サンプルコードとしてシンプルに見せたいため、特定のアプリの特定のレコードに対してプロセスを進めるような内容にします。
下記のサンプルコードの**{サブドメイン名}{Base64エンコードされた『ユーザ名:パスワード』}{アプリID}{レコードID}**は適宜自分の環境に合うように変更してください。kintoneのREST APIの認証についてはcybozu developer network のこちらのページから詳細を確認することが出来ます。

testAPI.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using SimpleJSON;
using System.Text;

public class testAPI : MonoBehaviour
{
    const string domain = "{サブドメイン名}.cybozu.com";
    const string passwordauth = "{Base64エンコードされた『ユーザ名:パスワード』}";

    void Start()
    {

    }

    void Update()
    {
        if (Input.GetKeyDown("space"))
        {
            print("space key was pressed");
            int WorkflowappID = {アプリID};
            int workflowRecordID = {レコードID};
            StartCoroutine(updateRecordStatus(WorkflowappID, workflowRecordID, "承認"));
        }
    }

    private IEnumerator updateRecordStatus(int appID, int recordID, string action)
    {
        //APIエンドポイントの作成
        string RequestURL = "https://" + domain + "/k/v1/record/status.json";
        
        //ボディで送るJSONを作る → {"action":"承認","app":15,"id":1}
        JSONObject APIrequestBody = new JSONObject();
        APIrequestBody.Add("action", action);
        APIrequestBody.Add("app", appID);
        APIrequestBody.Add("id", recordID);

        //APIの実行前の準備
        UnityWebRequest request = new UnityWebRequest(RequestURL, "PUT");
        byte[] putData = Encoding.UTF8.GetBytes(APIrequestBody.ToString());
        request.uploadHandler = (UploadHandler)new UploadHandlerRaw(putData);
        request.SetRequestHeader("X-Cybozu-Authorization", passwordauth);
        request.SetRequestHeader("Content-Type", "application/json");

        //APIを実行
        yield return request.SendWebRequest();
    }
}

使用したkintone REST APIのドキュメントはこちらから確認出来ます:

実行結果

kintoneアプリに新しいレコードを追加して、手動でステータスを《承認待ち》進めます。
作業者として選択するのは、Unityのスクリプト内からパスワード認証を行うユーザです。
proceedstatus.gif

Unityのゲーム内でスペースキーを押します。
unityscreenshot.png

kintoneアプリのレコードの最新情報を見るために、ブラウザをリフレッシュしましょう。
ステータスが《承認済》になっているはずです。履歴タブをクリックすれば、どのユーザがいつステータスを進めたかがわかります。
approve_success.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?