@things-factory/dataset 7.0.0-alpha.7 → 7.0.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/pages/data-ooc/data-ooc-list-page.ts +13 -13
- package/client/pages/data-ooc/data-ooc-page.ts +2 -0
- package/client/pages/data-ooc/data-oocs-page.ts +2 -0
- package/client/pages/data-sample/data-sample-list-page.ts +10 -10
- package/client/pages/data-sample/data-sample-search-page.ts +10 -10
- package/client/pages/data-sample/data-sample-view.ts +1 -0
- package/client/pages/data-sample/data-samples-page.ts +2 -0
- package/client/pages/data-summary/data-summary-list-page.ts +12 -24
- package/dist-client/pages/data-ooc/data-ooc-list-page.js +13 -13
- package/dist-client/pages/data-ooc/data-ooc-list-page.js.map +1 -1
- package/dist-client/pages/data-ooc/data-ooc-page.js +2 -0
- package/dist-client/pages/data-ooc/data-ooc-page.js.map +1 -1
- package/dist-client/pages/data-ooc/data-oocs-page.js +2 -0
- package/dist-client/pages/data-ooc/data-oocs-page.js.map +1 -1
- package/dist-client/pages/data-sample/data-sample-list-page.js +10 -10
- package/dist-client/pages/data-sample/data-sample-list-page.js.map +1 -1
- package/dist-client/pages/data-sample/data-sample-search-page.js +10 -10
- package/dist-client/pages/data-sample/data-sample-search-page.js.map +1 -1
- package/dist-client/pages/data-sample/data-sample-view.js +1 -0
- package/dist-client/pages/data-sample/data-sample-view.js.map +1 -1
- package/dist-client/pages/data-sample/data-samples-page.js +2 -0
- package/dist-client/pages/data-sample/data-samples-page.js.map +1 -1
- package/dist-client/pages/data-summary/data-summary-list-page.js +12 -21
- package/dist-client/pages/data-summary/data-summary-list-page.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/activities/activity-data-collect.js.map +1 -1
- package/dist-server/activities/activity-ooc-review.js +1 -1
- package/dist-server/activities/activity-ooc-review.js.map +1 -1
- package/dist-server/controllers/issue-collect-data.js +55 -0
- package/dist-server/controllers/issue-collect-data.js.map +1 -0
- package/dist-server/engine/task/create-data-sample.js.map +1 -1
- package/dist-server/engine/task/index.js +1 -0
- package/dist-server/engine/task/index.js.map +1 -1
- package/dist-server/engine/task/issue-collect-data.js +40 -0
- package/dist-server/engine/task/issue-collect-data.js.map +1 -0
- package/dist-server/routes.js +2 -39
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/data-summary/data-summary.js +8 -8
- package/dist-server/service/data-summary/data-summary.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/helps/dataset/task/issue-collect-data.ja.md +35 -0
- package/helps/dataset/task/issue-collect-data.ko.md +32 -0
- package/helps/dataset/task/issue-collect-data.md +32 -0
- package/helps/dataset/task/issue-collect-data.ms.md +34 -0
- package/helps/dataset/task/issue-collect-data.zh.md +32 -0
- package/package.json +11 -11
- package/server/activities/activity-data-collect.ts +3 -11
- package/server/activities/activity-ooc-review.ts +1 -1
- package/server/controllers/issue-collect-data.ts +61 -0
- package/server/engine/task/create-data-sample.ts +2 -2
- package/server/engine/task/index.ts +1 -0
- package/server/engine/task/issue-collect-data.ts +45 -0
- package/server/routes.ts +2 -47
- package/server/service/data-summary/data-summary.ts +10 -23
@@ -0,0 +1,35 @@
|
|
1
|
+
# IssueCollectData タスク
|
2
|
+
|
3
|
+
このタスクは、特定のデータセットに関連付けられたデータ収集活動を開始します。指定されたソースからデータを収集するプロセスをトリガーして管理するように設計されており、データセットの構成と要件に合わせています。
|
4
|
+
|
5
|
+
## 概要
|
6
|
+
|
7
|
+
`IssueCollectData` タスクは、指定されたデータセットのデータ収集プロセスをトリガーする自動化関数です。センサー、API、またはその他のデータ生成エンティティなど、様々なソースから定期的またはイベント駆動でデータを収集する必要があるシナリオにおいて、このプロセスは不可欠です。
|
8
|
+
|
9
|
+
## パラメータ
|
10
|
+
|
11
|
+
- **データセット (dataset)**
|
12
|
+
- 説明:データ収集活動を開始するデータセットのユニークな識別子(ID)。この ID は
|
13
|
+
|
14
|
+
、システム内に既に設定されているデータセットに対応している必要があります。
|
15
|
+
|
16
|
+
- タイプ:`entity-selector`
|
17
|
+
- プロパティ:
|
18
|
+
- `queryName`:データセットオプションを取得するためのクエリを指定します。通常は `dataSets` です。
|
19
|
+
- `valueKey`:選択のための値として使用するプロパティを示します。通常は `id` です。
|
20
|
+
|
21
|
+
## 機能
|
22
|
+
|
23
|
+
実行時に、タスクはデータセット ID の存在を確認します。ID が提供されていない場合、タスクはデータセットが見つからないことを示すエラーを投げます。有効なデータセット ID が提供された場合、タスクはそのデータセットに特定のデータ収集活動を発行します。`issueCollectData` によって処理される基本的なプロセスには、データセットの存在の検証、データ収集環境の準備、およびデータセットの構成および関連するデータソースに従ってデータ収集プロセスを開始するなどの操作が含まれます。
|
24
|
+
|
25
|
+
タスクは開始された活動のインスタンスを返し、これを使用して進行状況を追跡し、データ収集ワークフローを管理するか、収集したデータを処理するための後続のタスクと統合することができます。
|
26
|
+
|
27
|
+
## 使用法
|
28
|
+
|
29
|
+
このタスクは、定期的に事前定義されたソースからデータを収集する必要がある自動化されたワークフローで特に有用です。データ収集プロセスを開始するトリガーとして機能し、データ摂取パイプライン、モニタリングシステム、または信頼できる構造化されたデータ収集メカニズムが必要なアプリケーションの自動管理を可能にします。
|
30
|
+
|
31
|
+
データセット ID がシステム内の適切に構成されたデータセットに対応していることを確認してください。このタスクは、自動化されたプロセスの一部としてデータ収集活動を開始するためのプログラマブルなインターフェースを提供し、より広範なデータ管理および分析ワークフローにシームレスに統合するように設計されています。
|
32
|
+
|
33
|
+
## 結論
|
34
|
+
|
35
|
+
`IssueCollectData` タスクは、指定されたデータセットのデータ収集活動の開始を自動化します。データ収集プロセスを開始するための柔軟でプログラマブルな方法を提供することにより、効率的なデータ管理を促進し、ユーザーが最小限の手動介入で最新のデータセットを維持できるようにします。このタスクは、定期的なデータ更新が必要な多様なソースからのデータ駆動型アプリケーションの不可欠な要素です。
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# IssueCollectData 작업
|
2
|
+
|
3
|
+
이 작업은 특정 데이터셋과 관련된 데이터 수집 활동을 시작합니다. 이는 지정된 소스에서 데이터를 수집하는 프로세스를 트리거하고 관리하도록 설계되었습니다. 데이터셋의 구성 및 요구 사항에 맞게 맞춰져 있습니다.
|
4
|
+
|
5
|
+
## 개요
|
6
|
+
|
7
|
+
`IssueCollectData` 작업은 지정된 데이터셋에 대한 데이터 수집 프로세스를 트리거하는 자동화된 함수입니다. 이 프로세스는 센서, API 또는 기타 데이터 생성 엔티티와 같은 다양한 소스에서 주기적 또는 이벤트 기반 데이터 수집이 필요한 시나리오에 필수적입니다.
|
8
|
+
|
9
|
+
## 매개변수
|
10
|
+
|
11
|
+
- **데이터셋 (dataset)**
|
12
|
+
- 설명: 데이터 수집 활동을 시작하기 위한 데이터셋의 고유 식별자(ID)입니다. 이 ID는 시스템 내에 이미 구성된 데이터셋과 일치해야 합니다.
|
13
|
+
- 타입: `entity-selector`
|
14
|
+
- 속성:
|
15
|
+
- `queryName`: 데이터셋 옵션을 검색하는 쿼리를 지정합니다. 일반적으로 `dataSets`입니다.
|
16
|
+
- `valueKey`: 선택을 위한 값으로 사용할 속성을 나타냅니다. 보통 `id`입니다.
|
17
|
+
|
18
|
+
## 기능
|
19
|
+
|
20
|
+
실행 시, 작업은 데이터셋 ID의 존재를 확인합니다. ID가 제공되지 않으면, 데이터셋이 발견되지 않았다는 오류를 발생시킵니다. 유효한 데이터셋 ID가 제공되면, 작업은 해당 데이터셋에 특정한 데이터 수집 활동을 발행합니다. `issueCollectData`에 의해 처리되는 기본 프로세스는 데이터셋의 존재를 확인, 데이터 수집 환경 준비, 데이터셋의 구성 및 관련 데이터 소스에 따라 데이터 수집 프로세스 시작과 같은 작업을 포함합니다.
|
21
|
+
|
22
|
+
작업은 시작된 활동의 인스턴스를 반환하며, 이는 진행 상황을 추적하고, 데이터 수집 워크플로를 관리하거나, 수집된 데이터를 처리하기 위한 후속 작업과 통합하는 데 사용할 수 있습니다.
|
23
|
+
|
24
|
+
## 사용법
|
25
|
+
|
26
|
+
이 작업은 주기적으로 미리 정의된 소스에서 데이터를 수집해야 하는 자동화된 워크플로에서 특히 유용합니다. 데이터 수집 프로세스를 시작하기 위한 트리거 역할을 하여, 데이터 수집 파이프라인, 모니터링 시스템 또는 신뢰할 수 있고 구조화된 데이터 수집 메커니즘이 필요한 모든 애플리케이션의 자동 관리를 가능하게 합니다.
|
27
|
+
|
28
|
+
데이터셋 ID가 시스템 내에 올바르게 구성된 데이터셋과 일치하는지 확인하십시오. 이 작업은 자동화된 프로세스의 일부로 데이터 수집 활동을 시작하는 프로그래밍 가능한 인터페이스를 제공하여, 더 넓은 데이터 관리 및 분석 워크플로와 원활하게 통합됩니다.
|
29
|
+
|
30
|
+
## 결론
|
31
|
+
|
32
|
+
`IssueCollectData` 작업은 지정된 데이터셋에 대한 데이터 수집 활동을 시작하는 과정을 자동화합니다. 데이터 수집 프로세스를 시작하기 위한 유연하고 프로그래밍 가능한 방법을 제공함으로써, 사용자가 최소한의 수동 개입으로 최신 데이터셋을 유지할 수 있게 하여 효율적인 데이터 관리를 촉진합니다. 이 작업은 정기적인 데이터 업데이트가 필요한 다양한 소스에서 데이터 기반 애플리케이션의 필수 구성 요소입니다.
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# IssueCollectData Task
|
2
|
+
|
3
|
+
This task initiates a data collection activity associated with a specific dataset. It is designed to trigger and manage the process of gathering data from designated sources, aligning with the dataset's configuration and requirements.
|
4
|
+
|
5
|
+
## Overview
|
6
|
+
|
7
|
+
The `IssueCollectData` task is an automated function that triggers a data collection process for a specified dataset. This process is essential in scenarios requiring periodic or event-driven data collection from various sources, such as sensors, APIs, or other data-producing entities.
|
8
|
+
|
9
|
+
## Parameters
|
10
|
+
|
11
|
+
- **Dataset (dataset)**
|
12
|
+
- Description: The unique identifier (ID) of the dataset for which the data collection activity is to be initiated. This ID should correspond to a dataset already configured within the system.
|
13
|
+
- Type: `entity-selector`
|
14
|
+
- Properties:
|
15
|
+
- `queryName`: Specifies the query to retrieve dataset options, typically `dataSets`.
|
16
|
+
- `valueKey`: Indicates the property to use as the value for selection, usually `id`.
|
17
|
+
|
18
|
+
## Functionality
|
19
|
+
|
20
|
+
Upon execution, the task checks for the presence of a dataset ID. If the ID is not provided, the task will throw an error indicating that no dataset has been found. If a valid dataset ID is provided, the task proceeds to issue a data collection activity specific to that dataset. The underlying process handled by `issueCollectData` involves operations such as validating the dataset's existence, preparing the data collection environment, and initiating the data collection process according to the dataset's configuration and associated data sources.
|
21
|
+
|
22
|
+
The task returns an instance of the activity initiated, which can be used to track the progress, manage the data collection workflow, or integrate with subsequent tasks for processing the collected data.
|
23
|
+
|
24
|
+
## Usage
|
25
|
+
|
26
|
+
This task is particularly useful in automated workflows where data needs to be periodically collected from predefined sources. It serves as a trigger for starting the data collection process, allowing for the automated management of data ingestion pipelines, monitoring systems, or any application requiring reliable and structured data collection mechanisms.
|
27
|
+
|
28
|
+
Ensure that the dataset ID corresponds to a properly configured dataset within your system. The task is designed to integrate seamlessly into broader data management and analysis workflows, offering a programmable interface for initiating data collection activities as part of an automated process.
|
29
|
+
|
30
|
+
## Conclusion
|
31
|
+
|
32
|
+
The `IssueCollectData` task automates the initiation of data collection activities for specified datasets. By providing a flexible and programmable way to start data collection processes, it facilitates efficient data management, enabling users to maintain up-to-date datasets with minimal manual intervention. This task is an essential component of data-driven applications, particularly those requiring regular data updates from diverse sources.
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# Tugas IssueCollectData
|
2
|
+
|
3
|
+
Tugas ini memulakan aktiviti pengumpulan data yang berkaitan dengan set data tertentu. Ia direka untuk memicu dan mengurus proses mengumpul data dari sumber yang ditetapkan, selaras dengan
|
4
|
+
|
5
|
+
konfigurasi dan keperluan set data.
|
6
|
+
|
7
|
+
## Gambaran Keseluruhan
|
8
|
+
|
9
|
+
Tugas `IssueCollectData` adalah fungsi automatik yang memicu proses pengumpulan data untuk set data yang ditentukan. Proses ini penting dalam skenario yang memerlukan pengumpulan data secara berkala atau berdasarkan peristiwa dari pelbagai sumber, seperti sensor, API, atau entiti penghasil data lain.
|
10
|
+
|
11
|
+
## Parameter
|
12
|
+
|
13
|
+
- **Dataset (dataset)**
|
14
|
+
- Deskripsi: Pengenal unik (ID) set data yang akan dimulakan aktiviti pengumpulan datanya. ID ini harus sesuai dengan set data yang sudah dikonfigurasi dalam sistem.
|
15
|
+
- Jenis: `entity-selector`
|
16
|
+
- Properti:
|
17
|
+
- `queryName`: Menentukan query untuk mengambil opsi set data, biasanya `dataSets`.
|
18
|
+
- `valueKey`: Menunjukkan properti yang digunakan sebagai nilai untuk seleksi, biasanya `id`.
|
19
|
+
|
20
|
+
## Fungsi
|
21
|
+
|
22
|
+
Saat dieksekusi, tugas memeriksa keberadaan ID set data. Jika ID tidak disediakan, tugas akan melempar kesalahan yang menunjukkan bahwa tidak ada set data yang ditemukan. Jika ID set data yang valid disediakan, tugas melanjutkan untuk mengeluarkan aktiviti pengumpulan data yang spesifik untuk set data tersebut. Proses dasar yang ditangani oleh `issueCollectData` melibatkan operasi seperti validasi keberadaan set data, persiapan lingkungan pengumpulan data, dan memulai proses pengumpulan data sesuai dengan konfigurasi set data dan sumber data terkait.
|
23
|
+
|
24
|
+
Tugas mengembalikan instansi aktivitas yang dimulai, yang dapat digunakan untuk melacak kemajuan, mengurus alur kerja pengumpulan data, atau mengintegrasikan dengan tugas berikutnya untuk memproses data yang dikumpulkan.
|
25
|
+
|
26
|
+
## Penggunaan
|
27
|
+
|
28
|
+
Tugas ini sangat berguna dalam alur kerja otomatis di mana data perlu dikumpulkan secara berkala dari sumber yang telah ditentukan. Ia berfungsi sebagai pemicu untuk memulai proses pengumpulan data, memungkinkan pengelolaan otomatis pipa pengambilan data, sistem pemantauan, atau aplikasi apa pun yang memerlukan mekanisme pengumpulan data yang dapat diandalkan dan terstruktur.
|
29
|
+
|
30
|
+
Pastikan bahwa ID set data sesuai dengan set data yang dikonfigurasi dengan benar dalam sistem Anda. Tugas ini dirancang untuk terintegrasi secara mulus ke dalam alur kerja pengelolaan dan analisis data yang lebih luas, menawarkan antarmuka yang dapat diprogram untuk memulai aktivitas pengumpulan data sebagai bagian dari proses otomatis.
|
31
|
+
|
32
|
+
## Kesimpulan
|
33
|
+
|
34
|
+
Tugas `IssueCollectData` mengotomatiskan inisiasi aktivitas pengumpulan data untuk set data tertentu. Dengan menyediakan cara yang fleksibel dan dapat diprogram untuk memulai proses pengumpulan data, ia memfasilitasi pengelolaan data yang efisien, memungkinkan pengguna untuk memelihara set data yang terkini dengan intervensi manual minimal. Tugas ini merupakan komponen penting dari aplikasi berbasis data, terutama yang memerlukan pembaruan data reguler dari sumber yang beragam.
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# IssueCollectData 任务
|
2
|
+
|
3
|
+
此任务启动与特定数据集关联的数据收集活动。它旨在触发和管理从指定来源收集数据的过程,以符合数据集的配置和要求。
|
4
|
+
|
5
|
+
## 概览
|
6
|
+
|
7
|
+
`IssueCollectData` 任务是一个自动化函数,用于触发特定数据集的数据收集过程。在需要从各种来源(如传感器、API 或其他数据生成实体)定期或事件驱动数据收集的场景中,此过程至关重要。
|
8
|
+
|
9
|
+
## 参数
|
10
|
+
|
11
|
+
- **数据集 (dataset)**
|
12
|
+
- 描述:要启动数据收集活动的数据集的唯一标识符(ID)。此 ID 应对应系统内已配置的数据集。
|
13
|
+
- 类型:`entity-selector`
|
14
|
+
- 属性:
|
15
|
+
- `queryName`:指定检索数据集选项的查询,通常为 `dataSets`。
|
16
|
+
- `valueKey`:指示用作选择值的属性,通常为 `id`。
|
17
|
+
|
18
|
+
## 功能
|
19
|
+
|
20
|
+
执行时,任务会检查数据集 ID 的存在。如果未提供 ID,则任务会抛出错误,指示未找到数据集。如果提供了有效的数据集 ID,则任务将继续针对该数据集发起数据收集活动。`issueCollectData` 处理的底层过程涉及验证数据集的存在、准备数据收集环境以及根据数据集的配置和关联数据源启动数据收集过程。
|
21
|
+
|
22
|
+
任务返回启动的活动实例,可用于跟踪进度、管理数据收集工作流或与后续任务集成以处理收集的数据。
|
23
|
+
|
24
|
+
## 用途
|
25
|
+
|
26
|
+
此任务在需要定期从预定义来源收集数据的自动化工作流中特别有用。它充当启动数据收集过程的触发器,允许自动管理数据摄取管道、监控系统或任何需要可靠和结构化数据收集机制的应用程序。
|
27
|
+
|
28
|
+
确保数据集 ID 对应于系统内正确配置的数据集。该任务旨在无缝集成到更广泛的数据管理和分析工作流中,提供用于启动自动化过程中数据收集活动的可编程接口。
|
29
|
+
|
30
|
+
## 结论
|
31
|
+
|
32
|
+
`IssueCollectData` 任务自动化了为特定数据集启动数据收集活动的过程。通过提供一种灵活和可编程的方式来启动数据收集过程,它促进了高效的数据管理,使用户能够以最小的手动干预维护最新的数据集。此任务是数据驱动应用的必要组成部分,特别是那些需要定期从多样化来源更新数据的应用程序。
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@things-factory/dataset",
|
3
|
-
"version": "7.0.0-alpha.
|
3
|
+
"version": "7.0.0-alpha.8",
|
4
4
|
"main": "dist-server/index.js",
|
5
5
|
"browser": "dist-client/index.js",
|
6
6
|
"things-factory": true,
|
@@ -40,20 +40,20 @@
|
|
40
40
|
"@operato/shell": "^2.0.0-alpha.0",
|
41
41
|
"@operato/styles": "^2.0.0-alpha.0",
|
42
42
|
"@operato/utils": "^2.0.0-alpha.0",
|
43
|
-
"@things-factory/auth-base": "^7.0.0-alpha.
|
44
|
-
"@things-factory/aws-base": "^7.0.0-alpha.
|
45
|
-
"@things-factory/board-service": "^7.0.0-alpha.
|
43
|
+
"@things-factory/auth-base": "^7.0.0-alpha.8",
|
44
|
+
"@things-factory/aws-base": "^7.0.0-alpha.8",
|
45
|
+
"@things-factory/board-service": "^7.0.0-alpha.8",
|
46
46
|
"@things-factory/env": "^7.0.0-alpha.0",
|
47
|
-
"@things-factory/integration-base": "^7.0.0-alpha.
|
48
|
-
"@things-factory/organization": "^7.0.0-alpha.
|
49
|
-
"@things-factory/scheduler-client": "^7.0.0-alpha.
|
50
|
-
"@things-factory/shell": "^7.0.0-alpha.
|
51
|
-
"@things-factory/work-shift": "^7.0.0-alpha.
|
52
|
-
"@things-factory/worklist": "^7.0.0-alpha.
|
47
|
+
"@things-factory/integration-base": "^7.0.0-alpha.8",
|
48
|
+
"@things-factory/organization": "^7.0.0-alpha.8",
|
49
|
+
"@things-factory/scheduler-client": "^7.0.0-alpha.8",
|
50
|
+
"@things-factory/shell": "^7.0.0-alpha.8",
|
51
|
+
"@things-factory/work-shift": "^7.0.0-alpha.8",
|
52
|
+
"@things-factory/worklist": "^7.0.0-alpha.8",
|
53
53
|
"cron-parser": "^4.3.0",
|
54
54
|
"moment-timezone": "^0.5.40",
|
55
55
|
"simple-statistics": "^7.8.3",
|
56
56
|
"statistics": "^3.3.0"
|
57
57
|
},
|
58
|
-
"gitHead": "
|
58
|
+
"gitHead": "b4981ea2721e7eaf4dbd618b6c77316ebc000ee5"
|
59
59
|
}
|
@@ -1,19 +1,11 @@
|
|
1
1
|
import { In } from 'typeorm'
|
2
2
|
|
3
|
-
import {
|
4
|
-
|
5
|
-
ActivityInstance,
|
6
|
-
ActivityInstanceStatus,
|
7
|
-
UpdateActivityInstanceStateAddendum
|
8
|
-
} from '@things-factory/worklist'
|
3
|
+
import { User } from '@things-factory/auth-base'
|
4
|
+
import { Activity, ActivityInstance, ActivityInstanceStatus, UpdateActivityInstanceStateAddendum } from '@things-factory/worklist'
|
9
5
|
import { NewDataSample } from 'service/data-sample/data-sample-type'
|
10
6
|
import { createDataSample } from '../controllers/create-data-sample'
|
11
7
|
|
12
|
-
async function callback(
|
13
|
-
activityInstance: ActivityInstance,
|
14
|
-
addendum: UpdateActivityInstanceStateAddendum,
|
15
|
-
context: ResolverContext
|
16
|
-
) {
|
8
|
+
async function callback(activityInstance: ActivityInstance, addendum: UpdateActivityInstanceStateAddendum, context: ResolverContext) {
|
17
9
|
const { domain, tx } = context.state
|
18
10
|
const { input, output, state } = activityInstance
|
19
11
|
|
@@ -16,7 +16,7 @@ async function callback(activityInstance: ActivityInstance, addendum: UpdateActi
|
|
16
16
|
|
17
17
|
if (activity) {
|
18
18
|
const { dataOocId } = input
|
19
|
-
const correctiveInstruction = output
|
19
|
+
const correctiveInstruction = output?.instruction
|
20
20
|
|
21
21
|
var dataOoc = await tx.getRepository(DataOoc).findOne({
|
22
22
|
where: {
|
@@ -0,0 +1,61 @@
|
|
1
|
+
import { In } from 'typeorm'
|
2
|
+
|
3
|
+
import { Domain, getDataSource } from '@things-factory/shell'
|
4
|
+
import { Activity, ActivityInstance, issue } from '@things-factory/worklist'
|
5
|
+
|
6
|
+
import { DataSet } from '../service/data-set/data-set'
|
7
|
+
|
8
|
+
export async function issueCollectData(domainId: string, dataSetId: string, context: ResolverContext): Promise<ActivityInstance> {
|
9
|
+
await getDataSource().transaction(async tx => {
|
10
|
+
const domain = await tx.getRepository(Domain).findOneBy({ id: domainId })
|
11
|
+
|
12
|
+
if (!domain) {
|
13
|
+
throw new Error(`domain(${domainId}) not found`)
|
14
|
+
}
|
15
|
+
|
16
|
+
const dataSet = await tx.getRepository(DataSet).findOne({
|
17
|
+
where: {
|
18
|
+
domain: {
|
19
|
+
id: In([domain.id, domain.parentId].filter(Boolean))
|
20
|
+
},
|
21
|
+
id: dataSetId
|
22
|
+
}
|
23
|
+
})
|
24
|
+
|
25
|
+
const activity = (await tx.getRepository(Activity).findOneBy({
|
26
|
+
domain: { id: domain.id },
|
27
|
+
name: 'Collect Data'
|
28
|
+
})) as Activity
|
29
|
+
|
30
|
+
if (activity) {
|
31
|
+
const { assignees } = dataSet
|
32
|
+
|
33
|
+
/* 해당 dataset에 대한 데이타 수집 태스크를 dataset assignees에게 할당한다. */
|
34
|
+
if (assignees && assignees instanceof Array && assignees.length > 0) {
|
35
|
+
const activityInstance = {
|
36
|
+
name: `[Data 수집] ${dataSet.name}`,
|
37
|
+
description: dataSet.description,
|
38
|
+
activityId: activity.id,
|
39
|
+
dueAt: new Date(Date.now() + 24 * 60 * 60 * 1000),
|
40
|
+
input: {
|
41
|
+
dataSetId: dataSet.id,
|
42
|
+
dataSetName: dataSet.name
|
43
|
+
},
|
44
|
+
assignees
|
45
|
+
}
|
46
|
+
|
47
|
+
context.state = {
|
48
|
+
...context.state,
|
49
|
+
domain,
|
50
|
+
tx
|
51
|
+
}
|
52
|
+
|
53
|
+
return await issue(activityInstance, context)
|
54
|
+
} else {
|
55
|
+
throw new Error(`Assignees not set. So Data Collect Activity for ${dataSet.name}($dataSet.id) could not be issued.`)
|
56
|
+
}
|
57
|
+
} else {
|
58
|
+
throw new Error(`Data Collect Activity is not installed.`)
|
59
|
+
}
|
60
|
+
})
|
61
|
+
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { TaskRegistry } from '@things-factory/integration-base'
|
1
|
+
import { TaskRegistry, InputStep, Context } from '@things-factory/integration-base'
|
2
2
|
import { getDataSource } from '@things-factory/shell'
|
3
3
|
import { access } from '@things-factory/utils'
|
4
4
|
import i18next from 'i18next'
|
@@ -7,7 +7,7 @@ import { DataSet } from '../../service/data-set/data-set'
|
|
7
7
|
|
8
8
|
import { createDataSample } from '../../controllers/create-data-sample'
|
9
9
|
|
10
|
-
async function CreateDataSample(step, context) {
|
10
|
+
async function CreateDataSample(step: InputStep, context: Context) {
|
11
11
|
const { logger, data, domain, user, lng } = context
|
12
12
|
var {
|
13
13
|
params: { dataset: dataSetId, source: sourceAccessor, rawData: rawDataAccessor, data: dataAccessor, timestamp }
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import { TaskRegistry, InputStep, Context } from '@things-factory/integration-base'
|
2
|
+
import { issueCollectData } from '../../controllers/issue-collect-data'
|
3
|
+
import i18next from 'i18next'
|
4
|
+
|
5
|
+
async function IssueCollectData(step: InputStep, context: Context) {
|
6
|
+
const { logger, data, domain, user, lng } = context
|
7
|
+
var {
|
8
|
+
params: { dataset: dataSetId }
|
9
|
+
} = step
|
10
|
+
|
11
|
+
if (!dataSetId) {
|
12
|
+
throw new Error(`no dataset found`)
|
13
|
+
}
|
14
|
+
|
15
|
+
const activityInstance = await issueCollectData(domain.id, dataSetId, {
|
16
|
+
t: i18next.t,
|
17
|
+
state: {
|
18
|
+
domain,
|
19
|
+
user,
|
20
|
+
lng,
|
21
|
+
tx: undefined
|
22
|
+
}
|
23
|
+
})
|
24
|
+
|
25
|
+
return {
|
26
|
+
data: activityInstance
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
IssueCollectData.parameterSpec = [
|
31
|
+
{
|
32
|
+
type: 'entity-selector',
|
33
|
+
name: 'dataset',
|
34
|
+
label: 'data-set',
|
35
|
+
property: {
|
36
|
+
queryName: 'dataSets',
|
37
|
+
valueKey: 'id'
|
38
|
+
}
|
39
|
+
}
|
40
|
+
]
|
41
|
+
|
42
|
+
IssueCollectData.connectorFree = true
|
43
|
+
IssueCollectData.help = 'dataset/task/issue-collect-data'
|
44
|
+
|
45
|
+
TaskRegistry.registerTaskHandler('issue-collect-data', IssueCollectData)
|
package/server/routes.ts
CHANGED
@@ -2,14 +2,13 @@ import { In } from 'typeorm'
|
|
2
2
|
|
3
3
|
import { Domain, getDataSource } from '@things-factory/shell'
|
4
4
|
import { User } from '@things-factory/auth-base'
|
5
|
-
import { Activity } from '@things-factory/worklist'
|
6
|
-
import { issue } from '@things-factory/worklist/dist-server/controllers/activity-instance/issue'
|
7
5
|
import { runScenario } from '@things-factory/integration-base'
|
8
6
|
import { ScheduleRegisterRequest } from '@things-factory/scheduler-client'
|
9
7
|
|
10
8
|
import { createDataSample } from './controllers/create-data-sample'
|
11
9
|
import { renderJasperReport } from './controllers/jasper-report'
|
12
10
|
import { renderShinyReport } from './controllers/shiny-report'
|
11
|
+
import { issueCollectData } from './controllers/issue-collect-data'
|
13
12
|
import { DataSensor } from './service/data-sensor/data-sensor'
|
14
13
|
import { DataSet } from './service/data-set/data-set'
|
15
14
|
|
@@ -117,51 +116,7 @@ process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRout
|
|
117
116
|
throw new Error(`group(${domainId}) and key(${dataSetId}) properties should not be empty`)
|
118
117
|
}
|
119
118
|
|
120
|
-
await
|
121
|
-
const domain = await tx.getRepository(Domain).findOneBy({ id: domainId })
|
122
|
-
|
123
|
-
if (!domain) {
|
124
|
-
throw new Error(`domain(${domainId}) not found`)
|
125
|
-
}
|
126
|
-
|
127
|
-
const dataSet = await tx.getRepository(DataSet).findOne({ where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id: dataSetId } })
|
128
|
-
|
129
|
-
const activity = (await tx.getRepository(Activity).findOneBy({
|
130
|
-
domain: { id: domainId },
|
131
|
-
name: 'Collect Data'
|
132
|
-
})) as Activity
|
133
|
-
|
134
|
-
if (activity) {
|
135
|
-
const { assignees } = dataSet
|
136
|
-
|
137
|
-
/* 해당 dataset에 대한 데이타 수집 태스크를 dataset assignees에게 할당한다. */
|
138
|
-
if (assignees && assignees instanceof Array && assignees.length > 0) {
|
139
|
-
const activityInstance = {
|
140
|
-
name: `[Data 수집] ${dataSet.name}`,
|
141
|
-
description: dataSet.description,
|
142
|
-
activityId: activity.id,
|
143
|
-
dueAt: new Date(Date.now() + 24 * 60 * 60 * 1000),
|
144
|
-
input: {
|
145
|
-
dataSetId: dataSet.id,
|
146
|
-
dataSetName: dataSet.name
|
147
|
-
},
|
148
|
-
assignees
|
149
|
-
}
|
150
|
-
|
151
|
-
context.state = {
|
152
|
-
...context.state,
|
153
|
-
domain,
|
154
|
-
tx
|
155
|
-
}
|
156
|
-
|
157
|
-
await issue(activityInstance, context)
|
158
|
-
} else {
|
159
|
-
throw new Error(`Assignees not set. So Data Collect Activity for ${dataSet.name}($dataSet.id) could not be issued.`)
|
160
|
-
}
|
161
|
-
} else {
|
162
|
-
throw new Error(`Data Collect Activity is not installed.`)
|
163
|
-
}
|
164
|
-
})
|
119
|
+
await issueCollectData(domainId, dataSetId, context)
|
165
120
|
|
166
121
|
context.status = 200
|
167
122
|
})
|
@@ -1,13 +1,4 @@
|
|
1
|
-
import {
|
2
|
-
CreateDateColumn,
|
3
|
-
UpdateDateColumn,
|
4
|
-
Entity,
|
5
|
-
Index,
|
6
|
-
Column,
|
7
|
-
RelationId,
|
8
|
-
ManyToOne,
|
9
|
-
PrimaryGeneratedColumn
|
10
|
-
} from 'typeorm'
|
1
|
+
import { CreateDateColumn, UpdateDateColumn, Entity, Index, Column, RelationId, ManyToOne, PrimaryGeneratedColumn } from 'typeorm'
|
11
2
|
import { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'
|
12
3
|
|
13
4
|
import { Domain, ScalarObject } from '@things-factory/shell'
|
@@ -25,18 +16,14 @@ import { DataSet, DataSetSummaryPeriodType } from '../data-set/data-set'
|
|
25
16
|
dataSummary.key01,
|
26
17
|
dataSummary.key02,
|
27
18
|
dataSummary.key03,
|
28
|
-
dataSummary.key05,
|
29
19
|
dataSummary.key04,
|
20
|
+
dataSummary.key05,
|
30
21
|
dataSummary.date,
|
31
22
|
dataSummary.period
|
32
23
|
],
|
33
24
|
{ unique: true }
|
34
25
|
)
|
35
|
-
@Index(
|
36
|
-
'ix_data_summary_1',
|
37
|
-
(dataSummary: DataSummary) => [dataSummary.domain, dataSummary.dataSet, dataSummary.date, dataSummary.period],
|
38
|
-
{ unique: false }
|
39
|
-
)
|
26
|
+
@Index('ix_data_summary_1', (dataSummary: DataSummary) => [dataSummary.domain, dataSummary.dataSet, dataSummary.date, dataSummary.period], { unique: false })
|
40
27
|
@ObjectType({ description: 'Entity for DataSummary' })
|
41
28
|
export class DataSummary {
|
42
29
|
@PrimaryGeneratedColumn('uuid')
|
@@ -62,11 +49,11 @@ export class DataSummary {
|
|
62
49
|
@Field({ nullable: true })
|
63
50
|
type?: DataSetSummaryPeriodType
|
64
51
|
|
65
|
-
@Column({ nullable: true, default: '' })
|
52
|
+
@Column({ nullable: true, default: '', length: 20 })
|
66
53
|
@Field({ nullable: true })
|
67
54
|
date?: string = ''
|
68
55
|
|
69
|
-
@Column({ nullable: true, default: '' })
|
56
|
+
@Column({ nullable: true, default: '', length: 20 })
|
70
57
|
@Field({ nullable: true })
|
71
58
|
period?: string = ''
|
72
59
|
|
@@ -106,23 +93,23 @@ export class DataSummary {
|
|
106
93
|
@Field({ nullable: true })
|
107
94
|
countOos?: number
|
108
95
|
|
109
|
-
@Column({ nullable: true, default: '' })
|
96
|
+
@Column({ nullable: true, default: '', length: 100 })
|
110
97
|
@Field({ nullable: true })
|
111
98
|
key01?: string = ''
|
112
99
|
|
113
|
-
@Column({ nullable: true, default: '' })
|
100
|
+
@Column({ nullable: true, default: '', length: 100 })
|
114
101
|
@Field({ nullable: true })
|
115
102
|
key02?: string = ''
|
116
103
|
|
117
|
-
@Column({ nullable: true, default: '' })
|
104
|
+
@Column({ nullable: true, default: '', length: 100 })
|
118
105
|
@Field({ nullable: true })
|
119
106
|
key03?: string = ''
|
120
107
|
|
121
|
-
@Column({ nullable: true, default: '' })
|
108
|
+
@Column({ nullable: true, default: '', length: 100 })
|
122
109
|
@Field({ nullable: true })
|
123
110
|
key04?: string = ''
|
124
111
|
|
125
|
-
@Column({ nullable: true, default: '' })
|
112
|
+
@Column({ nullable: true, default: '', length: 100 })
|
126
113
|
@Field({ nullable: true })
|
127
114
|
key05?: string = ''
|
128
115
|
|