コンテンツにスキップ

ジョブ

QFieldCloud上のジョブはQGIS内のプロジェクトファイルやレイヤーを使って重い操作を行います。ジョブはユーザーの特定の操作に応じて作成されます。

Once a job is created, it is added to the project's job queue and waits for available QFieldCloud resources to run. At any given moment only one job can run per project. The rest of the queued jobs will perform in the same order as in they entered the queue.

Each job consists of one or more steps and each step is responsible for one self contained task on the project. QFieldCloud supports three predefined job workflows: process_projectfile, package and delta_apply.

ジョブが実行されている間、ジョブは最終ステータス FINISHED または FAILED に達したジョブのログメッセージをプロジェクトのジョブページに書き込みます。

ジョブはプロジェクトのシークレットにアクセスできます。

備考

すべてのジョブはQFieldCloud APIを使用してトリガーできます。

警告

  • このページに記載されているトリガー条件は、予告なく変更される場合があります。
  • すべてのジョブは10分以内に終了しないとタイムアウトエラーとなり終了します。

Info

If you are looking for technical details how Jobs work, check the Job Queue documentation.

ジョブの種別

プロジェクトファイルを処理する (process_projectfile) ジョブ

The process project file job is used to extract details about the project configuration and project layers including QGIS version used, project CRS, layer CRS, layer names, layer validity etc. QFieldCloud validates the uploaded QGIS project file (.qgs/.qgz), as well as the supporting GeoPackages, TIFFs and other data source files. It also validates remote connections to PostGIS, WFS, WMS and other online data sources. QFieldCloud will open the project file in a QGIS instance on the server to extract all the necessary information.

トリガー

このジョブは、次のうち一つの条件が当てはまらない限り、ファイルがQFieldCloudにアップロードされるたびに発生します。:

  • QGISプロジェクトファイル(.qgs/.qgz)はまだアップロードされていません。
  • The uploaded file is within the DCIM directory. Those files are assumed to be irrelevant to project validity.
  • 既に PENDING ステータスの process_projectfile ジョブがあります。

トラブルシューティング

A process_projectfile job might result in FAILED status. Check the non-exhaustive list of causes below:

  • The uploaded QGIS project file (.qgs/.qgz) is unreadable, incomplete, broken or wrong. Try to reupload the QGIS project file.
  • QGIS is crashing after opening the project file.
  • Try to identify the layer that is causing the crash by removing one layer at a time from the project and reuploading the QGIS project file.

Note

Even if a process_projectfile job results in a SUCCESS status, it does not mean the project is properly configured. The SUCCESS status just states the project has been successfully opened and all the needed information has been extracted.

パッケージ (package) ジョブ

The package job converts a QGIS project to a QField project, the same way it is done on QGIS via QFieldSync. The package job will prepare all layers marked as "Offline editing" to a single GeoPackage.

トリガー

This job is triggered every time the Download or Synchronize buttons are pressed on QField. Unless at least one of the following condition are valid:

  • このプロジェクトは SUCCESSステータスとなっているprocess_projectfile ジョブを実行したことがありません。
  • すでに PENDING ステータスの package ジョブがあります。
  • このプロジェクトにはオンラインのベクターレイヤー(PostGIS、WFSなど)は含まれておらず、最新のpackageジョブの結果はSUCCESSで、ファイルのアップロードも変更のアップロードもありませんでした。

トラブルシューティング

A package job might result in FAILED status. Check the non-exhaustive list of causes below:

  • このプロジェクトは SUCCESSステータスとなっているprocess_projectfile ジョブを実行したことがありません。
  • Some of the project layers are inaccessible from QFieldCloud.
  • Make sure all files are uploaded and all credentials to online layers (PostGIS, WFS etc) are stored within the QGIS project file.

デルタ適用 (delta_apply) ジョブ

デルタ適用ジョブ は、プッシュされたすべての QField の変更を永続化する責任があります。

トリガー

This job is triggered every time a Synchronize or Push changes button is pressed on QField, or Apply pending changes button is pressed on the Changes project page. If any of the following condition are valid:

  • このプロジェクトは SUCCESSステータスとなっているprocess_projectfile ジョブを実行したことがありません。
  • 既に PENDING ステータスの delta_apply ジョブがあります。

トラブルシューティング

A delta_apply job might result in FAILED status. Check the non-exhaustive list of causes below:

  • QGISプロジェクトで使用されているオンラインデータベース(PostGIS/WFS)の少なくとも1つは、接続をリセットします。
  • プロジェクトが大きすぎて、ジョブが失敗しました。
  • There are hidden files and directories within the project that are preventing the normal work of QFieldCloud.
  • Hidden files and directories are those starting with a leading dot (.).
Understanding conflicts delta_apply jobs

Conflicts can occur under the following conditions:

  1. Two or more users modify the geometry or a specific attribute of the same feature, starting from the same initial value but saving different values.
  2. A primary key is used more than once.

To minimize the risk of conflicts, follow these best practices:

  • Plan updates collaboratively - When updating features based on specific field conditions, assign each user a distinct set of features to edit.
  • Clear planning reduces overlap and potential conflicts.
  • Avoid modifying primary keys - Primary keys should be treated as immutable and configured to be read-only.
  • This ensures consistent identification of features and prevents accidental modifications.
  • Ensure unique primary keys - Use a truly unique primary key, such as a UUID (uuid()), to prevent conflicts and ensure data integrity.

By implementing these practices, you can significantly reduce the likelihood of conflicts and maintain consistent data.

How to resolve conflicts?

By default, QFieldCloud overwrites conflicts using a last wins policy (the latest patch of changes to the attribute(s) involved in the conflict replaces all earlier patches of changes to these attributes). Alternatively, admins can set a project's conflict resolution policy to manual. Doing so will require the project manager to manually resolve conflicts, picking those to be applied to the project.

  1. 「変更」セクションに移動します。
  2. Filter the changes with the "CONFLICT" status.
  3. コンフリクトしている各変更を選択し、"Action "ドロップダウンメニューからステータスを "Re-apply "に設定します。また、すべての新しい変更がコンフリクトしている場合は、最後にコンフリクトした変更を選択し、"Re-apply this and newer changes "を選択することもできます。
  4. コンフリクトの変更内容を確認し、ページの最後にある「すべて保存」をクリックします。

QFieldCloudで変更を再適用する
  1. _My projects_の下にあるプロジェクト名をクリックします。.
  2. _Changes_セクションに移動してください。(変更点は新しいものから古いものへとソートされています)
  3. 再適用したい特定の変更箇所を見つけます。
  4. 右側の_Action_列で、ドロップダウンリストをクリックします。
  5. 変更を再適用するために必要なアクションを選択します。

    • 特定の変更を再適用する: 特定の変更を再適用する必要がある場合は、再適用する各変更を選択し、__Re-apply__をクリックします。
    • 最近の変更を再適用します: プロジェクトに加えられた最新の変更を再適用したい場合は、復元したい最初の変更を特定し、__Re-apply this and newer changes__を選択します。

最後に、__Save all__ボタンをクリックします。

変更の再適用
変更の再適用

ジョブログのトラブルシューティング

ジョブを実行すると、通常、ログに "Check project layers"(プロジェクトレイヤーのチェック)というステップがあり、すべてのプロジェクトレイヤーとその横にステータスが表示された表が印刷されます。

考えられるステータスは以下の通り:

  • ok - レイヤーはQFieldCloudに正しくロードされます。
  • invalid_dataprovider - レイヤーのデータプロバイダーが無効である。通常、追加情報は "Provider Summary" に表示されます。
  • invalid_layer - このようなエラーが発生することはほとんどないはずです。データは正しくロードされていますが、何らかの理由でQGISはレイヤーを無効と報告します。

サービス "{SERVICE}" に接続できません。

QFieldCloud tries to connect to a PostgreSQL service that is not available. You should need to create a new pgservice secrets so QFieldCloud can connect to the PostgreSQL service.

ホスト "{HOST}" に接続できません。

QFieldCloud cannot establish a connection to the given {HOST}. Your service is not accessible from the QFieldCloud server. You might been to ask your IT department to whitelist the QFieldCloud IP.

ホスト"localhost"に接続できません。

You have uploaded a layer that connects to a database/service on your local machine. Either remove that layer or replace it with a layer source accessible by QFieldCloud.

ファイル "{FILENAME}" が見つかりません。

The file {FILENAME} (e.g. /tmp/rndstr/files/data.gpkg) is not found on the QFieldCloud server and cannot be opened. There are two things that should be checked:

  • Whether the file has been uploaded to the cloud. You can check this in Project Settings -> Files page on QFieldCloud or QFieldSync.
  • Making sure the file is uploaded with the same relative path as on your PC. Please note that all project files should be within the same project directory or subdirectory as the .qgs/.qgz QGIS project file. Please also note the directory names should be preserved too, for example if a file is stored in data/data.gpkg, make sure the data directory exists on QFieldCloud too.