ジョブ
QFieldCloud上のジョブはQGIS内のプロジェクトファイルやレイヤーを使って重い操作を行います。ジョブはユーザーの特定の操作に応じて作成されます。
ジョブが作成されると、プロジェクトのジョブキューに追加され、利用可能なQFieldCloudリソースが実行されるのを待ちます。プロジェクトごとに実行できるジョブは1つだけです。キューに入れられた残りのジョブは、キューに入ったときと同じ順序で実行されます。
各ジョブは1つまたは複数のステップで構成され、各ステップはプロジェクト上の1つの自己完結したタスクを担当します。QFieldCloudは3つの定義済みジョブワークフローをサポートしています: process_projectfile
、package
、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
) ジョブ¶
プロジェクトファイルを処理するジョブは、プロジェクト CRS、レイヤー CRS、レイヤー名、レイヤーの有効性など、プロジェクト構成とプロジェクトレイヤーに関する詳細を抽出するために使用されます。QFieldCloud は、アップロードされた QGIS プロジェクトファイル (.qgs
/.qgz
) と、サポートする GeoPackages、TIFF、およびその他のデータソース ファイルを検証します。また、PostGIS、WFS、WMS、その他のオンラインデータソースへのリモート接続も検証します。QFieldCloud は、サーバー上の QGIS インスタンスでプロジェクトファイルを開き、必要な情報をすべて抽出します。
トリガー¶
このジョブは、次のうち一つの条件が当てはまらない限り、ファイルがQFieldCloudにアップロードされるたびに発生します。:
- QGISプロジェクトファイル(
.qgs
/.qgz
)はまだアップロードされていません。 - アップロードされたファイルは
DCIM
ディレクトリ内にある。これらのファイルはプロジェクトの有効性とは無関係であると見なされます。 - 既に
PENDING
ステータスのprocess_projectfile
ジョブがあります。
トラブルシューティング¶
process_projectfile
ジョブがFAILED
ステータスになっているかもしれない。以下のリストを原因を探ってみてください:
- アップロードされたQGISプロジェクトファイル(
.qgs
/.qgz
)が読めない、不完全、壊れている、または間違っています。QGISプロジェクトファイルを再アップロードしてみてください。 - プロジェクトファイルを開くとQGISがクラッシュします。プロジェクトからレイヤーを1つずつ削除し、QGISプロジェクトファイルを再アップロードして、クラッシュの原因となっているレイヤーを特定してください。
備考
たとえ process_projectfile
ジョブの結果が SUCCESS
ステータスになったとしても、プロジェ クトが正しく設定されたことにはなりません。SUCCESS
ステータスは、プロジェクトが正常にオープンされ、必要な情報がすべて抽出されたことを示すだけです。
パッケージ (package
) ジョブ¶
package
ジョブは QGIS プロジェクトを QField プロジェクトに変換します。package
ジョブは "Offline editing" としてマークされたすべてのレイヤーを一つの GeoPackage に準備します。
トリガー¶
このジョブは、以下の条件の少なくとも1つが有効でない限り、QField上でDownloadボタンまたはSynchronizeボタンが押されるたびに発生します。:
- このプロジェクトは
SUCCESS
ステータスとなっているprocess_projectfile
ジョブを実行したことがありません。 - すでに
PENDING
ステータスのpackage
ジョブがあります。 - このプロジェクトにはオンラインのベクターレイヤー(PostGIS、WFSなど)は含まれておらず、最新の
package
ジョブの結果はSUCCESS
で、ファイルのアップロードも変更のアップロードもありませんでした。
トラブルシューティング¶
package
ジョブが FAILED
ステータスになっているかもしれない。以下のリストから原因を探ってください:
- このプロジェクトは
SUCCESS
ステータスとなっているprocess_projectfile
ジョブを実行したことがありません。 - プロジェクトレイヤーの一部がQFieldCloudからアクセスできない。すべてのファイルがアップロードされ、オンラインレイヤー(PostGIS、WFSなど)へのすべての認証情報がQGISプロジェクトファイル内に保存されていることを確認してください。
デルタ適用 (delta_apply
) ジョブ¶
デルタ適用ジョブ は、プッシュされたすべての QField の変更を永続化する責任があります。
トリガー¶
このジョブはQFieldでSynchronizeまたはPush changesボタンが押されるたびに、またはApply pending changesボタンがChangesプロジェクトページで押されるたびにトリガーされます。ただし、以下の条件のいずれかが有効な場合に限ります:
- このプロジェクトは
SUCCESS
ステータスとなっているprocess_projectfile
ジョブを実行したことがありません。 - 既に
PENDING
ステータスのdelta_apply
ジョブがあります。
トラブルシューティング¶
delta_apply
ジョブが FAILED
ステータスになっているかもしれない。以下のリストから原因を探ってください:
- QGISプロジェクトで使用されているオンラインデータベース(PostGIS/WFS)の少なくとも1つは、接続をリセットします。
- プロジェクトが大きすぎて、ジョブが失敗しました。
- プロジェクト内に、QFieldCloudの正常な動作を妨げている隠しファイルや隠しディレクトリがあります。隠しファイルや隠しディレクトリとは、先頭がドット(
.
)で始まるファイルやディレクトリのことです。
Understanding conflicts delta_apply
jobs¶
Conflicts can occur under the following conditions:
- 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.
- 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.
- 「変更」セクションに移動します。
- Filter the changes with the "CONFLICT" status.
- コンフリクトしている各変更を選択し、"Action "ドロップダウンメニューからステータスを "Re-apply "に設定します。また、すべての新しい変更がコンフリクトしている場合は、最後にコンフリクトした変更を選択し、"Re-apply this and newer changes "を選択することもできます。
- コンフリクトの変更内容を確認し、ページの最後にある「すべて保存」をクリックします。
QFieldCloudで変更を再適用する¶
- _My projects_の下にあるプロジェクト名をクリックします。.
- _Changes_セクションに移動してください。(変更点は新しいものから古いものへとソートされています)
- 再適用したい特定の変更箇所を見つけます。
- 右側の_Action_列で、ドロップダウンリストをクリックします。
-
変更を再適用するために必要なアクションを選択します。
- 特定の変更を再適用する: 特定の変更を再適用する必要がある場合は、再適用する各変更を選択し、__Re-apply__をクリックします。
- 最近の変更を再適用します: プロジェクトに加えられた最新の変更を再適用したい場合は、復元したい最初の変更を特定し、__Re-apply this and newer changes__を選択します。
最後に、__Save all__ボタンをクリックします。
ジョブログのトラブルシューティング¶
ジョブを実行すると、通常、ログに "Check project layers"(プロジェクトレイヤーのチェック)というステップがあり、すべてのプロジェクトレイヤーとその横にステータスが表示された表が印刷されます。
考えられるステータスは以下の通り:
- ok - レイヤーはQFieldCloudに正しくロードされます。
- invalid_dataprovider - レイヤーのデータプロバイダーが無効である。通常、追加情報は "Provider Summary" に表示されます。
- invalid_layer - このようなエラーが発生することはほとんどないはずです。データは正しくロードされていますが、何らかの理由でQGISはレイヤーを無効と報告します。
サービス "{SERVICE}
" に接続できません。¶
QFieldCloudが利用できないPostgreSQLサービスに接続しようとしている。QFieldCloudがPostGISサービスに接続できるように、新しいpgservice secretsを作成する必要があります。
ホスト "{HOST}
" に接続できません。¶
QFieldCloud は指定された {HOST}
への接続を確立できません。QFieldCloud サーバからサービスにアクセスできません。IT部門にQFieldCloudのIPをホワイトリストに登録するよう依頼する必要があるかもしれません。
ホスト"localhost"に接続できません。¶
ローカルマシンのデータベース/サービスに接続するレイヤーをアップロードしました。そのレイヤーを削除するか、QFieldCloudからアクセス可能なレイヤーソースに置き換えてください。
ファイル "{FILENAME}
" が見つかりません。¶
ファイル{FILENAME}
(例:/tmp/rndstr/files/data.gpkg
)がQFieldCloudサーバーに見つからず、開けません。確認すべきことが2つあります:
- ファイルがクラウドにアップロードされているかどうか。QFieldCloudまたはQFieldSyncのプロジェクトの設定 -> ファイルページで確認できます。
- ファイルがPCと同じ相対パスでアップロードされていることを確認してください。すべてのプロジェクトファイルは
.qgs
/.qgz
QGISプロジェクトファイルと同じプロジェクトディレクトリまたはサブディレクトリにある必要があります。ディレクトリ名も保存してください。例えば、ファイルがdata/data.gpkg
に保存されている場合、QFieldCloudにもdata
ディレクトリが存在することを確認してください。