プラグインを使用する場合の手順

プラグインを使用する場合の手順

前提条件 

Zoho Peopleは、MS SQL Server、MS Access、MySQLデータベースに対応しています。また、後述のクエリーフォーマットに対応しています。
メモ
メモ
機能連携を設定する際は、IT担当者や生体認証デバイスのベンダーにも参加してもらうことが重要です。

生体認証IDの関連付け

従業員の出退勤を記録するための生体認証デバイスが設定済みの場合、デバイスの関連付けIDとZoho Peopleの従業員番号を関連付けることができます。これにより、従業員は生体認証情報を使用して、安全に出退勤を記録できます。

Zoho Peopleの従業員番号を使用した関連付け:
  1. 関連付けを実行したり、既存の関連付け情報を表示したりするには、[処理]→[出退勤]→[生体認証IDの関連付け]の順に移動します。
  2. 新しい関連付けを設定するには、[ユーザーIDの関連付けを追加する]をクリックします。
  3. ](その他)アイコンをクリックすると、インポート/エクスポート/ダウンロードの機能が表示されます。 
Zoho Peopleでの生体認証ID関連付けの方法については、ヘルプ動画をご参照ください。

ソフトウェア要件 

Apache Tomcat 9:https://tomcat.apache.org/download-90.cgi(Windowsサービスインストーラー)
Java:https://www.openlogic.com/openjdk-downloads(OSごとの最新バージョン)

注意
機能連携を設定する際は、生体認証デバイスのベンダー/ITチームにも必ず協力を依頼してください。

データベース要件

データベース:Zoho Peopleは、MS SQL ServerMS AccessMySQLデータベースに対応しています。また、以下のクエリーフォーマットに対応しています。

Select employeeId, eventTime, isCheckin, downloadDate from Attendance

*employeeId:Zoho Peopleの従業員番号
*eventTime:出勤時刻と退勤時刻(「日付 時間」の形式)
*isCheckin :1または0(1は出勤、0は退勤)
*downloadDate:出退勤データがデータベースに送信される日時(「日付 時間」の形式)

以下のデータベーステーブルのスクリーンショットをご参照ください。


メモ
  1. テーブルに[downloadDate]列がない場合、SQL DBのデータがすべてZoho Peopleに送信されないことがあります。また、データが消失する可能性もあります。
  2. 従業員のシフトが複数ある場合、それらをすべてZoho Peopleで関連付ける必要があります。
  3. 生体認証IDがZoho Peopleの従業員番号と異なる場合、Zoho Peopleで[処理]→[出退勤]→[生体認証IDの関連付け]の順に移動して、生体認証IDを関連付ける必要があります。
  4. 機能連携は、生体認証データを保存するサーバーのシステムに完全に依存します。誤ってシステムをシャットダウンしたためにクラッシュや再起動が起きた場合、設定画面に不具合が生じることがあります。このような場合、機能連携を再度設定する必要があります。

用語

用語
定義
生体認証デバイス 
顔認証、指紋の読み取り、手のひら静脈認証など、生理学上および行動上の特性を用いた本人確認と認証のために用いられる電子機器。
Tomcatサーバー
WebサイトAPI、JavaServer Pages、Java Servletなど多数のJava Enterpriseの仕様を実装するオープンソースのJavaサーブレットコンテナー。
MySQL(データベース)
オープンソースのリレーショナルデータベース管理システム。オープンソースのGPLライセンスであるため、プログラマーが個別の環境に合わせてMySQLソフトウェアを修正可能。 
Microsoft Access
Access Database Engineとグラフィカルユーザーインターフェイスおよびソフトウェア開発ツールとを組み合わせた、Microsoftのデータベース管理システム。
Microsoft SQL Server
リレーショナルデータベース管理システム。他のソフトウェアアプリケーションのリクエストに応じて、データを保存および取得することを主な役割とするソフトウェア製品。

手順

JavaアプリケーションとTomcatアプリケーションがダウンロードおよびインストールされていることを確認します。Java/Tomcatアプリケーションがインストールされているかを確認するには、[ローカルディスク(C:)]→[Program Files]または[Program Files (x86)]の順に移動します。インストールされていない場合は、それぞれのソフトウェアをインストールします。

Tomcatの設定

  1. サービス名: Tomcat8ZohoPeople
  2. シャットダウンポート:8989
  3. コネクターポート/Tomcatサーバーポート:8584(このポート番号が他のサービスで使われていないことをご確認ください)
  4. 以下の順に移動して、Open Logic Javaファイルパスを選択します:Cドライブ→[Program Files/ Program Files(x86)/ Open Logic/ jdk 〈バージョン〉]
  5. スタートアップの種類:[スタート]→検索→[Tomcat8Zoho](右クリック)→[プロパティ]→[スタートアップの種類]→[自動]

WARファイルのインストール

  1. 以下のリンクをクリックして、WARファイルをダウンロードします。
    https://www.zoho.com/people/downloads/ZAttendance.war
  2. [ローカルディスク(C:)]→[Program Files]→[Apache Software Foundation]→[Tomcat8]→[Web apps](Webアプリ)の順に移動し、WARファイルを貼り付けてから更新して、ファイルを抽出します。
  3. http://localhost:8584/ZAttendanceからプラグイン画面を読み込めるか確認します。

プラグイン設定の手順

  1. プラグイン画面右上の[Configure](設定)ボタンをクリックして設定画面を開き、データベースの種類を選択します。
  2. 項目の下に記載されている接続URLの例をコピーして貼り付け、データベース名を変更します。

    データベースのインスタンスのポート番号を適宜変更します。
    MS SQLの場合:[C:]→[Windows]→[SysWoW64]→該当するSQL Server構成マネージャー→[SQL Server ネットワークの
    構成]→[SQLEXPRESSのプロトコル]→[TCP/IP]→[IPアドレス]→TCPポート:1433→[適用]→[OK]の順に移動します。
    または
    [スタート]→検索→[コンピューターの管理]→[SQL Serverネットワークの
    構成]→[TCP/IP]→[IPアドレス]→TCPポート: 1433→[適用]→[OK]の順に移動します。

    MySQLの場合:初期設定のポート番号は3306です。

    MS Accessの場合:データベースのパスを追加し、フォワードスラッシュ(/)をバックスラッシュ(\)に変更します。

  3.  データベースのユーザー名とパスワードを追加します。初期設定のユーザー名は、MySQLでは「root」、MS Accessでは「admin」です。
  4. [Delay Time](遅延時間)と[Sleep Time](実行間隔)を5分にします(最短の時間)。
  5. SQLクエリーを設定します。

    すべての列が要件どおりの場合:
    静的テーブル:
    select [employeeID] as employeeId, ischeckin as isCheckin, [eventTime] as eventTime, [download-Date] FROM [ZAttendance].[dbo].[Att-checkin] where downloadDate>=$1 and downloadDate<$2

    動的テーブル:
    select [employeeID] as employeeId, ischeckin as isCheckin, [eventTime] as eventTime, [Down-loadDate] FROM #Tablename_%M_%Y# where downloadDate>=$1 and downloadDate<$2

    ダウンロード日の列に入力できない場合:(遅延時間が1~2時間)
    select [Id] as employeeId, case [Checkin] when 'IN' then 1 when 'OUT' then 0 end as isCheckin, [EventTime] as eventTime FROM [ZAttendance].[dbo].[Att-checkin] where eventTime>=$1 and eventTime<$2

    テーブルで[出勤]/[退勤]の区別が明示されていない場合:
    それぞれの打刻を[出勤]および[退勤]としてZoho Peopleに送信する:
    select [empid] as employeeId, '1' as isCheckin, [EventTime] as eventTime, [downloaddate] FROM [ZAttendance].[dbo].[Att_noCheck] where DownloadDate>=$1 and DownloadDate<$2
    UNION
    select [empid] as employeeId, '0' as isCheckin, [EventTime] as eventTime, [downloaddate] FROM [ZAttendance].[dbo].[Att_noCheck] where DownloadDate>=$1 and DownloadDate<$2

    または

    [出勤]と[退勤]の代替打刻データを使用する:
    select [Id] as employeeId ,[EventTime] as eventTime ,[DownloadDate] FROM
    [ZAttendance].[dbo].[Att-checkin] where DownloadDate>=$1 and DownloadDate<$2

    [Tomcat]→[config.properties]→URLをbulkImportからbulkImportRawEntryに変更します。

  6. 認証トークンを作成します。
    api-console.zoho.inにアクセスします(またはデータセンターに応じてapi-console.zoho.com/api-console.zoho.euにアクセスします)。クライアントの種類として[Self Client](セルフクライアント)を作成し、[Client ID](クライアントID)と[Client Secret](クライアントシークレット)をコピーして、プラグイン画面に貼り付けます。

    [Generate Code](コードの生成)タブで、コードを作成します。
    範囲: ZohoPeople.attendance.all
    時間:10分
    説明:BI

    リフレッシュトークンを作成します。Client ID(クライアントID)/Client Secret(クライアントシークレット)/CODE(コード)を貼り付けて、データセンターを選択します。
    [Generate](生成)をクリックし、[Refresh Token](リフレッシュトークン)の項目にコピーして貼り付けます。

    プロフィールの[Zohoの役割/役割]が[管理者]となっている管理者アカウントを使って、トークンが生成されていることを確認します。

  7. タイムゾーンを変更します。利用している場所のタイムゾーンを選択します。データベースの出退勤データのタイムゾーンと、管理者アカウントのタイムゾーンが同じであることを確認します。

  8. 手動によるテストと送信を行います。いずれかの従業員のデータを試験的に同期します。SQLクエリーで、whereの条件の後、[downloadDate]列の名前を[eventTime]列の名前に変更し、従業員番号のフィルターを以下のとおり追加します。

    select [Id] as employeeId, [Checkin] as isCheckin, [EventTime] as eventTime , [DownloadDate] FROM [ZAttendance].[dbo].[Att-checkin] where Even-tTime>=$1 and EventTime<$2 and Id=‘1001’

    [Manual sync](手動の同期)タブで[Get record count](データ数の取得)をクリックして、データを取得およびアップロードしてZoho Peopleに送信します。

  9. テストが完了すると、プラグイン画面で[Resume sync](同期を再開する)をクリックすることで、自動的に同期を実行できます。

  10. 今後使用するときのためにURLをブックマークに保存します。また、Tomcatフォルダー以外にconfig.xmlファイルのバックアップを保存します。

Q&Aとよくある問題への対処策

1.どのような種類/方法の機能連携を利用できますか?
生体認証による出退勤データの機能連携には、APIとプラグインを利用できます。 
2.連携に対応しているデバイス、または推奨されるデバイスをすべて教えてください。
Zoho People APIを使用できるデバイス、またはプラグイン連携の条件を満たすデバイスであれば、Zoho Peopleアプリケーションとの連携が可能です。
3.クラウドベースのサーバーシステムを使ってプラグインを連携できますか?
はい、システムがWindows GUIを搭載していれば可能です。
4. [downloadDate]列と[eventTime]列は何を参照していますか?
[downloadDate]列は、データがローカルの出退勤データベースにダウンロードされた日時を参照しています。また、[eventTime]列は、生体認証デバイスに出勤/退勤が打刻された日時を参照しています。
5. プラグイン画面から手動でデータを同期するにはどうすればいいですか?
  1. [Stop Sync](同期を停止する)をクリックしてから[Configure](設定する)をクリックします。
  2. SQLクエリーで、where句の後の[downloadDate]を[eventTime]に変更(テーブルの列の名称に従う)して、[Save](保存する)ボタンをクリックします。
  3. 手動での同期は、データが同期されなかった日付範囲に対して実行する必要があります。
  4. 次に、[Configure](設定する)をクリックします。SQLクエリーで[eventTime]を[downloadDate]に戻し(テーブルの列の名称に従う)、開始時刻を現在時刻に修正すると、同期が自動的に実行されます。
  5. [Save](保存する)ボタンをクリックしてから[Resume Sync](同期を再開する)をクリックします。 
6. 設定画面が空欄で、プラグイン画面に[Resume Sync](同期を再開する)ボタンと[Stop Sync](同期を停止する)ボタンがいずれも表示されていますが、ボタンをクリックしても設定画面が開きません(プラグイン画面の不具合、または部分的な不具合)。
  1. [Start Sync](同期を開始する)をクリックしてから[Stop Sync](同期を停止する)をクリックします。
  2. [Start Sync](同期を開始する)ボタンのみが表示されており、設定画面を開いても空欄の場合は、もう一度情報を入力する必要があります。
  3. バックアップフォルダーがある場合は、そこから.configファイルをコピーして、Tomcatフォルダーに貼り付けて、既存の.configファイルを置き換えます。
  4. プラグイン画面を更新します。Zoho Peopleに同期されていなかった過去のデータを手動で同期します。
  5. 自動的に同期を実行することもできます。
  6. 設定画面がまだ開かない場合は、プラグイン画面を再度設定する必要があります。
  7. 再度設定が完了すると、.configファイルのバックアップを取得できます。このファイルは、問題が再発した場合に使用できます。 
7. Tomcat Catalina Logsで[GC overhead limit exceeded](GCオーバーヘッドの上限を超過しました)というエラーが表示されます。
  1. JavaアプリケーションのTomcatのメモリーサイズを増やす必要があります。
  2. [C:]→[Program Files/Program Files (x86)]→[Apache Software Foundation]→[Tomcat]→binフォルダー→tomcatw.exeを開く→[Java]タブの順に移動して、[Initial memory pool](メモリー初期使用量)と[Maximum memory pool](メモリー最大使用量)を増やします。
8. Tomcat Catalina Logsで[Date range provided is more than 31 days](指定の日付範囲が31日を超えています)と表示されます。
  1. [Stop Sync](同期を停止する)をクリックしてから[Configure](設定する)をクリックします。
  2. SQLクエリーで、where句の後の[downloadDate]を[eventTime]に変更(テーブルの列の名称に従う)して、[Save](保存する)ボタンをクリックします。
  3. 手動での同期は、データが同期されなかった日付範囲に対して実行する必要があります。
  4. [Configure](設定する)をクリックします。SQLクエリーで[eventTime]を[downloadDate]に戻し(テーブルの列の名称に従う)、開始時刻を現在時刻に修正すると、同期が自動的に実行されます。
  5. [Save](保存する)ボタンをクリックしてから[Resume Sync](同期を再開する)をクリックします。 
11.Tomcat Catalina Logsで[Exception @getLastUpdatedTime{0}]と表示されます。
  1. サービスを開いて、Apache Tomcatサービスを停止します。 
  2. [C:]→[Program Files/Program Files (x86)]→[Apache Software Foundation]→ファイルマネージャーのTomcatフォルダーの順に移動します。
  3. lastupdatedtimeファイルを削除します。
  4. サービスを開いて、Apache Tomcatサービスを開始します。
  5. 手動での同期は、データが同期されなかった日付範囲に対して実行する必要があります。開始時間を変更して、同期を自動化する必要があります。 
  6. [Resume Sync](同期を再開する)をクリックします。