From 6227bdda17b8652c94aa961b3af33526cdceecbc Mon Sep 17 00:00:00 2001 From: HenryWedge <57867426+HenryWedge@users.noreply.github.com> Date: Fri, 16 Aug 2024 13:43:21 +0200 Subject: [PATCH 001/124] Create LICENSE --- LICENSE | 201 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. From e40872d64783c8793a329c348bbefe85e99dcf0b Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Tue, 10 Sep 2024 13:04:01 +0200 Subject: [PATCH 002/124] move event selection provider --- core/datasource.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/datasource.py b/core/datasource.py index 7af40c9..fadf049 100644 --- a/core/datasource.py +++ b/core/datasource.py @@ -2,8 +2,8 @@ from typing import List from core.event import Event, StartEvent, EndEvent, AbstractEvent -from provider.eventselection import EventSelectionProvider from provider.event.event_provider import EventDataProvider, StartEventProvider, EndEventProvider +from provider.eventselection.event_selection_provider import EventSelectionProvider from provider.sink.sink_provider import Sink from core.datasource_id import DataSourceId, START_SENSOR_ID, END_DATA_SOURCE_ID from provider.transition.transition_provider_factory import NextSensorProvider From b0d380f6686d4c2fe5c9668d57195191482f3b2e Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Tue, 10 Sep 2024 13:40:49 +0200 Subject: [PATCH 003/124] add github build pipeline --- .github/workflows/docker-image.yml | 22 ++++++++++++++++++++++ Dockerfile | 1 - 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/docker-image.yml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml new file mode 100644 index 0000000..d7f08d1 --- /dev/null +++ b/.github/workflows/docker-image.yml @@ -0,0 +1,22 @@ +name: Docker Image CI + +on: + push: + branches: [ "feature/github-actions-docker-build" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_TOKEN }} + - name: Build image + run: docker build . --file Dockerfile --tag hendrikreiter/distributed-event-factory:0.2.0-SNAPSHOT + - name: Push image + run: docker push hendrikreiter/distributed-event-factory:0.2.0-SNAPSHOT \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index f6f5869..053e577 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,6 @@ FROM python:${PYTHON_VERSION}-slim AS base ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 ENV PYTHONPATH=/app -ENV CONFIG_FILE=proposed.yml WORKDIR /app From 69d698171738a84a2689943c77d1fc11dfcd919c Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Tue, 10 Sep 2024 13:47:27 +0200 Subject: [PATCH 004/124] add github build pipeline --- .github/workflows/docker-image.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index d7f08d1..520c920 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -14,8 +14,8 @@ jobs: - name: Login to Docker Hub uses: docker/login-action@v3 with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_TOKEN }} + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Build image run: docker build . --file Dockerfile --tag hendrikreiter/distributed-event-factory:0.2.0-SNAPSHOT - name: Push image From e63e2f56cf844025260e30311a2ea97aa0dd5079 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Tue, 10 Sep 2024 16:37:12 +0200 Subject: [PATCH 005/124] add publish on PyPI --- .github/workflows/docker-image.yml | 4 ++-- ...sors.iml => distributed-event-factory.iml} | 0 README.md | 7 +++---- pyproject.toml | 20 +++++++++++++++++++ scalability-test.py | 14 ------------- {config => src}/__init__.py | 0 .../distributed_event_factory}/__init__.py | 0 .../config}/__init__.py | 0 .../config}/assembly_line.yml | 0 .../config}/assembly_line_kafka.yml | 0 .../config}/warehouse.yml | 0 .../core}/__init__.py | 0 .../core}/datasource.py | 13 ++++++------ .../core}/datasource_id.py | 0 .../distributed_event_factory/core}/event.py | 0 .../distributed_event_factory/main.py | 2 +- .../provider}/__init__.py | 0 .../provider}/activity/README.md | 0 .../provider/activity}/__init__.py | 0 .../provider}/activity/activity_provider.py | 0 .../provider/activity/generation}/__init__.py | 0 .../activity_generation_provider.py | 2 +- .../activity_generation_registry.py | 6 +++--- .../provider/activity/selection}/__init__.py | 0 .../selection/activity_selection_provider.py | 0 .../activity_selection_provider_registry.py | 15 +++++++++----- .../activity/selection/ordered}/__init__.py | 0 .../ordered/ordered_selection_provider.py | 9 +++++---- .../activity/selection/single}/__init__.py | 0 .../single/single_selection_provider.py | 6 +++--- .../activity/selection/uniform}/__init__.py | 0 .../uniform/uniform_selection_provider.py | 9 +++++---- .../provider/data}/__init__.py | 0 .../provider}/data/case_provider.py | 0 .../provider}/datasource/README.md | 0 .../provider/datasource}/__init__.py | 0 .../datasource/data_source_registry.py | 11 +++++----- .../datasource/datasource_id_provider.py | 4 ++-- .../provider}/datasource/sensor_topology.py | 8 ++++---- .../datasource/sensor_topology_registry.py | 7 ++++--- .../provider}/event/README.md | 0 .../provider/event}/__init__.py | 0 .../provider}/event/event_data.py | 6 +++--- .../provider}/event/event_provider.py | 13 +++++++----- .../event/event_provider_registry.py | 10 ++++++---- .../provider}/eventselection/README.md | 0 .../provider/eventselection}/__init__.py | 0 .../event_selection_provider.py | 0 .../event_selection_provider_registry.py | 14 +++++++------ ...ic_probability_event_selection_provider.py | 5 +++-- .../ordered_selection_provider.py | 4 ++-- .../uniform_selction_provider.py | 6 +++--- .../provider/generic}/__init__.py | 0 .../provider}/generic/count_provider.py | 0 .../generic/count_provider_registry.py | 4 +++- .../provider}/load/README.md | 0 .../provider/load}/__init__.py | 0 .../provider}/load/load_provider.py | 0 .../provider}/load/load_provider_registry.py | 4 +++- .../provider}/provider_registry.py | 12 +++++------ .../provider}/sink/README.md | 0 .../provider/sink}/__init__.py | 0 .../provider/sink/console}/__init__.py | 0 .../provider}/sink/console/console_sink.py | 5 +++-- .../provider}/sink/kafka/README.md | 0 .../provider/sink/kafka}/__init__.py | 0 .../provider}/sink/kafka/kafka_sink.py | 7 +++---- .../sink/kafka/kafka_validation_sink.py | 9 ++++----- .../provider}/sink/kafka/partition/README.md | 0 .../sink/kafka/partition}/__init__.py | 0 .../kafka/partition/partition_provider.py | 2 +- .../kafka/partition/partition_registry.py | 3 ++- .../provider}/sink/sink_provider.py | 3 ++- .../provider}/sink/sink_provider_registry.py | 12 +++++------ .../provider/sink/ui}/__init__.py | 0 .../provider}/sink/ui/terminal_ui_sink.py | 6 +++--- .../provider/transition}/__init__.py | 0 .../provider/transition/duration}/__init__.py | 0 .../transition/duration/duration_provider.py | 0 .../transition/duration/duration_registry.py | 2 +- .../transition/next_state_provider.py | 0 .../transition/nextsensor/__init__.py | 0 .../nextsensor/next_sensor_provider.py | 0 .../next_sensor_provider_registry.py | 2 +- .../transition_matrix_creation_strategy.py | 6 +++--- .../transition_probability_provider.py | 0 .../transition/transition_provider.py | 0 .../transition/transition_provider_factory.py | 4 ++-- .../simulation/__init__.py | 0 .../simulation}/distributed_event_factory.py | 4 ++-- .../simulation}/eventloop/README.md | 0 .../simulation/eventloop/__init__.py | 0 .../simulation}/eventloop/event_loop.py | 0 .../eventloop/event_loop_registry.py | 4 ++-- .../simulation}/process_simulator.py | 6 +++--- .../simulation}/simulation.py | 10 +++++----- .../view/__init__.py | 0 .../view}/terminal.py | 0 98 files changed, 164 insertions(+), 136 deletions(-) rename .idea/{Sensors.iml => distributed-event-factory.iml} (100%) create mode 100644 pyproject.toml delete mode 100644 scalability-test.py rename {config => src}/__init__.py (100%) rename {core => src/distributed_event_factory}/__init__.py (100%) rename {provider => src/distributed_event_factory/config}/__init__.py (100%) rename {config => src/distributed_event_factory/config}/assembly_line.yml (100%) rename {config => src/distributed_event_factory/config}/assembly_line_kafka.yml (100%) rename {config => src/distributed_event_factory/config}/warehouse.yml (100%) rename {provider/activity => src/distributed_event_factory/core}/__init__.py (100%) rename {core => src/distributed_event_factory/core}/datasource.py (81%) rename {core => src/distributed_event_factory/core}/datasource_id.py (100%) rename {core => src/distributed_event_factory/core}/event.py (100%) rename main.py => src/distributed_event_factory/main.py (69%) rename {provider/activity/generation => src/distributed_event_factory/provider}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/activity/README.md (100%) rename {provider/activity/selection => src/distributed_event_factory/provider/activity}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/activity/activity_provider.py (100%) rename {provider/activity/selection/ordered => src/distributed_event_factory/provider/activity/generation}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/activity/generation/activity_generation_provider.py (93%) rename {provider => src/distributed_event_factory/provider}/activity/generation/activity_generation_registry.py (64%) rename {provider/activity/selection/single => src/distributed_event_factory/provider/activity/selection}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/activity/selection/activity_selection_provider.py (100%) rename {provider => src/distributed_event_factory/provider}/activity/selection/activity_selection_provider_registry.py (50%) rename {provider/activity/selection/uniform => src/distributed_event_factory/provider/activity/selection/ordered}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/activity/selection/ordered/ordered_selection_provider.py (69%) rename {provider/data => src/distributed_event_factory/provider/activity/selection/single}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/activity/selection/single/single_selection_provider.py (69%) rename {provider/datasource => src/distributed_event_factory/provider/activity/selection/uniform}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/activity/selection/uniform/uniform_selection_provider.py (68%) rename {provider/event => src/distributed_event_factory/provider/data}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/data/case_provider.py (100%) rename {provider => src/distributed_event_factory/provider}/datasource/README.md (100%) rename {provider/eventselection => src/distributed_event_factory/provider/datasource}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/datasource/data_source_registry.py (66%) rename {provider => src/distributed_event_factory/provider}/datasource/datasource_id_provider.py (89%) rename {provider => src/distributed_event_factory/provider}/datasource/sensor_topology.py (70%) rename {provider => src/distributed_event_factory/provider}/datasource/sensor_topology_registry.py (55%) rename {provider => src/distributed_event_factory/provider}/event/README.md (100%) rename {provider/generic => src/distributed_event_factory/provider/event}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/event/event_data.py (66%) rename {provider => src/distributed_event_factory/provider}/event/event_provider.py (75%) rename {provider => src/distributed_event_factory/provider}/event/event_provider_registry.py (53%) rename {provider => src/distributed_event_factory/provider}/eventselection/README.md (100%) rename {provider/load => src/distributed_event_factory/provider/eventselection}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/eventselection/event_selection_provider.py (100%) rename {provider => src/distributed_event_factory/provider}/eventselection/event_selection_provider_registry.py (63%) rename {provider => src/distributed_event_factory/provider}/eventselection/generic_probability_event_selection_provider.py (71%) rename {provider => src/distributed_event_factory/provider}/eventselection/ordered_selection_provider.py (65%) rename {provider => src/distributed_event_factory/provider}/eventselection/uniform_selction_provider.py (58%) rename {provider/sink => src/distributed_event_factory/provider/generic}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/generic/count_provider.py (100%) rename {provider => src/distributed_event_factory/provider}/generic/count_provider_registry.py (70%) rename {provider => src/distributed_event_factory/provider}/load/README.md (100%) rename {provider/sink/kafka => src/distributed_event_factory/provider/load}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/load/load_provider.py (100%) rename {provider => src/distributed_event_factory/provider}/load/load_provider_registry.py (75%) rename {provider => src/distributed_event_factory/provider}/provider_registry.py (55%) rename {provider => src/distributed_event_factory/provider}/sink/README.md (100%) rename {provider/sink/kafka/partition => src/distributed_event_factory/provider/sink}/__init__.py (100%) rename {provider/transition => src/distributed_event_factory/provider/sink/console}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/sink/console/console_sink.py (65%) rename {provider => src/distributed_event_factory/provider}/sink/kafka/README.md (100%) rename {provider/transition/duration => src/distributed_event_factory/provider/sink/kafka}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/sink/kafka/kafka_sink.py (84%) rename {provider => src/distributed_event_factory/provider}/sink/kafka/kafka_validation_sink.py (88%) rename {provider => src/distributed_event_factory/provider}/sink/kafka/partition/README.md (100%) rename {provider/transition/nextsensor => src/distributed_event_factory/provider/sink/kafka/partition}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/sink/kafka/partition/partition_provider.py (89%) rename {provider => src/distributed_event_factory/provider}/sink/kafka/partition/partition_registry.py (68%) rename {provider => src/distributed_event_factory/provider}/sink/sink_provider.py (75%) rename {provider => src/distributed_event_factory/provider}/sink/sink_provider_registry.py (61%) rename {simulation => src/distributed_event_factory/provider/sink/ui}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/sink/ui/terminal_ui_sink.py (64%) rename {simulation/eventloop => src/distributed_event_factory/provider/transition}/__init__.py (100%) rename {view => src/distributed_event_factory/provider/transition/duration}/__init__.py (100%) rename {provider => src/distributed_event_factory/provider}/transition/duration/duration_provider.py (100%) rename {provider => src/distributed_event_factory/provider}/transition/duration/duration_registry.py (82%) rename {provider => src/distributed_event_factory/provider}/transition/next_state_provider.py (100%) create mode 100644 src/distributed_event_factory/provider/transition/nextsensor/__init__.py rename {provider => src/distributed_event_factory/provider}/transition/nextsensor/next_sensor_provider.py (100%) rename {provider => src/distributed_event_factory/provider}/transition/nextsensor/next_sensor_provider_registry.py (74%) rename {provider => src/distributed_event_factory/provider}/transition/transition_matrix_creation_strategy.py (86%) rename {provider => src/distributed_event_factory/provider}/transition/transition_probability_provider.py (100%) rename {provider => src/distributed_event_factory/provider}/transition/transition_provider.py (100%) rename {provider => src/distributed_event_factory/provider}/transition/transition_provider_factory.py (86%) create mode 100644 src/distributed_event_factory/simulation/__init__.py rename {simulation => src/distributed_event_factory/simulation}/distributed_event_factory.py (80%) rename {simulation => src/distributed_event_factory/simulation}/eventloop/README.md (100%) create mode 100644 src/distributed_event_factory/simulation/eventloop/__init__.py rename {simulation => src/distributed_event_factory/simulation}/eventloop/event_loop.py (100%) rename {simulation => src/distributed_event_factory/simulation}/eventloop/event_loop_registry.py (57%) rename {simulation => src/distributed_event_factory/simulation}/process_simulator.py (88%) rename {simulation => src/distributed_event_factory/simulation}/simulation.py (71%) create mode 100644 src/distributed_event_factory/view/__init__.py rename {view => src/distributed_event_factory/view}/terminal.py (100%) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 520c920..d56d5fe 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -17,6 +17,6 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Build image - run: docker build . --file Dockerfile --tag hendrikreiter/distributed-event-factory:0.2.0-SNAPSHOT + run: docker build . --file Dockerfile --tag hendrikreiter/distributed_event_factory:0.2.0-SNAPSHOT - name: Push image - run: docker push hendrikreiter/distributed-event-factory:0.2.0-SNAPSHOT \ No newline at end of file + run: docker push hendrikreiter/distributed_event_factory:0.2.0-SNAPSHOT \ No newline at end of file diff --git a/.idea/Sensors.iml b/.idea/distributed-event-factory.iml similarity index 100% rename from .idea/Sensors.iml rename to .idea/distributed-event-factory.iml diff --git a/README.md b/README.md index f86658f..d08d468 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ The `debug` option should be used for development and produces more verbose stac The data sources are defined via a Markov chain. The Markov Chain is configured in a distributed fashion. Each data source knows its successor. On every edge a duration, a generated activity and the next invoked datasource is -defined. More details can be found [here](provider/datasource/README.md) +defined. More details can be found [here](src/distributed_event_factory/provider/datasource/README.md) ## Installation @@ -94,11 +94,10 @@ pip install -r requirements.txt Define the `Distribted Event Factory` and specify a config file like mentioned above. - ```python -from simulation.distributed_event_factory import DistributedEventFactory +from src.simulation.distributed_event_factory import DistributedEventFactory -config_file="config/assembly_line.yml" +config_file = "src/distributed_event_factory/config/assembly_line.yml" DistributedEventFactory(config_file).start() ``` diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..ac4baa8 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,20 @@ +[project] +name = "distributed-event-factory" +version = "0.1.0" +authors = [ + { name="Hendrik Reiter", email="hendrik.reiter@email.uni-kiel.de" }, +] +description = "A tool for generating distributed event logs" +readme = "README.md" +requires-python = ">=3.8" +classifiers = [ + "Programming Language :: Python :: 3", + "Operating System :: OS Independent", +] + +[project.urls] +Homepage = "https://github.com/cau-se/DistributedEventFactory" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" \ No newline at end of file diff --git a/scalability-test.py b/scalability-test.py deleted file mode 100644 index f03bf3f..0000000 --- a/scalability-test.py +++ /dev/null @@ -1,14 +0,0 @@ -import os -import threading - -from simulation.distributed_event_factory import DistributedEventFactory - -if __name__ == '__main__': - if "CONFIG_FILE" in os.environ: - config_file = os.environ["CONFIG_FILE"] - else: - config_file = "config/maturity-test.yml" - - distributed_event_factory = DistributedEventFactory(config_file) - - threading.Timer(10.0, distributed_event_factory.start).start() \ No newline at end of file diff --git a/config/__init__.py b/src/__init__.py similarity index 100% rename from config/__init__.py rename to src/__init__.py diff --git a/core/__init__.py b/src/distributed_event_factory/__init__.py similarity index 100% rename from core/__init__.py rename to src/distributed_event_factory/__init__.py diff --git a/provider/__init__.py b/src/distributed_event_factory/config/__init__.py similarity index 100% rename from provider/__init__.py rename to src/distributed_event_factory/config/__init__.py diff --git a/config/assembly_line.yml b/src/distributed_event_factory/config/assembly_line.yml similarity index 100% rename from config/assembly_line.yml rename to src/distributed_event_factory/config/assembly_line.yml diff --git a/config/assembly_line_kafka.yml b/src/distributed_event_factory/config/assembly_line_kafka.yml similarity index 100% rename from config/assembly_line_kafka.yml rename to src/distributed_event_factory/config/assembly_line_kafka.yml diff --git a/config/warehouse.yml b/src/distributed_event_factory/config/warehouse.yml similarity index 100% rename from config/warehouse.yml rename to src/distributed_event_factory/config/warehouse.yml diff --git a/provider/activity/__init__.py b/src/distributed_event_factory/core/__init__.py similarity index 100% rename from provider/activity/__init__.py rename to src/distributed_event_factory/core/__init__.py diff --git a/core/datasource.py b/src/distributed_event_factory/core/datasource.py similarity index 81% rename from core/datasource.py rename to src/distributed_event_factory/core/datasource.py index fadf049..47d34a4 100644 --- a/core/datasource.py +++ b/src/distributed_event_factory/core/datasource.py @@ -1,12 +1,13 @@ from abc import abstractmethod, ABC from typing import List -from core.event import Event, StartEvent, EndEvent, AbstractEvent -from provider.event.event_provider import EventDataProvider, StartEventProvider, EndEventProvider -from provider.eventselection.event_selection_provider import EventSelectionProvider -from provider.sink.sink_provider import Sink -from core.datasource_id import DataSourceId, START_SENSOR_ID, END_DATA_SOURCE_ID -from provider.transition.transition_provider_factory import NextSensorProvider +from src.distributed_event_factory.core.datasource_id import DataSourceId, START_SENSOR_ID, END_DATA_SOURCE_ID +from src.distributed_event_factory.core.event import AbstractEvent, StartEvent, EndEvent, Event +from src.distributed_event_factory.provider.event.event_provider import EventDataProvider, EndEventProvider, \ + StartEventProvider +from src.distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider +from src.distributed_event_factory.provider.sink.sink_provider import Sink +from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider class DataSource(ABC): diff --git a/core/datasource_id.py b/src/distributed_event_factory/core/datasource_id.py similarity index 100% rename from core/datasource_id.py rename to src/distributed_event_factory/core/datasource_id.py diff --git a/core/event.py b/src/distributed_event_factory/core/event.py similarity index 100% rename from core/event.py rename to src/distributed_event_factory/core/event.py diff --git a/main.py b/src/distributed_event_factory/main.py similarity index 69% rename from main.py rename to src/distributed_event_factory/main.py index 6d8fbcd..6268c59 100644 --- a/main.py +++ b/src/distributed_event_factory/main.py @@ -1,6 +1,6 @@ import os -from simulation.distributed_event_factory import DistributedEventFactory +from src.distributed_event_factory.simulation.distributed_event_factory import DistributedEventFactory if __name__ == '__main__': if "CONFIG_FILE" in os.environ: diff --git a/provider/activity/generation/__init__.py b/src/distributed_event_factory/provider/__init__.py similarity index 100% rename from provider/activity/generation/__init__.py rename to src/distributed_event_factory/provider/__init__.py diff --git a/provider/activity/README.md b/src/distributed_event_factory/provider/activity/README.md similarity index 100% rename from provider/activity/README.md rename to src/distributed_event_factory/provider/activity/README.md diff --git a/provider/activity/selection/__init__.py b/src/distributed_event_factory/provider/activity/__init__.py similarity index 100% rename from provider/activity/selection/__init__.py rename to src/distributed_event_factory/provider/activity/__init__.py diff --git a/provider/activity/activity_provider.py b/src/distributed_event_factory/provider/activity/activity_provider.py similarity index 100% rename from provider/activity/activity_provider.py rename to src/distributed_event_factory/provider/activity/activity_provider.py diff --git a/provider/activity/selection/ordered/__init__.py b/src/distributed_event_factory/provider/activity/generation/__init__.py similarity index 100% rename from provider/activity/selection/ordered/__init__.py rename to src/distributed_event_factory/provider/activity/generation/__init__.py diff --git a/provider/activity/generation/activity_generation_provider.py b/src/distributed_event_factory/provider/activity/generation/activity_generation_provider.py similarity index 93% rename from provider/activity/generation/activity_generation_provider.py rename to src/distributed_event_factory/provider/activity/generation/activity_generation_provider.py index 2c20431..2910715 100644 --- a/provider/activity/generation/activity_generation_provider.py +++ b/src/distributed_event_factory/provider/activity/generation/activity_generation_provider.py @@ -2,7 +2,7 @@ from string import ascii_uppercase as alphabet from typing import List -from provider.generic.count_provider import CountProvider +from src.distributed_event_factory.provider.generic.count_provider import CountProvider class ActivityGenerationProvider(abc.ABC): diff --git a/provider/activity/generation/activity_generation_registry.py b/src/distributed_event_factory/provider/activity/generation/activity_generation_registry.py similarity index 64% rename from provider/activity/generation/activity_generation_registry.py rename to src/distributed_event_factory/provider/activity/generation/activity_generation_registry.py index f9b3227..6ca4af0 100644 --- a/provider/activity/generation/activity_generation_registry.py +++ b/src/distributed_event_factory/provider/activity/generation/activity_generation_registry.py @@ -1,6 +1,6 @@ -from provider.activity.generation.activity_generation_provider import ActivityGenerationProvider, \ - DistinctActivityGenerationProvider, ListBasedActivityGenerationProvider -from provider.generic.count_provider_registry import CountProviderRegistry +from src.distributed_event_factory.provider.activity.generation.activity_generation_provider import \ + ActivityGenerationProvider, DistinctActivityGenerationProvider, ListBasedActivityGenerationProvider +from src.distributed_event_factory.provider.generic.count_provider_registry import CountProviderRegistry class ActivityGenerationProviderRegistry: diff --git a/provider/activity/selection/single/__init__.py b/src/distributed_event_factory/provider/activity/selection/__init__.py similarity index 100% rename from provider/activity/selection/single/__init__.py rename to src/distributed_event_factory/provider/activity/selection/__init__.py diff --git a/provider/activity/selection/activity_selection_provider.py b/src/distributed_event_factory/provider/activity/selection/activity_selection_provider.py similarity index 100% rename from provider/activity/selection/activity_selection_provider.py rename to src/distributed_event_factory/provider/activity/selection/activity_selection_provider.py diff --git a/provider/activity/selection/activity_selection_provider_registry.py b/src/distributed_event_factory/provider/activity/selection/activity_selection_provider_registry.py similarity index 50% rename from provider/activity/selection/activity_selection_provider_registry.py rename to src/distributed_event_factory/provider/activity/selection/activity_selection_provider_registry.py index e80c26b..cf610a2 100644 --- a/provider/activity/selection/activity_selection_provider_registry.py +++ b/src/distributed_event_factory/provider/activity/selection/activity_selection_provider_registry.py @@ -1,8 +1,13 @@ -from provider.activity.generation.activity_generation_registry import ActivityGenerationProviderRegistry -from provider.activity.selection.activity_selection_provider import ActivitySelectionProviderFactory -from provider.activity.selection.ordered.ordered_selection_provider import OrderedActivitySelectionProviderFactory -from provider.activity.selection.single.single_selection_provider import SingleActivitySelectionProviderFactory -from provider.activity.selection.uniform.uniform_selection_provider import UniformActivitySelectionProviderFactory +from src.distributed_event_factory.provider.activity.generation.activity_generation_registry import \ + ActivityGenerationProviderRegistry +from src.distributed_event_factory.provider.activity.selection.activity_selection_provider import \ + ActivitySelectionProviderFactory +from src.distributed_event_factory.provider.activity.selection.ordered.ordered_selection_provider import \ + OrderedActivitySelectionProviderFactory +from src.distributed_event_factory.provider.activity.selection.single.single_selection_provider import \ + SingleActivitySelectionProviderFactory +from src.distributed_event_factory.provider.activity.selection.uniform.uniform_selection_provider import \ + UniformActivitySelectionProviderFactory class ActivitySelectionProviderRegistry: diff --git a/provider/activity/selection/uniform/__init__.py b/src/distributed_event_factory/provider/activity/selection/ordered/__init__.py similarity index 100% rename from provider/activity/selection/uniform/__init__.py rename to src/distributed_event_factory/provider/activity/selection/ordered/__init__.py diff --git a/provider/activity/selection/ordered/ordered_selection_provider.py b/src/distributed_event_factory/provider/activity/selection/ordered/ordered_selection_provider.py similarity index 69% rename from provider/activity/selection/ordered/ordered_selection_provider.py rename to src/distributed_event_factory/provider/activity/selection/ordered/ordered_selection_provider.py index 6618b50..5fdafa1 100644 --- a/provider/activity/selection/ordered/ordered_selection_provider.py +++ b/src/distributed_event_factory/provider/activity/selection/ordered/ordered_selection_provider.py @@ -1,9 +1,10 @@ from typing import List -from core.event import Activity -from provider.activity.generation.activity_generation_provider import ActivityGenerationProvider -from provider.activity.selection.activity_selection_provider import ActivitySelectionProviderFactory, \ - ActivitySelectionProvider +from src.distributed_event_factory.core.event import Activity +from src.distributed_event_factory.provider.activity.generation.activity_generation_provider import \ + ActivityGenerationProvider +from src.distributed_event_factory.provider.activity.selection.activity_selection_provider import \ + ActivitySelectionProviderFactory, ActivitySelectionProvider class OrderedActivitySelectionProviderFactory(ActivitySelectionProviderFactory): diff --git a/provider/data/__init__.py b/src/distributed_event_factory/provider/activity/selection/single/__init__.py similarity index 100% rename from provider/data/__init__.py rename to src/distributed_event_factory/provider/activity/selection/single/__init__.py diff --git a/provider/activity/selection/single/single_selection_provider.py b/src/distributed_event_factory/provider/activity/selection/single/single_selection_provider.py similarity index 69% rename from provider/activity/selection/single/single_selection_provider.py rename to src/distributed_event_factory/provider/activity/selection/single/single_selection_provider.py index 15d64ed..3b2e43c 100644 --- a/provider/activity/selection/single/single_selection_provider.py +++ b/src/distributed_event_factory/provider/activity/selection/single/single_selection_provider.py @@ -1,6 +1,6 @@ -from core.event import Activity -from provider.activity.selection.activity_selection_provider import ActivitySelectionProvider, \ - ActivitySelectionProviderFactory +from src.distributed_event_factory.core.event import Activity +from src.distributed_event_factory.provider.activity.selection.activity_selection_provider import \ + ActivitySelectionProviderFactory, ActivitySelectionProvider class SingleActivitySelectionProviderFactory(ActivitySelectionProviderFactory): diff --git a/provider/datasource/__init__.py b/src/distributed_event_factory/provider/activity/selection/uniform/__init__.py similarity index 100% rename from provider/datasource/__init__.py rename to src/distributed_event_factory/provider/activity/selection/uniform/__init__.py diff --git a/provider/activity/selection/uniform/uniform_selection_provider.py b/src/distributed_event_factory/provider/activity/selection/uniform/uniform_selection_provider.py similarity index 68% rename from provider/activity/selection/uniform/uniform_selection_provider.py rename to src/distributed_event_factory/provider/activity/selection/uniform/uniform_selection_provider.py index 0810fb2..b2a7801 100644 --- a/provider/activity/selection/uniform/uniform_selection_provider.py +++ b/src/distributed_event_factory/provider/activity/selection/uniform/uniform_selection_provider.py @@ -1,10 +1,11 @@ import random from typing import List -from core.event import Activity -from provider.activity.generation.activity_generation_provider import ActivityGenerationProvider -from provider.activity.selection.activity_selection_provider import ActivitySelectionProviderFactory, \ - ActivitySelectionProvider +from src.distributed_event_factory.core.event import Activity +from src.distributed_event_factory.provider.activity.generation.activity_generation_provider import \ + ActivityGenerationProvider +from src.distributed_event_factory.provider.activity.selection.activity_selection_provider import \ + ActivitySelectionProviderFactory, ActivitySelectionProvider class UniformActivitySelectionProviderFactory(ActivitySelectionProviderFactory): diff --git a/provider/event/__init__.py b/src/distributed_event_factory/provider/data/__init__.py similarity index 100% rename from provider/event/__init__.py rename to src/distributed_event_factory/provider/data/__init__.py diff --git a/provider/data/case_provider.py b/src/distributed_event_factory/provider/data/case_provider.py similarity index 100% rename from provider/data/case_provider.py rename to src/distributed_event_factory/provider/data/case_provider.py diff --git a/provider/datasource/README.md b/src/distributed_event_factory/provider/datasource/README.md similarity index 100% rename from provider/datasource/README.md rename to src/distributed_event_factory/provider/datasource/README.md diff --git a/provider/eventselection/__init__.py b/src/distributed_event_factory/provider/datasource/__init__.py similarity index 100% rename from provider/eventselection/__init__.py rename to src/distributed_event_factory/provider/datasource/__init__.py diff --git a/provider/datasource/data_source_registry.py b/src/distributed_event_factory/provider/datasource/data_source_registry.py similarity index 66% rename from provider/datasource/data_source_registry.py rename to src/distributed_event_factory/provider/datasource/data_source_registry.py index 76a1df3..c72e5c8 100644 --- a/provider/datasource/data_source_registry.py +++ b/src/distributed_event_factory/provider/datasource/data_source_registry.py @@ -1,10 +1,11 @@ from typing import List -from core.datasource import GenericDataSource -from core.datasource_id import DataSourceId -from provider.eventselection.event_selection_provider_registry import EventSelectionProviderRegistry -from provider.sink.sink_provider import SinkProvider -from provider.sink.sink_provider_registry import SinkProviderRegistry +from src.distributed_event_factory.core.datasource import GenericDataSource +from src.distributed_event_factory.core.datasource_id import DataSourceId +from src.distributed_event_factory.provider.eventselection.event_selection_provider_registry import \ + EventSelectionProviderRegistry +from src.distributed_event_factory.provider.sink.sink_provider import SinkProvider +from src.distributed_event_factory.provider.sink.sink_provider_registry import SinkProviderRegistry class DataSourceRegistry: diff --git a/provider/datasource/datasource_id_provider.py b/src/distributed_event_factory/provider/datasource/datasource_id_provider.py similarity index 89% rename from provider/datasource/datasource_id_provider.py rename to src/distributed_event_factory/provider/datasource/datasource_id_provider.py index fa1a9ab..cc14152 100644 --- a/provider/datasource/datasource_id_provider.py +++ b/src/distributed_event_factory/provider/datasource/datasource_id_provider.py @@ -1,6 +1,6 @@ -from abc import ABC, abstractmethod +from abc import abstractmethod, ABC -from core.datasource_id import DataSourceId +from src.distributed_event_factory.core.datasource_id import DataSourceId class DataSourceIdProvider(ABC): diff --git a/provider/datasource/sensor_topology.py b/src/distributed_event_factory/provider/datasource/sensor_topology.py similarity index 70% rename from provider/datasource/sensor_topology.py rename to src/distributed_event_factory/provider/datasource/sensor_topology.py index d7a4502..5eefdd4 100644 --- a/provider/datasource/sensor_topology.py +++ b/src/distributed_event_factory/provider/datasource/sensor_topology.py @@ -1,10 +1,10 @@ from abc import abstractmethod from typing import List -from core.datasource import DataSource, StartDataSource, EndDataSource -from core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID -from provider.sink.console.console_sink import PrintConsoleSinkProvider -from provider.transition.nextsensor.next_sensor_provider import NextSensorProvider +from src.distributed_event_factory.core.datasource import DataSource, StartDataSource, EndDataSource +from src.distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID +from src.distributed_event_factory.provider.sink.console.console_sink import PrintConsoleSinkProvider +from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider class DataSourceTopologyProvider: diff --git a/provider/datasource/sensor_topology_registry.py b/src/distributed_event_factory/provider/datasource/sensor_topology_registry.py similarity index 55% rename from provider/datasource/sensor_topology_registry.py rename to src/distributed_event_factory/provider/datasource/sensor_topology_registry.py index c4f0047..e5d23a6 100644 --- a/provider/datasource/sensor_topology_registry.py +++ b/src/distributed_event_factory/provider/datasource/sensor_topology_registry.py @@ -1,6 +1,7 @@ -from provider.datasource.data_source_registry import DataSourceRegistry -from provider.datasource.sensor_topology import DataSourceTopologyProvider, ConcreteDataSourceTopologyProvider -from provider.sink.sink_provider_registry import SinkProviderRegistry +from src.distributed_event_factory.provider.datasource.data_source_registry import DataSourceRegistry +from src.distributed_event_factory.provider.datasource.sensor_topology import DataSourceTopologyProvider, \ + ConcreteDataSourceTopologyProvider +from src.distributed_event_factory.provider.sink.sink_provider_registry import SinkProviderRegistry class DataSourceProviderRegistry: diff --git a/provider/event/README.md b/src/distributed_event_factory/provider/event/README.md similarity index 100% rename from provider/event/README.md rename to src/distributed_event_factory/provider/event/README.md diff --git a/provider/generic/__init__.py b/src/distributed_event_factory/provider/event/__init__.py similarity index 100% rename from provider/generic/__init__.py rename to src/distributed_event_factory/provider/event/__init__.py diff --git a/provider/event/event_data.py b/src/distributed_event_factory/provider/event/event_data.py similarity index 66% rename from provider/event/event_data.py rename to src/distributed_event_factory/provider/event/event_data.py index f5c0ce6..d4e3158 100644 --- a/provider/event/event_data.py +++ b/src/distributed_event_factory/provider/event/event_data.py @@ -1,6 +1,6 @@ -from provider.activity.activity_provider import ActivityProvider -from provider.transition.duration.duration_provider import DurationProvider -from provider.transition.nextsensor.next_sensor_provider import AbstractNextSensorProvider +from src.distributed_event_factory.provider.activity.activity_provider import ActivityProvider +from src.distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider +from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import AbstractNextSensorProvider class EventData: diff --git a/provider/event/event_provider.py b/src/distributed_event_factory/provider/event/event_provider.py similarity index 75% rename from provider/event/event_provider.py rename to src/distributed_event_factory/provider/event/event_provider.py index bddd252..d43d3e1 100644 --- a/provider/event/event_provider.py +++ b/src/distributed_event_factory/provider/event/event_provider.py @@ -1,11 +1,14 @@ from abc import ABC, abstractmethod from typing import List -from provider.activity.activity_provider import DistinctActivityProvider -from provider.activity.selection.activity_selection_provider import ActivitySelectionProvider -from provider.event.event_data import EventData -from provider.transition.duration.duration_provider import DurationProvider, StaticDurationProvider -from provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, DistinctNextSensorProvider +from src.distributed_event_factory.provider.activity.activity_provider import DistinctActivityProvider +from src.distributed_event_factory.provider.activity.selection.activity_selection_provider import \ + ActivitySelectionProvider +from src.distributed_event_factory.provider.event.event_data import EventData +from src.distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider, \ + StaticDurationProvider +from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, \ + DistinctNextSensorProvider class EventDataProvider(ABC): diff --git a/provider/event/event_provider_registry.py b/src/distributed_event_factory/provider/event/event_provider_registry.py similarity index 53% rename from provider/event/event_provider_registry.py rename to src/distributed_event_factory/provider/event/event_provider_registry.py index c2c97df..b858c00 100644 --- a/provider/event/event_provider_registry.py +++ b/src/distributed_event_factory/provider/event/event_provider_registry.py @@ -1,7 +1,9 @@ -from provider.activity.selection.activity_selection_provider_registry import ActivitySelectionProviderRegistry -from provider.event.event_provider import EventDataProvider, CustomEventDataProvider -from provider.transition.duration.duration_registry import DurationProviderRegistry -from provider.transition.nextsensor.next_sensor_provider_registry import NextSensorProviderRegistry +from src.distributed_event_factory.provider.activity.selection.activity_selection_provider_registry import \ + ActivitySelectionProviderRegistry +from src.distributed_event_factory.provider.event.event_provider import EventDataProvider, CustomEventDataProvider +from src.distributed_event_factory.provider.transition.duration.duration_registry import DurationProviderRegistry +from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider_registry import \ + NextSensorProviderRegistry class EventProviderRegistry: diff --git a/provider/eventselection/README.md b/src/distributed_event_factory/provider/eventselection/README.md similarity index 100% rename from provider/eventselection/README.md rename to src/distributed_event_factory/provider/eventselection/README.md diff --git a/provider/load/__init__.py b/src/distributed_event_factory/provider/eventselection/__init__.py similarity index 100% rename from provider/load/__init__.py rename to src/distributed_event_factory/provider/eventselection/__init__.py diff --git a/provider/eventselection/event_selection_provider.py b/src/distributed_event_factory/provider/eventselection/event_selection_provider.py similarity index 100% rename from provider/eventselection/event_selection_provider.py rename to src/distributed_event_factory/provider/eventselection/event_selection_provider.py diff --git a/provider/eventselection/event_selection_provider_registry.py b/src/distributed_event_factory/provider/eventselection/event_selection_provider_registry.py similarity index 63% rename from provider/eventselection/event_selection_provider_registry.py rename to src/distributed_event_factory/provider/eventselection/event_selection_provider_registry.py index bf2f439..ee92810 100644 --- a/provider/eventselection/event_selection_provider_registry.py +++ b/src/distributed_event_factory/provider/eventselection/event_selection_provider_registry.py @@ -1,12 +1,14 @@ from typing import List -from provider.eventselection.event_selection_provider import EventSelectionProvider -from provider.eventselection.generic_probability_event_selection_provider import \ +from src.distributed_event_factory.provider.event.event_provider import EventDataProvider +from src.distributed_event_factory.provider.event.event_provider_registry import EventProviderRegistry +from src.distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider +from src.distributed_event_factory.provider.eventselection.generic_probability_event_selection_provider import \ GenericProbabilityEventSelectionProvider -from provider.eventselection.ordered_selection_provider import OrderedEventSelectionProvider -from provider.eventselection.uniform_selction_provider import UniformEventSelectionProvider -from provider.event.event_provider import EventDataProvider -from provider.event.event_provider_registry import EventProviderRegistry +from src.distributed_event_factory.provider.eventselection.ordered_selection_provider import \ + OrderedEventSelectionProvider +from src.distributed_event_factory.provider.eventselection.uniform_selction_provider import \ + UniformEventSelectionProvider class EventSelectionProviderRegistry: diff --git a/provider/eventselection/generic_probability_event_selection_provider.py b/src/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py similarity index 71% rename from provider/eventselection/generic_probability_event_selection_provider.py rename to src/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py index 0ca19a6..528516d 100644 --- a/provider/eventselection/generic_probability_event_selection_provider.py +++ b/src/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py @@ -2,8 +2,9 @@ from numpy import random -from provider.eventselection.event_selection_provider import EventSelectionProvider -from provider.event.event_provider import EventDataProvider +from src.distributed_event_factory.provider.event.event_provider import EventDataProvider +from src.distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider + class GenericProbabilityEventSelectionProvider(EventSelectionProvider): diff --git a/provider/eventselection/ordered_selection_provider.py b/src/distributed_event_factory/provider/eventselection/ordered_selection_provider.py similarity index 65% rename from provider/eventselection/ordered_selection_provider.py rename to src/distributed_event_factory/provider/eventselection/ordered_selection_provider.py index d6232ea..16e1de6 100644 --- a/provider/eventselection/ordered_selection_provider.py +++ b/src/distributed_event_factory/provider/eventselection/ordered_selection_provider.py @@ -1,7 +1,7 @@ from typing import List -from provider.eventselection.event_selection_provider import EventSelectionProvider -from provider.event.event_provider import EventDataProvider +from src.distributed_event_factory.provider.event.event_provider import EventDataProvider +from src.distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider class OrderedEventSelectionProvider(EventSelectionProvider): diff --git a/provider/eventselection/uniform_selction_provider.py b/src/distributed_event_factory/provider/eventselection/uniform_selction_provider.py similarity index 58% rename from provider/eventselection/uniform_selction_provider.py rename to src/distributed_event_factory/provider/eventselection/uniform_selction_provider.py index 77204e1..b0ebfe4 100644 --- a/provider/eventselection/uniform_selction_provider.py +++ b/src/distributed_event_factory/provider/eventselection/uniform_selction_provider.py @@ -1,8 +1,7 @@ -import random from typing import List -from provider.eventselection.event_selection_provider import EventSelectionProvider -from provider.event.event_provider import EventDataProvider +from src.distributed_event_factory.provider.event.event_provider import EventDataProvider +from src.distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider class UniformEventSelectionProvider(EventSelectionProvider): @@ -10,4 +9,5 @@ def __init__(self, potential_events: List[EventDataProvider]): self.potential_events = potential_events def get_event_data(self): + import random return self.potential_events[int(random.uniform(0, len(self.potential_events)))] diff --git a/provider/sink/__init__.py b/src/distributed_event_factory/provider/generic/__init__.py similarity index 100% rename from provider/sink/__init__.py rename to src/distributed_event_factory/provider/generic/__init__.py diff --git a/provider/generic/count_provider.py b/src/distributed_event_factory/provider/generic/count_provider.py similarity index 100% rename from provider/generic/count_provider.py rename to src/distributed_event_factory/provider/generic/count_provider.py diff --git a/provider/generic/count_provider_registry.py b/src/distributed_event_factory/provider/generic/count_provider_registry.py similarity index 70% rename from provider/generic/count_provider_registry.py rename to src/distributed_event_factory/provider/generic/count_provider_registry.py index 1d8bb17..1e057ca 100644 --- a/provider/generic/count_provider_registry.py +++ b/src/distributed_event_factory/provider/generic/count_provider_registry.py @@ -1,4 +1,6 @@ -from provider.generic.count_provider import CountProvider, UniformCountProvider, StaticCountProvider +from src.distributed_event_factory.provider.generic.count_provider import CountProvider, StaticCountProvider, \ + UniformCountProvider + class CountProviderRegistry: def get(self, config) -> CountProvider: diff --git a/provider/load/README.md b/src/distributed_event_factory/provider/load/README.md similarity index 100% rename from provider/load/README.md rename to src/distributed_event_factory/provider/load/README.md diff --git a/provider/sink/kafka/__init__.py b/src/distributed_event_factory/provider/load/__init__.py similarity index 100% rename from provider/sink/kafka/__init__.py rename to src/distributed_event_factory/provider/load/__init__.py diff --git a/provider/load/load_provider.py b/src/distributed_event_factory/provider/load/load_provider.py similarity index 100% rename from provider/load/load_provider.py rename to src/distributed_event_factory/provider/load/load_provider.py diff --git a/provider/load/load_provider_registry.py b/src/distributed_event_factory/provider/load/load_provider_registry.py similarity index 75% rename from provider/load/load_provider_registry.py rename to src/distributed_event_factory/provider/load/load_provider_registry.py index 53330a7..07823bd 100644 --- a/provider/load/load_provider_registry.py +++ b/src/distributed_event_factory/provider/load/load_provider_registry.py @@ -1,4 +1,6 @@ -from provider.load.load_provider import LoadProvider, ConstantLoadProvider, GradualIncreasingLoadProvider +from src.distributed_event_factory.provider.load.load_provider import LoadProvider, ConstantLoadProvider, \ + GradualIncreasingLoadProvider + class LoadProviderRegistry: def get(self, config) -> LoadProvider: diff --git a/provider/provider_registry.py b/src/distributed_event_factory/provider/provider_registry.py similarity index 55% rename from provider/provider_registry.py rename to src/distributed_event_factory/provider/provider_registry.py index 301da68..5b2da75 100644 --- a/provider/provider_registry.py +++ b/src/distributed_event_factory/provider/provider_registry.py @@ -1,9 +1,9 @@ -from provider.data.case_provider import CaseIdProviderRegistry -from provider.datasource.sensor_topology_registry import DataSourceProviderRegistry -from provider.generic.count_provider_registry import CountProviderRegistry -from provider.load.load_provider_registry import LoadProviderRegistry -from provider.transition.duration.duration_registry import DurationProviderRegistry -from simulation.eventloop.event_loop_registry import EventLoopRegistry +from src.distributed_event_factory.provider.data.case_provider import CaseIdProviderRegistry +from src.distributed_event_factory.provider.datasource.sensor_topology_registry import DataSourceProviderRegistry +from src.distributed_event_factory.provider.generic.count_provider_registry import CountProviderRegistry +from src.distributed_event_factory.provider.load.load_provider_registry import LoadProviderRegistry +from src.distributed_event_factory.provider.transition.duration.duration_registry import DurationProviderRegistry +from src.distributed_event_factory.simulation.eventloop.event_loop_registry import EventLoopRegistry providers = dict() providers["numberOfDataSources"] = lambda config, field: CountProviderRegistry().get(config[field]) diff --git a/provider/sink/README.md b/src/distributed_event_factory/provider/sink/README.md similarity index 100% rename from provider/sink/README.md rename to src/distributed_event_factory/provider/sink/README.md diff --git a/provider/sink/kafka/partition/__init__.py b/src/distributed_event_factory/provider/sink/__init__.py similarity index 100% rename from provider/sink/kafka/partition/__init__.py rename to src/distributed_event_factory/provider/sink/__init__.py diff --git a/provider/transition/__init__.py b/src/distributed_event_factory/provider/sink/console/__init__.py similarity index 100% rename from provider/transition/__init__.py rename to src/distributed_event_factory/provider/sink/console/__init__.py diff --git a/provider/sink/console/console_sink.py b/src/distributed_event_factory/provider/sink/console/console_sink.py similarity index 65% rename from provider/sink/console/console_sink.py rename to src/distributed_event_factory/provider/sink/console/console_sink.py index e931eaf..d15a202 100644 --- a/provider/sink/console/console_sink.py +++ b/src/distributed_event_factory/provider/sink/console/console_sink.py @@ -1,5 +1,6 @@ -from core.event import AbstractEvent -from provider.sink.sink_provider import Sink, SinkProvider +from src.distributed_event_factory.core.event import AbstractEvent +from src.distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider + class PrintConsole(Sink): diff --git a/provider/sink/kafka/README.md b/src/distributed_event_factory/provider/sink/kafka/README.md similarity index 100% rename from provider/sink/kafka/README.md rename to src/distributed_event_factory/provider/sink/kafka/README.md diff --git a/provider/transition/duration/__init__.py b/src/distributed_event_factory/provider/sink/kafka/__init__.py similarity index 100% rename from provider/transition/duration/__init__.py rename to src/distributed_event_factory/provider/sink/kafka/__init__.py diff --git a/provider/sink/kafka/kafka_sink.py b/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py similarity index 84% rename from provider/sink/kafka/kafka_sink.py rename to src/distributed_event_factory/provider/sink/kafka/kafka_sink.py index 0ad95ce..c8b4118 100644 --- a/provider/sink/kafka/kafka_sink.py +++ b/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py @@ -1,10 +1,9 @@ import json import string - -from core.event import AbstractEvent -from provider.sink.kafka.partition.partition_provider import PartitionProvider -from provider.sink.sink_provider import Sink, SinkProvider +from src.distributed_event_factory.core.event import AbstractEvent +from src.distributed_event_factory.provider.sink.kafka.partition.partition_provider import PartitionProvider +from src.distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider class KafkaSink(Sink): diff --git a/provider/sink/kafka/kafka_validation_sink.py b/src/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py similarity index 88% rename from provider/sink/kafka/kafka_validation_sink.py rename to src/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py index 19c79c2..20fc536 100644 --- a/provider/sink/kafka/kafka_validation_sink.py +++ b/src/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py @@ -1,11 +1,10 @@ import json import string - - -from core.event import AbstractEvent -from provider.sink.kafka.partition.partition_provider import ConstantPartitionProvider, PartitionProvider -from provider.sink.sink_provider import Sink, SinkProvider +from src.distributed_event_factory.core.event import AbstractEvent +from src.distributed_event_factory.provider.sink.kafka.partition.partition_provider import ConstantPartitionProvider, \ + PartitionProvider +from src.distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider class KafkaValidationSink(Sink): diff --git a/provider/sink/kafka/partition/README.md b/src/distributed_event_factory/provider/sink/kafka/partition/README.md similarity index 100% rename from provider/sink/kafka/partition/README.md rename to src/distributed_event_factory/provider/sink/kafka/partition/README.md diff --git a/provider/transition/nextsensor/__init__.py b/src/distributed_event_factory/provider/sink/kafka/partition/__init__.py similarity index 100% rename from provider/transition/nextsensor/__init__.py rename to src/distributed_event_factory/provider/sink/kafka/partition/__init__.py diff --git a/provider/sink/kafka/partition/partition_provider.py b/src/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py similarity index 89% rename from provider/sink/kafka/partition/partition_provider.py rename to src/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py index 4597c14..132abc0 100644 --- a/provider/sink/kafka/partition/partition_provider.py +++ b/src/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py @@ -1,6 +1,6 @@ from abc import ABC, abstractmethod -from core.event import Event, AbstractEvent +from src.distributed_event_factory.core.event import AbstractEvent, Event class PartitionProvider(ABC): diff --git a/provider/sink/kafka/partition/partition_registry.py b/src/distributed_event_factory/provider/sink/kafka/partition/partition_registry.py similarity index 68% rename from provider/sink/kafka/partition/partition_registry.py rename to src/distributed_event_factory/provider/sink/kafka/partition/partition_registry.py index 1bedb25..c96578f 100644 --- a/provider/sink/kafka/partition/partition_registry.py +++ b/src/distributed_event_factory/provider/sink/kafka/partition/partition_registry.py @@ -1,4 +1,5 @@ -from provider.sink.kafka.partition.partition_provider import ConstantPartitionProvider, CaseIdPartitionProvider +from src.distributed_event_factory.provider.sink.kafka.partition.partition_provider import ConstantPartitionProvider, \ + CaseIdPartitionProvider class PartitionProviderRegistry: diff --git a/provider/sink/sink_provider.py b/src/distributed_event_factory/provider/sink/sink_provider.py similarity index 75% rename from provider/sink/sink_provider.py rename to src/distributed_event_factory/provider/sink/sink_provider.py index 9abf59e..61099fb 100644 --- a/provider/sink/sink_provider.py +++ b/src/distributed_event_factory/provider/sink/sink_provider.py @@ -1,5 +1,6 @@ import abc -from core.event import AbstractEvent + +from src.distributed_event_factory.core.event import AbstractEvent class Sink: diff --git a/provider/sink/sink_provider_registry.py b/src/distributed_event_factory/provider/sink/sink_provider_registry.py similarity index 61% rename from provider/sink/sink_provider_registry.py rename to src/distributed_event_factory/provider/sink/sink_provider_registry.py index 4f1d8d1..dcb5395 100644 --- a/provider/sink/sink_provider_registry.py +++ b/src/distributed_event_factory/provider/sink/sink_provider_registry.py @@ -1,14 +1,14 @@ -from provider.sink.console.console_sink import PrintConsoleSinkProvider -from provider.sink.kafka.kafka_sink import KafkaSinkProvider -from provider.sink.kafka.kafka_validation_sink import KafkaValidationSinkProvider -from provider.sink.kafka.partition.partition_registry import PartitionProviderRegistry -from provider.sink.sink_provider import SinkProvider +from src.distributed_event_factory.provider.sink.console.console_sink import PrintConsoleSinkProvider +from src.distributed_event_factory.provider.sink.kafka.kafka_sink import KafkaSinkProvider +from src.distributed_event_factory.provider.sink.kafka.kafka_validation_sink import KafkaValidationSinkProvider +from src.distributed_event_factory.provider.sink.kafka.partition.partition_registry import PartitionProviderRegistry +from src.distributed_event_factory.provider.sink.sink_provider import SinkProvider class SinkProviderRegistry: def get_ui(self): - from provider.sink.ui.terminal_ui_sink import TerminalGuiSinkProvider + from src.distributed_event_factory.provider.sink.ui.terminal_ui_sink import TerminalGuiSinkProvider return TerminalGuiSinkProvider() def get(self, config) -> SinkProvider: diff --git a/simulation/__init__.py b/src/distributed_event_factory/provider/sink/ui/__init__.py similarity index 100% rename from simulation/__init__.py rename to src/distributed_event_factory/provider/sink/ui/__init__.py diff --git a/provider/sink/ui/terminal_ui_sink.py b/src/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py similarity index 64% rename from provider/sink/ui/terminal_ui_sink.py rename to src/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py index bfed1f9..0a9a26b 100644 --- a/provider/sink/ui/terminal_ui_sink.py +++ b/src/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py @@ -1,6 +1,6 @@ -from core.event import AbstractEvent -from provider.sink.sink_provider import Sink, SinkProvider -from view.terminal import Terminal +from src.distributed_event_factory.core.event import AbstractEvent +from src.distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider +from src.distributed_event_factory.view.terminal import Terminal class TerminalGui(Sink): diff --git a/simulation/eventloop/__init__.py b/src/distributed_event_factory/provider/transition/__init__.py similarity index 100% rename from simulation/eventloop/__init__.py rename to src/distributed_event_factory/provider/transition/__init__.py diff --git a/view/__init__.py b/src/distributed_event_factory/provider/transition/duration/__init__.py similarity index 100% rename from view/__init__.py rename to src/distributed_event_factory/provider/transition/duration/__init__.py diff --git a/provider/transition/duration/duration_provider.py b/src/distributed_event_factory/provider/transition/duration/duration_provider.py similarity index 100% rename from provider/transition/duration/duration_provider.py rename to src/distributed_event_factory/provider/transition/duration/duration_provider.py diff --git a/provider/transition/duration/duration_registry.py b/src/distributed_event_factory/provider/transition/duration/duration_registry.py similarity index 82% rename from provider/transition/duration/duration_registry.py rename to src/distributed_event_factory/provider/transition/duration/duration_registry.py index 1009bc0..ea2d5c4 100644 --- a/provider/transition/duration/duration_registry.py +++ b/src/distributed_event_factory/provider/transition/duration/duration_registry.py @@ -1,4 +1,4 @@ -from provider.transition.duration.duration_provider import DurationProvider, StaticDurationProvider, \ +from src.distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider, StaticDurationProvider, \ UniformDurationProvider, GaussianDurationProvider diff --git a/provider/transition/next_state_provider.py b/src/distributed_event_factory/provider/transition/next_state_provider.py similarity index 100% rename from provider/transition/next_state_provider.py rename to src/distributed_event_factory/provider/transition/next_state_provider.py diff --git a/src/distributed_event_factory/provider/transition/nextsensor/__init__.py b/src/distributed_event_factory/provider/transition/nextsensor/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/provider/transition/nextsensor/next_sensor_provider.py b/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider.py similarity index 100% rename from provider/transition/nextsensor/next_sensor_provider.py rename to src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider.py diff --git a/provider/transition/nextsensor/next_sensor_provider_registry.py b/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider_registry.py similarity index 74% rename from provider/transition/nextsensor/next_sensor_provider_registry.py rename to src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider_registry.py index c666bbb..6cf6c03 100644 --- a/provider/transition/nextsensor/next_sensor_provider_registry.py +++ b/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider_registry.py @@ -1,4 +1,4 @@ -from provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, DistinctNextSensorProvider +from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, DistinctNextSensorProvider class NextSensorProviderRegistry: diff --git a/provider/transition/transition_matrix_creation_strategy.py b/src/distributed_event_factory/provider/transition/transition_matrix_creation_strategy.py similarity index 86% rename from provider/transition/transition_matrix_creation_strategy.py rename to src/distributed_event_factory/provider/transition/transition_matrix_creation_strategy.py index 12ceafe..0636d04 100644 --- a/provider/transition/transition_matrix_creation_strategy.py +++ b/src/distributed_event_factory/provider/transition/transition_matrix_creation_strategy.py @@ -1,9 +1,9 @@ from abc import ABC, abstractmethod import random -from provider.generic.count_provider_registry import CountProviderRegistry -from provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, NextSensorChooseProvider -from provider.transition.next_state_provider import DistinctProbabilityDistributionProvider +from src.provider.generic.count_provider_registry import CountProviderRegistry +from src.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, NextSensorChooseProvider +from src.provider.transition.next_state_provider import DistinctProbabilityDistributionProvider class TransitionMatrixCreationStrategy(ABC): diff --git a/provider/transition/transition_probability_provider.py b/src/distributed_event_factory/provider/transition/transition_probability_provider.py similarity index 100% rename from provider/transition/transition_probability_provider.py rename to src/distributed_event_factory/provider/transition/transition_probability_provider.py diff --git a/provider/transition/transition_provider.py b/src/distributed_event_factory/provider/transition/transition_provider.py similarity index 100% rename from provider/transition/transition_provider.py rename to src/distributed_event_factory/provider/transition/transition_provider.py diff --git a/provider/transition/transition_provider_factory.py b/src/distributed_event_factory/provider/transition/transition_provider_factory.py similarity index 86% rename from provider/transition/transition_provider_factory.py rename to src/distributed_event_factory/provider/transition/transition_provider_factory.py index 94d3946..8e0f644 100644 --- a/provider/transition/transition_provider_factory.py +++ b/src/distributed_event_factory/provider/transition/transition_provider_factory.py @@ -1,7 +1,7 @@ from abc import ABC, abstractmethod -from provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, NextSensorChooseProvider -from provider.transition.transition_matrix_creation_strategy import RandomTransitionMatrixCreationStrategy, \ +from src.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, NextSensorChooseProvider +from src.provider.transition.transition_matrix_creation_strategy import RandomTransitionMatrixCreationStrategy, \ RandomTransitionMatrixProviderRegistry diff --git a/src/distributed_event_factory/simulation/__init__.py b/src/distributed_event_factory/simulation/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/simulation/distributed_event_factory.py b/src/distributed_event_factory/simulation/distributed_event_factory.py similarity index 80% rename from simulation/distributed_event_factory.py rename to src/distributed_event_factory/simulation/distributed_event_factory.py index ba25a06..8a5094a 100644 --- a/simulation/distributed_event_factory.py +++ b/src/distributed_event_factory/simulation/distributed_event_factory.py @@ -1,7 +1,7 @@ import yaml -from provider.provider_registry import ProviderRegistry -from simulation.simulation import Simulation +from src.distributed_event_factory.provider.provider_registry import ProviderRegistry +from src.distributed_event_factory.simulation.simulation import Simulation class DistributedEventFactory: diff --git a/simulation/eventloop/README.md b/src/distributed_event_factory/simulation/eventloop/README.md similarity index 100% rename from simulation/eventloop/README.md rename to src/distributed_event_factory/simulation/eventloop/README.md diff --git a/src/distributed_event_factory/simulation/eventloop/__init__.py b/src/distributed_event_factory/simulation/eventloop/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/simulation/eventloop/event_loop.py b/src/distributed_event_factory/simulation/eventloop/event_loop.py similarity index 100% rename from simulation/eventloop/event_loop.py rename to src/distributed_event_factory/simulation/eventloop/event_loop.py diff --git a/simulation/eventloop/event_loop_registry.py b/src/distributed_event_factory/simulation/eventloop/event_loop_registry.py similarity index 57% rename from simulation/eventloop/event_loop_registry.py rename to src/distributed_event_factory/simulation/eventloop/event_loop_registry.py index 5781283..1c19fd5 100644 --- a/simulation/eventloop/event_loop_registry.py +++ b/src/distributed_event_factory/simulation/eventloop/event_loop_registry.py @@ -1,5 +1,5 @@ -from provider.load.load_provider_registry import LoadProviderRegistry -from simulation.eventloop.event_loop import DebugEventLoop, LoadEventLoop +from src.distributed_event_factory.provider.load.load_provider_registry import LoadProviderRegistry +from src.distributed_event_factory.simulation.eventloop.event_loop import DebugEventLoop, LoadEventLoop class EventLoopRegistry: diff --git a/simulation/process_simulator.py b/src/distributed_event_factory/simulation/process_simulator.py similarity index 88% rename from simulation/process_simulator.py rename to src/distributed_event_factory/simulation/process_simulator.py index 8efd86e..7d03dac 100644 --- a/simulation/process_simulator.py +++ b/src/distributed_event_factory/simulation/process_simulator.py @@ -3,9 +3,9 @@ from datetime import datetime, timedelta from typing import List -from core.datasource import DataSource -from core.datasource_id import END_DATA_SOURCE_ID, START_SENSOR_ID, DataSourceId -from provider.data.case_provider import CaseIdProvider +from src.distributed_event_factory.core.datasource import DataSource +from src.distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID, DataSourceId +from src.distributed_event_factory.provider.data.case_provider import CaseIdProvider class ProcessSimulator: diff --git a/simulation/simulation.py b/src/distributed_event_factory/simulation/simulation.py similarity index 71% rename from simulation/simulation.py rename to src/distributed_event_factory/simulation/simulation.py index 9d9b45f..16df695 100644 --- a/simulation/simulation.py +++ b/src/distributed_event_factory/simulation/simulation.py @@ -1,8 +1,8 @@ -from simulation.eventloop.event_loop import EventLoop -from simulation.process_simulator import ProcessSimulator -from provider.data.case_provider import CaseIdProvider -from provider.generic.count_provider import CountProvider -from provider.datasource.sensor_topology import DataSourceTopologyProvider +from src.distributed_event_factory.provider.data.case_provider import CaseIdProvider +from src.distributed_event_factory.provider.datasource.sensor_topology import DataSourceTopologyProvider +from src.distributed_event_factory.provider.generic.count_provider import CountProvider +from src.distributed_event_factory.simulation.eventloop.event_loop import EventLoop +from src.distributed_event_factory.simulation.process_simulator import ProcessSimulator class Simulation: diff --git a/src/distributed_event_factory/view/__init__.py b/src/distributed_event_factory/view/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/view/terminal.py b/src/distributed_event_factory/view/terminal.py similarity index 100% rename from view/terminal.py rename to src/distributed_event_factory/view/terminal.py From e41328700db345f67034771911e9c465ae9e3fcd Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Wed, 11 Sep 2024 10:25:36 +0200 Subject: [PATCH 006/124] add testpypi yml --- .github/workflows/test-pypi.yml | 52 +++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 .github/workflows/test-pypi.yml diff --git a/.github/workflows/test-pypi.yml b/.github/workflows/test-pypi.yml new file mode 100644 index 0000000..4f41914 --- /dev/null +++ b/.github/workflows/test-pypi.yml @@ -0,0 +1,52 @@ +name: Publish to TestPyPI + +on: push + +jobs: + build: + name: Build distribution 📦 + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.10" + - name: Install pypa/build + run: >- + python3 -m + pip install + build + --user + - name: Build a binary wheel and a source tarball + run: python3 -m build + - name: Store the distribution packages + uses: actions/upload-artifact@v4 + with: + name: python-package-distributions + path: dist/ + + publish-to-testpypi: + name: Publish Python 🐍 distribution 📦 to TestPyPI + needs: + - build + runs-on: ubuntu-latest + + environment: + name: testpypi + url: https://test.pypi.org/p/distributed-event-factory + + permissions: + id-token: write + + steps: + - name: Download all the dists + uses: actions/download-artifact@v4 + with: + name: python-package-distributions + path: dist/ + - name: Publish distribution 📦 to TestPyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + repository-url: https://test.pypi.org/legacy/ \ No newline at end of file From af2c5152dbc72fd1d680615f2dc6b914c80a77a6 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Wed, 11 Sep 2024 10:38:40 +0200 Subject: [PATCH 007/124] toml version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ac4baa8..942cb97 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "distributed-event-factory" -version = "0.1.0" +version = "0.1.0-SNAPSHOT" authors = [ { name="Hendrik Reiter", email="hendrik.reiter@email.uni-kiel.de" }, ] From 22b03d5a6ea6e92e2b6b6fb6d47c517f0255b9f0 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Wed, 11 Sep 2024 10:43:56 +0200 Subject: [PATCH 008/124] toml version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 942cb97..eeba0cc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "distributed-event-factory" -version = "0.1.0-SNAPSHOT" +version = "0.1.0.dev1" authors = [ { name="Hendrik Reiter", email="hendrik.reiter@email.uni-kiel.de" }, ] From f7a7733369f5195ac5c92d3123a879b9bc464375 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Sun, 13 Oct 2024 17:40:28 +0200 Subject: [PATCH 009/124] Refactor --- .idea/distributed-event-factory.iml | 2 +- Dockerfile | 2 +- cfg/warehouse2.yml | 102 +++++ pyproject.toml | 2 +- requirements.txt | 3 - .../config/assembly_line_kafka.yml | 10 +- .../config/assemblyline/d0-start.yaml | 11 + .../assemblyline/d1-goods-delivery.yaml | 23 ++ .../assemblyline/d2-material-preparation.yaml | 23 ++ .../assemblyline/d3-assembly-line-setup.yaml | 29 ++ .../config/assemblyline/d4-assembling.yaml | 23 ++ .../assemblyline/d5-quality-control.yaml | 20 + .../config/assemblyline/d6-packaging.yaml | 11 + .../config/assemblyline/d7-shipping.yaml | 14 + .../config/assemblyline/s1-console.yaml | 9 + .../config/assemblyline/s2-ui.yaml | 10 + .../config/assemblyline/simulation.yaml | 14 + .../config/experiment/__init__.py | 0 .../experiment/new_simulation-experiment.py | 31 ++ .../config/load_sensor_petri_net.yaml | 352 ++++++++++++++++ .../config/simple.yml | 49 +++ .../config/syntheticpetrinet.yaml | 379 ++++++++++++++++++ .../core/datasource.py | 41 +- src/distributed_event_factory/core/event.py | 20 +- .../event_factory.py | 33 ++ src/distributed_event_factory/main.py | 39 +- .../parser/__init__.py | 0 .../parser/datasource/__init__.py | 0 .../parser/datasource/data_source_parser.py | 21 + .../parser/datasource/event/__init__.py | 0 .../datasource/event/activity/__init__.py | 0 .../event/activity/activity_parser.py | 18 + .../datasource/event/distribution_parser.py | 13 + .../datasource/event/duration/__init__.py | 0 .../duration/constant_duration_parser.py | 11 + .../event/duration/duration_parser.py | 17 + .../duration/gaussian_duration_parser.py | 11 + .../event/duration/uniform_duration_parser.py | 10 + .../event/event_data_list_parser.py | 21 + .../datasource/event/event_data_parser.py | 18 + .../event/event_selection_parser.py | 19 + .../datasource/event/transition/__init__.py | 0 .../event/transition/transition_parser.py | 16 + .../parser/kind_parser.py | 14 + .../parser/parser.py | 12 + .../parser/parser_registry.py | 99 +++++ .../parser/simulation/__init__.py | 0 .../parser/simulation/case/__init__.py | 0 .../parser/simulation/case/case_id_parser.py | 13 + .../case/increasing_case_id_parser.py | 11 + .../parser/simulation/load/__init__.py | 0 .../simulation/load/constant_load_parser.py | 11 + .../simulation/load/gradual_load_parser.py | 11 + .../parser/simulation/load/load_parser.py | 15 + .../parser/simulation/simulation_parser.py | 17 + .../parser/sink/__init__.py | 0 .../parser/sink/print_console_sink_parser.py | 10 + .../parser/sink/sink_parser.py | 13 + .../parser/sink/ui_sink_parser.py | 10 + .../provider/activity/activity_provider.py | 2 +- .../provider/data/case_provider.py | 3 +- .../datasource/data_source_registry.py | 2 +- .../datasource/sensor_topology_builder.py | 15 + .../datasource/sensor_topology_registry.py | 7 +- .../provider/event/event_provider.py | 27 +- .../provider/event/event_provider_registry.py | 2 - ...ic_probability_event_selection_provider.py | 3 +- .../provider/sink/console/console_sink.py | 15 +- .../provider/sink/http/__init__.py | 0 .../provider/sink/http/http_sink.py | 50 +++ .../provider/sink/kafka/kafka_sink.py | 15 +- .../provider/sink/newsink/__init__.py | 0 .../provider/sink/newsink/newsink.py | 54 +++ .../provider/sink/newsink/sinkqueue.py | 20 + .../provider/sink/sink_provider_registry.py | 5 +- .../provider/sink/ui/terminal_ui_sink.py | 10 +- .../transition/duration/duration_provider.py | 2 +- .../transition/duration/duration_registry.py | 6 +- .../nextsensor/next_sensor_provider.py | 2 +- .../next_sensor_provider_registry.py | 6 +- .../simulation/distributed_event_factory.py | 28 +- .../simulation/eventloop/event_loop.py | 34 +- .../simulation/new_process_simulation.py | 82 ++++ .../simulation/new_simulation.py | 51 +++ .../simulation/new_simulation2.py | 48 +++ .../simulation/process_simulator.py | 14 +- .../simulation/simulation.py | 1 - .../view/terminal.py | 2 +- 88 files changed, 2051 insertions(+), 118 deletions(-) create mode 100644 cfg/warehouse2.yml create mode 100644 src/distributed_event_factory/config/assemblyline/d0-start.yaml create mode 100644 src/distributed_event_factory/config/assemblyline/d1-goods-delivery.yaml create mode 100644 src/distributed_event_factory/config/assemblyline/d2-material-preparation.yaml create mode 100644 src/distributed_event_factory/config/assemblyline/d3-assembly-line-setup.yaml create mode 100644 src/distributed_event_factory/config/assemblyline/d4-assembling.yaml create mode 100644 src/distributed_event_factory/config/assemblyline/d5-quality-control.yaml create mode 100644 src/distributed_event_factory/config/assemblyline/d6-packaging.yaml create mode 100644 src/distributed_event_factory/config/assemblyline/d7-shipping.yaml create mode 100644 src/distributed_event_factory/config/assemblyline/s1-console.yaml create mode 100644 src/distributed_event_factory/config/assemblyline/s2-ui.yaml create mode 100644 src/distributed_event_factory/config/assemblyline/simulation.yaml create mode 100644 src/distributed_event_factory/config/experiment/__init__.py create mode 100644 src/distributed_event_factory/config/experiment/new_simulation-experiment.py create mode 100644 src/distributed_event_factory/config/load_sensor_petri_net.yaml create mode 100644 src/distributed_event_factory/config/simple.yml create mode 100644 src/distributed_event_factory/config/syntheticpetrinet.yaml create mode 100644 src/distributed_event_factory/event_factory.py create mode 100644 src/distributed_event_factory/parser/__init__.py create mode 100644 src/distributed_event_factory/parser/datasource/__init__.py create mode 100644 src/distributed_event_factory/parser/datasource/data_source_parser.py create mode 100644 src/distributed_event_factory/parser/datasource/event/__init__.py create mode 100644 src/distributed_event_factory/parser/datasource/event/activity/__init__.py create mode 100644 src/distributed_event_factory/parser/datasource/event/activity/activity_parser.py create mode 100644 src/distributed_event_factory/parser/datasource/event/distribution_parser.py create mode 100644 src/distributed_event_factory/parser/datasource/event/duration/__init__.py create mode 100644 src/distributed_event_factory/parser/datasource/event/duration/constant_duration_parser.py create mode 100644 src/distributed_event_factory/parser/datasource/event/duration/duration_parser.py create mode 100644 src/distributed_event_factory/parser/datasource/event/duration/gaussian_duration_parser.py create mode 100644 src/distributed_event_factory/parser/datasource/event/duration/uniform_duration_parser.py create mode 100644 src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py create mode 100644 src/distributed_event_factory/parser/datasource/event/event_data_parser.py create mode 100644 src/distributed_event_factory/parser/datasource/event/event_selection_parser.py create mode 100644 src/distributed_event_factory/parser/datasource/event/transition/__init__.py create mode 100644 src/distributed_event_factory/parser/datasource/event/transition/transition_parser.py create mode 100644 src/distributed_event_factory/parser/kind_parser.py create mode 100644 src/distributed_event_factory/parser/parser.py create mode 100644 src/distributed_event_factory/parser/parser_registry.py create mode 100644 src/distributed_event_factory/parser/simulation/__init__.py create mode 100644 src/distributed_event_factory/parser/simulation/case/__init__.py create mode 100644 src/distributed_event_factory/parser/simulation/case/case_id_parser.py create mode 100644 src/distributed_event_factory/parser/simulation/case/increasing_case_id_parser.py create mode 100644 src/distributed_event_factory/parser/simulation/load/__init__.py create mode 100644 src/distributed_event_factory/parser/simulation/load/constant_load_parser.py create mode 100644 src/distributed_event_factory/parser/simulation/load/gradual_load_parser.py create mode 100644 src/distributed_event_factory/parser/simulation/load/load_parser.py create mode 100644 src/distributed_event_factory/parser/simulation/simulation_parser.py create mode 100644 src/distributed_event_factory/parser/sink/__init__.py create mode 100644 src/distributed_event_factory/parser/sink/print_console_sink_parser.py create mode 100644 src/distributed_event_factory/parser/sink/sink_parser.py create mode 100644 src/distributed_event_factory/parser/sink/ui_sink_parser.py create mode 100644 src/distributed_event_factory/provider/datasource/sensor_topology_builder.py create mode 100644 src/distributed_event_factory/provider/sink/http/__init__.py create mode 100644 src/distributed_event_factory/provider/sink/http/http_sink.py create mode 100644 src/distributed_event_factory/provider/sink/newsink/__init__.py create mode 100644 src/distributed_event_factory/provider/sink/newsink/newsink.py create mode 100644 src/distributed_event_factory/provider/sink/newsink/sinkqueue.py create mode 100644 src/distributed_event_factory/simulation/new_process_simulation.py create mode 100644 src/distributed_event_factory/simulation/new_simulation.py create mode 100644 src/distributed_event_factory/simulation/new_simulation2.py diff --git a/.idea/distributed-event-factory.iml b/.idea/distributed-event-factory.iml index 6b47a28..ac1f89c 100644 --- a/.idea/distributed-event-factory.iml +++ b/.idea/distributed-event-factory.iml @@ -5,7 +5,7 @@ - + diff --git a/Dockerfile b/Dockerfile index 053e577..8ad1520 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,4 +23,4 @@ RUN --mount=type=cache,target=/root/.cache/pip \ USER appuser COPY . . -CMD python3 main.py \ No newline at end of file +CMD python3 src/distributed_event_factory/main.py \ No newline at end of file diff --git a/cfg/warehouse2.yml b/cfg/warehouse2.yml new file mode 100644 index 0000000..1a29868 --- /dev/null +++ b/cfg/warehouse2.yml @@ -0,0 +1,102 @@ +numberOfDataSources: + type: static + count: 7 +caseId: increasing +type: load +loadType: constant +tickCount: 100 +load: 10 +dataSourceTopology: + defaultSink: + type: console + dataSources: + - name: "GoodsReceiving" + groupId: "warehouse" + eventGeneration: + selection: genericProbability + distribution: [0.1, 0.6, 0.3] + from: + events: + - activity: "Reject" + transition: 6 + duration: 1 + - activity: "Store" + transition: 1 + duration: 1 + - activity: "Repackage" + transition: 1 + duration: + type: uniform + lowerBound: 3 + upperBound: 7 + - name: "Storage" + groupId: "warehouse" + eventGeneration: + selection: genericProbability + distribution: [ 0.3, 0.7 ] + from: + events: + - activity: "Picked up" + duration: + type: uniform + lowerBound: 1 + upperBound: 2 + transition: 2 + - activity: "Still storing" + transition: 1 + duration: 1 + - name: "Picking" + groupId: "warehouse" + eventGeneration: + selection: genericProbability + distribution: [ 0.5, 0.1, 0.4 ] + from: + events: + - activity: "Transport To Storage" + transition: 1 + duration: 1 + - activity: "Transport To Returns Handling" + transition: 4 + duration: 1 + - activity: "Transport to shipping" + transition: 5 + duration: + type: uniform + lowerBound: 5 + upperBound: 10 + - name: "Packaging" + groupId: "warehouse" + eventGeneration: + selection: genericProbability + distribution: [ 1.0 ] + from: + events: + - activity: "Packaging completed" + transition: 2 + duration: 3 + - name: "ReturnsHandling" + groupId: "warehouse" + eventGeneration: + selection: genericProbability + distribution: [ 1.0 ] + from: + events: + - activity: "Analysis" + transition: 2 + duration: + type: uniform + lowerBound: 30 + upperBound: 60 + - name: "Shipping" + groupId: "warehouse" + eventGeneration: + selection: uniform + distribution: [ 0.8, 0.2 ] + from: + events: + - activity: "Package waits for sending" + transition: 5 + duration: 180 + - activity: "Package sent" + transition: 6 + duration: 1 \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index eeba0cc..a7ef18f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "distributed-event-factory" -version = "0.1.0.dev1" +version = "0.2.0.dev1" authors = [ { name="Hendrik Reiter", email="hendrik.reiter@email.uni-kiel.de" }, ] diff --git a/requirements.txt b/requirements.txt index 57d97e2..f64f6e9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,9 +1,6 @@ numpy~=1.24.1 matplotlib~=3.6.2 networkx~=3.0 -websockets~=10.4 -rel==0.4.9 -websocket-client==1.6.1 kafka-python==2.0.2 scheduled-futures==1.1.0 PyYAML~=6.0.1 diff --git a/src/distributed_event_factory/config/assembly_line_kafka.yml b/src/distributed_event_factory/config/assembly_line_kafka.yml index 0b7d77c..8e2724b 100644 --- a/src/distributed_event_factory/config/assembly_line_kafka.yml +++ b/src/distributed_event_factory/config/assembly_line_kafka.yml @@ -2,21 +2,19 @@ numberOfDataSources: type: static count: 9 caseId: increasing -type: load +type: debug loadType: gradual tickCount: 100 load: 10 minimalLoad: 5 dataSourceTopology: defaultSink: - type: kafkaValidation + type: kafka bootstrapServer: localhost:9092 - topic: assembly + topic: input partition: type: caseId - numberPartitions: 10 - validationTopic: assembly-validation - validationSplit: 8 + numberPartitions: 1 dataSources: - name: "GoodsDelivery" eventGeneration: diff --git a/src/distributed_event_factory/config/assemblyline/d0-start.yaml b/src/distributed_event_factory/config/assemblyline/d0-start.yaml new file mode 100644 index 0000000..cf4ecfb --- /dev/null +++ b/src/distributed_event_factory/config/assemblyline/d0-start.yaml @@ -0,0 +1,11 @@ +kind: datasource +name: "" +spec: + name: "" + group: "factory" + selection: genericProbability + distribution: [1.0] + eventData: + - activity: "" + transition: "GoodsDelivery" + duration: 0 \ No newline at end of file diff --git a/src/distributed_event_factory/config/assemblyline/d1-goods-delivery.yaml b/src/distributed_event_factory/config/assemblyline/d1-goods-delivery.yaml new file mode 100644 index 0000000..879ae75 --- /dev/null +++ b/src/distributed_event_factory/config/assemblyline/d1-goods-delivery.yaml @@ -0,0 +1,23 @@ +kind: datasource +name: "GoodsDelivery" +spec: + name: "GoodsDelivery" + group: "factory" + selection: genericProbability + distribution: [0.1, 0.7, 0.2] + eventData: + - activity: "Reject" + transition: "" + duration: 1 + - activity: "Store" + transition: "GoodsDelivery" + duration: + type: gaussian + mu: 720 + sigma: 120 + - activity: "Pass To Production" + transition: "MaterialPreparation" + duration: + type: uniform + lowerBound: 3 + upperBound: 7 diff --git a/src/distributed_event_factory/config/assemblyline/d2-material-preparation.yaml b/src/distributed_event_factory/config/assemblyline/d2-material-preparation.yaml new file mode 100644 index 0000000..8d855ff --- /dev/null +++ b/src/distributed_event_factory/config/assemblyline/d2-material-preparation.yaml @@ -0,0 +1,23 @@ +kind: datasource +name: "MaterialPreparation" +spec: + name: "MaterialPreparation" + group: "factory" + selection: genericProbability + distribution: [ 0.25, 0.7, 0.05 ] + eventData: + - activity: "MaterialPreparation - Finished" + duration: + type: uniform + lowerBound: 1 + upperBound: 2 + transition: "AssemblyLineSetup" + - activity: "Waiting for Material" + transition: "MaterialPreparation" + duration: 1 + - activity: "Internal Error" + transition: "MaterialPreparation" + duration: + type: gaussian + mu: 500 + sigma: 100 diff --git a/src/distributed_event_factory/config/assemblyline/d3-assembly-line-setup.yaml b/src/distributed_event_factory/config/assemblyline/d3-assembly-line-setup.yaml new file mode 100644 index 0000000..a74c939 --- /dev/null +++ b/src/distributed_event_factory/config/assemblyline/d3-assembly-line-setup.yaml @@ -0,0 +1,29 @@ +kind: datasource +name: "AssemblyLineSetup" +spec: + name: "AssemblyLineSetup" + group: "factory" + selection: genericProbability + distribution: [ 0.3, 0.4, 0.15, 0.05, 0.1 ] + eventData: + - activity: "Material Not Set Up as expected" + transition: "MaterialPreparation" + duration: + type: uniform + lowerBound: 2 + upperBound: 5 + - activity: "Assembly Line Setup successfully" + transition: "Assembling" + duration: 3 + - activity: "Material in wrong order. Reordering.." + transition: "AssemblyLineSetup" + duration: 1 + - activity: "Maximum Material count exceeded. Remove item" + transition: "AssemblyLineSetup" + duration: 1 + - activity: "Internal Error" + transition: "Assembling" + duration: + type: gaussian + mu: 500 + sigma: 100 diff --git a/src/distributed_event_factory/config/assemblyline/d4-assembling.yaml b/src/distributed_event_factory/config/assemblyline/d4-assembling.yaml new file mode 100644 index 0000000..eac32a2 --- /dev/null +++ b/src/distributed_event_factory/config/assemblyline/d4-assembling.yaml @@ -0,0 +1,23 @@ +kind: datasource +name: "Assembling" +spec: + name: "Assembling" + group: "factory" + selection: genericProbability + distribution: [ 0.8, 0.1, 0.08, 0.02 ] + eventData: + - activity: "Assembling completed" + duration: 10 + transition: "QualityControl" + - activity: "Overheating" + transition: "" + duration: 2 + - activity: "Item broke" + transition: "" + duration: 1 + - activity: "Internal Error" + transition: "Assembling" + duration: + type: gaussian + mu: 500 + sigma: 100 \ No newline at end of file diff --git a/src/distributed_event_factory/config/assemblyline/d5-quality-control.yaml b/src/distributed_event_factory/config/assemblyline/d5-quality-control.yaml new file mode 100644 index 0000000..c25d814 --- /dev/null +++ b/src/distributed_event_factory/config/assemblyline/d5-quality-control.yaml @@ -0,0 +1,20 @@ +kind: datasource +name: "QualityControl" +spec: + name: "QualityControl" + group: "factory" + selection: genericProbability + distribution: [ 0.3, 0.1, 0.6 ] + eventData: + - activity: "Item Needs Corrections" + transition: "Assembling" + duration: 2 + - activity: "Quality Insufficient" + transition: "" + duration: 2 + - activity: "Quality check passed" + transition: "Packaging" + duration: + type: uniform + lowerBound: 5 + upperBound: 10 diff --git a/src/distributed_event_factory/config/assemblyline/d6-packaging.yaml b/src/distributed_event_factory/config/assemblyline/d6-packaging.yaml new file mode 100644 index 0000000..cd47264 --- /dev/null +++ b/src/distributed_event_factory/config/assemblyline/d6-packaging.yaml @@ -0,0 +1,11 @@ +kind: datasource +name: "Packaging" +spec: + name: "Packaging" + group: "factory" + selection: genericProbability + distribution: [ 1.0 ] + eventData: + - activity: "Packaging completed" + transition: "Shipping" + duration: 3 diff --git a/src/distributed_event_factory/config/assemblyline/d7-shipping.yaml b/src/distributed_event_factory/config/assemblyline/d7-shipping.yaml new file mode 100644 index 0000000..ea1232d --- /dev/null +++ b/src/distributed_event_factory/config/assemblyline/d7-shipping.yaml @@ -0,0 +1,14 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + selection: genericProbability + distribution: [ 0.8, 0.2 ] + eventData: + - activity: "Package waits for sending" + transition: "Shipping" + duration: 180 + - activity: "Package sent" + transition: "" + duration: 1 \ No newline at end of file diff --git a/src/distributed_event_factory/config/assemblyline/s1-console.yaml b/src/distributed_event_factory/config/assemblyline/s1-console.yaml new file mode 100644 index 0000000..46f3db3 --- /dev/null +++ b/src/distributed_event_factory/config/assemblyline/s1-console.yaml @@ -0,0 +1,9 @@ +kind: sink +name: console-sink +spec: + type: console + id: "Sensor" + dataSourceRefs: + - "GoodsDelivery" + - "MaterialPreparation" + - "AssemblyLineSetup" diff --git a/src/distributed_event_factory/config/assemblyline/s2-ui.yaml b/src/distributed_event_factory/config/assemblyline/s2-ui.yaml new file mode 100644 index 0000000..9dabc3b --- /dev/null +++ b/src/distributed_event_factory/config/assemblyline/s2-ui.yaml @@ -0,0 +1,10 @@ +kind: sink +name: ui-sink +spec: + type: ui + id: "UI" + dataSourceRefs: + - "Assembling" + - "QualityControl" + - "Packaging" + - "Shipping" \ No newline at end of file diff --git a/src/distributed_event_factory/config/assemblyline/simulation.yaml b/src/distributed_event_factory/config/assemblyline/simulation.yaml new file mode 100644 index 0000000..78ce1e1 --- /dev/null +++ b/src/distributed_event_factory/config/assemblyline/simulation.yaml @@ -0,0 +1,14 @@ +kind: simulation +name: assembly-line-simulation +spec: + caseId: increasing + timeFrameDuration: 10 + load: + loadBehavior: sinus + mean: 10 + amplitude: 8 + phase: 50 + #loadBehavior: gradual + #tickCount: 100 + #minimalLoad: 5 + #load: 10 \ No newline at end of file diff --git a/src/distributed_event_factory/config/experiment/__init__.py b/src/distributed_event_factory/config/experiment/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/distributed_event_factory/config/experiment/new_simulation-experiment.py b/src/distributed_event_factory/config/experiment/new_simulation-experiment.py new file mode 100644 index 0000000..ba5cfbb --- /dev/null +++ b/src/distributed_event_factory/config/experiment/new_simulation-experiment.py @@ -0,0 +1,31 @@ +import os + +import yaml + +from src.distributed_event_factory.parser.simulation.load.gradual_load_parser import GradualLoadParser +from src.distributed_event_factory.parser.parser_registry import ParserRegistry +from src.distributed_event_factory.core.datasource import EndDataSource + +if __name__ == '__main__': + sinks = dict() + simulations = dict() + datasources = dict() + datasources[""] = EndDataSource() + parser = ParserRegistry() + parser.load_parser.add_dependency("gradual", GradualLoadParser()) + + for filename in os.listdir("../assemblyline"): + with open("../assemblyline/" + filename) as file: + configuration = yaml.safe_load(file) + kind = configuration['kind'] + name = configuration['name'] + parsed_object = parser.kind_parser.parse(configuration) + if kind == "simulation": + simulations[name] = parsed_object + elif kind == "datasource": + datasources[name] = parsed_object + elif kind == "sink": + sinks[name] = parsed_object + + for simulation in simulations: + simulations[simulation].run_simulation(datasources, sinks) diff --git a/src/distributed_event_factory/config/load_sensor_petri_net.yaml b/src/distributed_event_factory/config/load_sensor_petri_net.yaml new file mode 100644 index 0000000..e84e97b --- /dev/null +++ b/src/distributed_event_factory/config/load_sensor_petri_net.yaml @@ -0,0 +1,352 @@ +numberOfDataSources: + type: static + count: 9 +caseId: increasing +type: load +loadType: gradual +tickCount: 100 +load: 10 +minimalLoad: 5 +dataSourceTopology: + defaultSink: + type: kafka + bootstrapServer: kube1-1:30376 + topic: t5 + partition: + type: caseId + numberPartitions: 1 + validationTopic: assembly-validation + validationSplit: 8 + dataSources: + - name: "GoodsDelivery" #pseudo Transition 0 from start to "store" + eventGeneration: + selection: genericProbability + distribution: [0.01, 0.91, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01] + from: + events: + - activity: "Reject" + duration: 1 + transition: 10 + - activity: "Store" + transition: 1 + duration: 5 + - activity: "Pass To Production" + duration: 4 + transition: 2 + - activity: "Material Preparation Finished" + duration: 1 + transition: 3 + - activity: "Internal Error" + transition: 4 + duration: 5 + - activity: "Assemble complete" + duration: 7 + transition: 5 + - activity: "Waiting for Material" + duration: 1 + transition: 6 + - activity: "Packaging completed" + transition: 7 + duration: 4 + - activity: "Waiting for sending" + duration: 1 + transition: 8 + - activity: "Package sent" + duration: 1 + transition: 9 + + - name: "GoodsProcessing" #Transition 1 from store to "pass to production / reject" + eventGeneration: + selection: genericProbability + distribution: [0.11, 0.00, 0.82, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01] + from: + events: + - activity: "Reject" + duration: 1 + transition: 10 + - activity: "Store" + transition: 1 + duration: 5 + - activity: "Pass To Production" + duration: 4 + transition: 2 + - activity: "Material Preparation Finished" + duration: 1 + transition: 3 + - activity: "Internal Error" + transition: 4 + duration: 5 + - activity: "Assemble complete" + duration: 7 + transition: 5 + - activity: "Waiting for Material" + duration: 1 + transition: 6 + - activity: "Packaging completed" + transition: 7 + duration: 4 + - activity: "Waiting for sending" + duration: 1 + transition: 8 + - activity: "Package sent" + duration: 1 + transition: 9 + + - name: "MaterialCompletion" #Transition 2 from "pass to production" to "Material Prep finished / Waiting for Material" + eventGeneration: + selection: genericProbability + distribution: [0.01, 0.00, 0.01, 0.2, 0.01, 0.01, 0.73, 0.01, 0.01, 0.01] + from: + events: + - activity: "Reject" + duration: 1 + transition: 10 + - activity: "Store" + transition: 1 + duration: 5 + - activity: "Pass To Production" + duration: 4 + transition: 2 + - activity: "Material Preparation Finished" + duration: 1 + transition: 3 + - activity: "Internal Error" + transition: 4 + duration: 5 + - activity: "Assemble complete" + duration: 7 + transition: 5 + - activity: "Waiting for Material" + duration: 1 + transition: 6 + - activity: "Packaging completed" + transition: 7 + duration: 4 + - activity: "Waiting for sending" + duration: 1 + transition: 8 + - activity: "Package sent" + duration: 1 + transition: 9 + + - name: "AssemblyProcess" #Transition 3 from Material Preparation Finished to "Internal Error / Assemble complete" + eventGeneration: + selection: genericProbability + distribution: [0.01, 0.00, 0.00, 0.01, 0.06, 0.88, 0.01, 0.01, 0.01, 0.01] + from: + events: + - activity: "Reject" + duration: 1 + transition: 10 + - activity: "Store" + transition: 1 + duration: 5 + - activity: "Pass To Production" + duration: 4 + transition: 2 + - activity: "Material Preparation Finished" + duration: 1 + transition: 3 + - activity: "Internal Error" + transition: 4 + duration: 5 + - activity: "Assemble complete" + duration: 7 + transition: 5 + - activity: "Waiting for Material" + duration: 1 + transition: 6 + - activity: "Packaging completed" + transition: 7 + duration: 4 + - activity: "Waiting for sending" + duration: 1 + transition: 8 + - activity: "Package sent" + duration: 1 + transition: 9 + + - name: "QualityControl" #Transition 4 Internal Error to "Waiting for material" + eventGeneration: + selection: genericProbability + distribution: [0.01, 0.00, 0.00, 0.00, 0.02, 0.01, 0.93, 0.01, 0.01, 0.01] + from: + events: + - activity: "Reject" + duration: 1 + transition: 10 + - activity: "Store" + transition: 1 + duration: 5 + - activity: "Pass To Production" + duration: 4 + transition: 2 + - activity: "Material Preparation Finished" + duration: 1 + transition: 3 + - activity: "Internal Error" + transition: 4 + duration: 5 + - activity: "Assemble complete" + duration: 7 + transition: 5 + - activity: "Waiting for Material" + duration: 1 + transition: 6 + - activity: "Packaging complete" + transition: 7 + duration: 4 + - activity: "Waiting for sending" + duration: 1 + transition: 8 + - activity: "Package sent" + duration: 1 + transition: 9 + + - name: "Assembly" #Transition 5 Assemble complete to "Packaging complete" + eventGeneration: + selection: genericProbability + distribution: [0.01, 0.00, 0.00, 0.00, 0.00, 0.01, 0.00, 0.96, 0.01, 0.01] + from: + events: + - activity: "Reject" + duration: 1 + transition: 10 + - activity: "Store" + transition: 1 + duration: 5 + - activity: "Pass To Production" + duration: 4 + transition: 2 + - activity: "Material Preparation Finished" + duration: 1 + transition: 3 + - activity: "Internal Error" + transition: 4 + duration: 5 + - activity: "Assemble complete" + duration: 7 + transition: 5 + - activity: "Waiting for Material" + duration: 1 + transition: 6 + - activity: "Packaging completed" + transition: 7 + duration: 4 + - activity: "Waiting for sending" + duration: 1 + transition: 8 + - activity: "Package sent" + duration: 1 + transition: 9 + + - name: "Packing" #Transition 6 Waiting for Material to "Pass to production" + eventGeneration: + selection: uniform + distribution: [0.01, 0.00, 0.92, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01] + from: + events: + - activity: "Reject" + duration: 1 + transition: 10 + - activity: "Store" + transition: 1 + duration: 5 + - activity: "Pass To Production" + duration: 4 + transition: 2 + - activity: "Material Preparation Finished" + duration: 1 + transition: 3 + - activity: "Internal Error" + transition: 4 + duration: 5 + - activity: "Assemble complete" + duration: 7 + transition: 5 + - activity: "Waiting for Material" + duration: 1 + transition: 6 + - activity: "Packaging complete" + transition: 7 + duration: 4 + - activity: "Waiting for sending" + duration: 1 + transition: 8 + - activity: "Package sent" + duration: 1 + transition: 9 + + - name: "Shipping" #Transition 7 Packaging completed to "Waiting for sending" + eventGeneration: + selection: uniform + distribution: [0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.98, 0.02] + from: + events: + - activity: "Reject" + duration: 1 + transition: 10 + - activity: "Store" + transition: 1 + duration: 5 + - activity: "Pass To Production" + duration: 4 + transition: 2 + - activity: "Material Preparation Finished" + duration: 1 + transition: 3 + - activity: "Internal Error" + transition: 4 + duration: 5 + - activity: "Assemble complete" + duration: 7 + transition: 5 + - activity: "Waiting for Material" + duration: 1 + transition: 6 + - activity: "Packaging complete" + transition: 7 + duration: 4 + - activity: "Waiting for sending" + duration: 1 + transition: 8 + - activity: "Package sent" + duration: 1 + transition: 9 + + - name: "Shipping" #Transition 8 Waiting for sending to "Packaging complete/Package sent" + eventGeneration: + selection: uniform + distribution: [0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.15, 0.85] + from: + events: + - activity: "Reject" + duration: 1 + transition: 10 + - activity: "Store" + transition: 1 + duration: 5 + - activity: "Pass To Production" + duration: 4 + transition: 2 + - activity: "Material Preparation Finished" + duration: 1 + transition: 3 + - activity: "Internal Error" + transition: 4 + duration: 5 + - activity: "Assemble complete" + duration: 7 + transition: 5 + - activity: "Waiting for Material" + duration: 1 + transition: 6 + - activity: "Packaging complete" + transition: 7 + duration: 4 + - activity: "Waiting for sending" + duration: 1 + transition: 8 + - activity: "Package sent" + duration: 1 + transition: 9 \ No newline at end of file diff --git a/src/distributed_event_factory/config/simple.yml b/src/distributed_event_factory/config/simple.yml new file mode 100644 index 0000000..325c976 --- /dev/null +++ b/src/distributed_event_factory/config/simple.yml @@ -0,0 +1,49 @@ +numberOfDataSources: + type: static + count: 3 +caseId: increasing +type: load +loadType: gradual +tickCount: 100 +load: 10 +minimalLoad: 5 +dataSourceTopology: + defaultSink: + type: kafka + bootstrapServer: kube1-1:30376 + topic: t3 + partition: + type: caseId + numberPartitions: 1 + dataSources: + - name: "S1" + eventGeneration: + selection: genericProbability + distribution: [1.0] + from: + events: + - activity: "A1" + duration: 1 + transition: 1 + - name: "S2" + eventGeneration: + selection: genericProbability + distribution: [ 0.7, 0.3 ] + from: + events: + - activity: "A2" + duration: 5 + transition: 2 + - activity: "A3" + duration: 5 + transition: 2 + - name: "S3" + eventGeneration: + selection: genericProbability + distribution: [ 1.0 ] + from: + events: + - activity: "A4" + duration: 2 + transition: 3 + diff --git a/src/distributed_event_factory/config/syntheticpetrinet.yaml b/src/distributed_event_factory/config/syntheticpetrinet.yaml new file mode 100644 index 0000000..5f4b961 --- /dev/null +++ b/src/distributed_event_factory/config/syntheticpetrinet.yaml @@ -0,0 +1,379 @@ +numberOfDataSources: + type: static + count: 9 +caseId: increasing +type: load +loadType: constant +tickCount: 100 +load: 5000 +minimalLoad: 5 +dataSourceTopology: + defaultSink: + type: http + bootstrapServer: kube1-1:30376 + topic: z12 + partition: + type: caseId + numberPartitions: 1 + dataSources: + - name: "start_place" # start Place to "Inspection" + eventGeneration: + selection: genericProbability + distribution: [0.91, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01] + from: + events: + - activity: "Inspection" + duration: 1 + transition: 1 + - activity: "Reject" + duration: 5 + transition: 2 + - activity: "Accept" + duration: 4 + transition: 3 + - activity: "Process" + duration: 1 + transition: 4 + - activity: "Return" + duration: 5 + transition: 5 + - activity: "Pay" + duration: 7 + transition: 6 + - activity: "Record" + duration: 1 + transition: 7 + - activity: "Document" + duration: 4 + transition: 8 + - activity: "Manufacture" + duration: 1 + transition: 9 + - activity: "Take Stock" + duration: 1 + transition: 10 + + - name: "P1" # from a to "b or c" + eventGeneration: + selection: genericProbability + distribution: [0.00, 0.48, 0.48, 0.01, 0.01, 0.01, 0.01, 0.00, 0.00, 0.00] + from: + events: + - activity: "Inspection" + duration: 1 + transition: 1 + - activity: "Reject" + duration: 5 + transition: 2 + - activity: "Accept" + duration: 4 + transition: 3 + - activity: "Process" + duration: 1 + transition: 4 + - activity: "Return" + duration: 5 + transition: 5 + - activity: "Pay" + duration: 7 + transition: 6 + - activity: "Record" + duration: 1 + transition: 7 + - activity: "Document" + duration: 4 + transition: 8 + - activity: "Manufacture" + duration: 1 + transition: 9 + - activity: "Take Stock" + duration: 1 + transition: 10 + - name: "P2" # from b to "d or e" + eventGeneration: + selection: genericProbability + distribution: [0.00, 0.00, 0.00, 0.49, 0.49, 0.00, 0.00, 0.01, 0.0, 0.01] + from: + events: + - activity: "Inspection" + duration: 1 + transition: 1 + - activity: "Reject" + duration: 5 + transition: 2 + - activity: "Accept" + duration: 4 + transition: 3 + - activity: "Process" + duration: 1 + transition: 4 + - activity: "Return" + duration: 5 + transition: 5 + - activity: "Pay" + duration: 7 + transition: 6 + - activity: "Record" + duration: 1 + transition: 7 + - activity: "Document" + duration: 4 + transition: 8 + - activity: "Manufacture" + duration: 1 + transition: 9 + - activity: "Take Stock" + duration: 1 + transition: 10 + - name: "Place4and5" # exit c to "f and g" + eventGeneration: + selection: genericProbability + distribution: [0.00, 0.00, 0.00, 0.00, 0.00, 0.49, 0.49, 0.00, 0.01, 0.01] + from: + events: + - activity: "Inspection" + duration: 1 + transition: 1 + - activity: "Reject" + duration: 5 + transition: 2 + - activity: "Accept" + duration: 4 + transition: 3 + - activity: "Process" + duration: 1 + transition: 4 + - activity: "Return" + duration: 5 + transition: 5 + - activity: "Pay" + duration: 7 + transition: 6 + - activity: "Record" + duration: 1 + transition: 7 + - activity: "Document" + duration: 4 + transition: 8 + - activity: "Manufacture" + duration: 1 + transition: 9 + - activity: "Take Stock" + duration: 1 + transition: 10 + - name: "P3" # from d to "Document" + eventGeneration: + selection: genericProbability + distribution: [0.00, 0.00, 0.00, 0.01, 0.00, 0.00, 0.00, 0.98, 0.00, 0.01] + from: + events: + - activity: "Inspection" + duration: 1 + transition: 1 + - activity: "Reject" + duration: 5 + transition: 2 + - activity: "Accept" + duration: 4 + transition: 3 + - activity: "Process" + duration: 1 + transition: 4 + - activity: "Return" + duration: 5 + transition: 5 + - activity: "Pay" + duration: 7 + transition: 6 + - activity: "Record" + duration: 1 + transition: 7 + - activity: "Document" + duration: 4 + transition: 8 + - activity: "Manufacture" + duration: 1 + transition: 9 + - activity: "Take Stock" + duration: 1 + transition: 10 + - name: "P3" # from e to "Manufacture" + eventGeneration: + selection: genericProbability + distribution: [0.00, 0.00, 0.00, 0.00, 0.01, 0.00, 0.00, 0.98, 0.00, 0.01] + from: + events: + - activity: "Inspection" + duration: 1 + transition: 1 + - activity: "Reject" + duration: 5 + transition: 2 + - activity: "Accept" + duration: 4 + transition: 3 + - activity: "Process" + duration: 1 + transition: 4 + - activity: "Return" + duration: 5 + transition: 5 + - activity: "Pay" + duration: 7 + transition: 6 + - activity: "Record" + duration: 1 + transition: 7 + - activity: "Document" + duration: 4 + transition: 8 + - activity: "Manufacture" + duration: 1 + transition: 9 + - activity: "Take Stock" + duration: 1 + transition: 10 + - name: "P6" # from f to "i or g" + eventGeneration: + selection: genericProbability + distribution: [0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.39, 0.00, 0.60, 0.01] + from: + events: + - activity: "Inspection" + duration: 1 + transition: 1 + - activity: "Reject" + duration: 5 + transition: 2 + - activity: "Accept" + duration: 4 + transition: 3 + - activity: "Process" + duration: 1 + transition: 4 + - activity: "Return" + duration: 5 + transition: 5 + - activity: "Pay" + duration: 7 + transition: 6 + - activity: "Record" + duration: 1 + transition: 7 + - activity: "Document" + duration: 4 + transition: 8 + - activity: "Manufacture" + duration: 1 + transition: 9 + - activity: "Take Stock" + duration: 1 + transition: 10 + - name: "P7" # from g to "i or f" + eventGeneration: + selection: genericProbability + distribution: [0.00, 0.00, 0.00, 0.00, 0.00, 0.39, 0.00, 0.00, 0.60, 0.01] + from: + events: + - activity: "Inspection" + duration: 1 + transition: 1 + - activity: "Reject" + duration: 5 + transition: 2 + - activity: "Accept" + duration: 4 + transition: 3 + - activity: "Process" + duration: 1 + transition: 4 + - activity: "Return" + duration: 5 + transition: 5 + - activity: "Pay" + duration: 7 + transition: 6 + - activity: "Record" + duration: 1 + transition: 7 + - activity: "Document" + duration: 4 + transition: 8 + - activity: "Manufacture" + duration: 1 + transition: 9 + - activity: "Take Stock" + duration: 1 + transition: 10 + - name: "P8" # from h to "Take Stock" + eventGeneration: + selection: genericProbability + distribution: [0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.01, 0.00, 0.99] + from: + events: + - activity: "Inspection" + duration: 1 + transition: 1 + - activity: "Reject" + duration: 5 + transition: 2 + - activity: "Accept" + duration: 4 + transition: 3 + - activity: "Process" + duration: 1 + transition: 4 + - activity: "Return" + duration: 5 + transition: 5 + - activity: "Pay" + duration: 7 + transition: 6 + - activity: "Record" + duration: 1 + transition: 7 + - activity: "Document" + duration: 4 + transition: 8 + - activity: "Manufacture" + duration: 1 + transition: 9 + - activity: "Take Stock" + duration: 1 + transition: 10 + - name: "GoodsDelivery" # from i to "Take Stock" + eventGeneration: + selection: genericProbability + distribution: [0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.01, 0.99] + from: + events: + - activity: "Inspection" + duration: 1 + transition: 1 + - activity: "Reject" + duration: 5 + transition: 2 + - activity: "Accept" + duration: 4 + transition: 3 + - activity: "Process" + duration: 1 + transition: 4 + - activity: "Return" + duration: 5 + transition: 5 + - activity: "Pay" + duration: 7 + transition: 6 + - activity: "Record" + duration: 1 + transition: 7 + - activity: "Document" + duration: 4 + transition: 8 + - activity: "Manufacture" + duration: 1 + transition: 9 + - activity: "Take Stock" + duration: 1 + transition: 10 \ No newline at end of file diff --git a/src/distributed_event_factory/core/datasource.py b/src/distributed_event_factory/core/datasource.py index 47d34a4..055971f 100644 --- a/src/distributed_event_factory/core/datasource.py +++ b/src/distributed_event_factory/core/datasource.py @@ -3,11 +3,12 @@ from src.distributed_event_factory.core.datasource_id import DataSourceId, START_SENSOR_ID, END_DATA_SOURCE_ID from src.distributed_event_factory.core.event import AbstractEvent, StartEvent, EndEvent, Event +from src.distributed_event_factory.provider.event.event_data import EventData from src.distributed_event_factory.provider.event.event_provider import EventDataProvider, EndEventProvider, \ StartEventProvider from src.distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider -from src.distributed_event_factory.provider.sink.sink_provider import Sink -from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider +from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, \ + AbstractNextSensorProvider class DataSource(ABC): @@ -17,7 +18,7 @@ def emit_event(self, case, activity_name, timestamp) -> None: pass @abstractmethod - def get_event_provider(self) -> EventDataProvider: + def get_event_data(self) -> EventData: pass @abstractmethod @@ -31,18 +32,15 @@ def get_event_log(self) -> List[AbstractEvent]: class StartDataSource(DataSource): - def __init__(self, transition_provider: NextSensorProvider, sender): + def __init__(self, transition_provider: AbstractNextSensorProvider): self.event_log = [] self.transition_provider = transition_provider - self.sender = sender - def get_event_provider(self) -> EventDataProvider: - return StartEventProvider() + def get_event_data(self) -> EventDataProvider: + return StartEventProvider(self.transition_provider).get_event_data() - def emit_event(self, case, activity, timestamp) -> None: - event = StartEvent(case) - self.event_log.append(event) - self.sender.send(event) + def emit_event(self, case, activity, timestamp) -> AbstractEvent: + return StartEvent(case, self.transition_provider) def get_sensor_transition(self) -> tuple[int, int]: return 0, self.transition_provider.get_next_sensor() @@ -56,17 +54,15 @@ def get_event_log(self) -> List[AbstractEvent]: class EndDataSource(DataSource): - def __init__(self, sender): + def __init__(self): self.event_log = [] - self.sender = sender def emit_event(self, case, activity, timestamp) -> None: event = EndEvent(case) self.event_log.append(event) - self.sender.send(event) - def get_event_provider(self) -> EventDataProvider: - return EndEventProvider() + def get_event_data(self) -> EventDataProvider: + return EndEventProvider().get_event_data() def get_sensor_transition(self) -> tuple[int, int]: raise ValueError("There is no transition on the end datasource") @@ -81,14 +77,12 @@ def get_event_log(self) -> List[AbstractEvent]: class GenericDataSource(DataSource): def __init__( self, - sensor_id: DataSourceId, + data_source_id: DataSourceId, group_id: str, event_provider: EventSelectionProvider, - sink: Sink, ): - self.sensor_id: DataSourceId = sensor_id + self.sensor_id: DataSourceId = data_source_id self.group_id: str = group_id - self.sender = sink self.event_provider = event_provider self.event_log: List[AbstractEvent] = [] @@ -98,7 +92,10 @@ def get_id(self) -> DataSourceId: def get_event_provider(self): return self.event_provider - def emit_event(self, case, activity_name, timestamp) -> None: + def get_event_data(self): + return self.event_provider.get_event_data() + + def emit_event(self, case, activity_name, timestamp) -> Event: event = Event( timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), sensor_value=activity_name, @@ -107,7 +104,7 @@ def emit_event(self, case, activity_name, timestamp) -> None: group_id=self.group_id ) self.event_log.append(event) - self.sender.send(event) + return event def get_event_log(self) -> List[AbstractEvent]: return self.event_log diff --git a/src/distributed_event_factory/core/event.py b/src/distributed_event_factory/core/event.py index 878a8b0..8998877 100644 --- a/src/distributed_event_factory/core/event.py +++ b/src/distributed_event_factory/core/event.py @@ -1,5 +1,8 @@ from abc import abstractmethod, ABC +from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, \ + AbstractNextSensorProvider + class CaseId: def __init__(self, case_id: str): @@ -18,12 +21,17 @@ def get_case(self) -> CaseId: class StartEvent(AbstractEvent): - def __init__(self, case_id: CaseId): + def __init__(self, case_id: CaseId, transition_provider: AbstractNextSensorProvider): self.case_id = case_id + self.transition_provider = transition_provider + self.node = "start" def get_case(self): return self.case_id + def get_next_sensor(self): + return self.transition_provider.get_next_sensor() + def __str__(self): return f"" @@ -43,13 +51,13 @@ def __str__(self): class Event(AbstractEvent): def __init__(self, timestamp, sensor_value, case_id: CaseId, sensor_name, group_id): self.timestamp = timestamp - self.sensor_value: any = sensor_value - self.case_id: CaseId = case_id - self.sensor_name: str = sensor_name - self.group_id: str = group_id + self.activity: any = sensor_value + self.caseId: CaseId = case_id + self.node: str = sensor_name + self.group: str = group_id def get_case(self): - return self.case_id + return self.caseId def __str__(self): return str(self.__dict__) diff --git a/src/distributed_event_factory/event_factory.py b/src/distributed_event_factory/event_factory.py new file mode 100644 index 0000000..b566c37 --- /dev/null +++ b/src/distributed_event_factory/event_factory.py @@ -0,0 +1,33 @@ +import os +import yaml + +from src.distributed_event_factory.parser.parser_registry import ParserRegistry +from src.distributed_event_factory.core.datasource import EndDataSource + +class EventFactory: + def __init__(self): + self.sinks = dict() + self.simulations = dict() + self.datasources = dict() + self.datasources[""] = EndDataSource() + self.parser = ParserRegistry() + + def run(self, directory): + for filename in os.listdir(directory): + with open(directory + "/" + filename) as file: + configuration = yaml.safe_load(file) + kind = configuration['kind'] + name = configuration['name'] + parsed_object = self.parser.kind_parser.parse(configuration) + if kind == "simulation": + self.simulations[name] = parsed_object + elif kind == "datasource": + self.datasources[name] = parsed_object + elif kind == "sink": + self.sinks[name] = parsed_object + + for simulation in self.simulations: + self.simulations[simulation].run_simulation(self.datasources, self.sinks) + +if __name__ == '__main__': + EventFactory("") \ No newline at end of file diff --git a/src/distributed_event_factory/main.py b/src/distributed_event_factory/main.py index 6268c59..6848a05 100644 --- a/src/distributed_event_factory/main.py +++ b/src/distributed_event_factory/main.py @@ -1,11 +1,36 @@ -import os +from src.distributed_event_factory.event_factory import EventFactory +from src.distributed_event_factory.parser.parser import Parser +from src.distributed_event_factory.provider.load.load_provider import LoadProvider +import math + +class SinusLoadProvider(LoadProvider): + def __init__(self, mean, amplitude, phase): + self.i = 0 + self.mean = mean + self.amplitude = amplitude + self.phase = phase + + def get_load_value(self): + self.i = self.i + 1 + return self.amplitude * math.sin(self.i*(math.pi/self.phase)) + self.mean + + +class SinusLoadParser(Parser): + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return SinusLoadProvider(config["mean"], config["amplitude"], config["phase"]) -from src.distributed_event_factory.simulation.distributed_event_factory import DistributedEventFactory if __name__ == '__main__': - if "CONFIG_FILE" in os.environ: - config_file = os.environ["CONFIG_FILE"] - else: - config_file = "config/assembly_line.yml" + #if "CONFIG_FILE" in os.environ: + # config_file = os.environ["CONFIG_FILE"] + #else: + # config_file = "config/syntheticpetrinet.yaml" + + event_factory = EventFactory() + event_factory.parser.load_parser.add_dependency("sinus", SinusLoadParser()) + event_factory.run("config/assemblyline") - DistributedEventFactory(config_file).start() + #DistributedEventFactory.from_config_file(config_file).start() diff --git a/src/distributed_event_factory/parser/__init__.py b/src/distributed_event_factory/parser/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/distributed_event_factory/parser/datasource/__init__.py b/src/distributed_event_factory/parser/datasource/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/distributed_event_factory/parser/datasource/data_source_parser.py b/src/distributed_event_factory/parser/datasource/data_source_parser.py new file mode 100644 index 0000000..af71c60 --- /dev/null +++ b/src/distributed_event_factory/parser/datasource/data_source_parser.py @@ -0,0 +1,21 @@ +from src.distributed_event_factory.parser.parser import Parser +from src.distributed_event_factory.core.datasource import GenericDataSource +from src.distributed_event_factory.core.datasource_id import DataSourceId + + +class DataSourceParser(Parser): + + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + return GenericDataSource( + data_source_id=DataSourceId(config["name"]), + group_id=config["group"], + event_provider=self.dependencies["eventData"].parse(config) + ) + diff --git a/src/distributed_event_factory/parser/datasource/event/__init__.py b/src/distributed_event_factory/parser/datasource/event/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/distributed_event_factory/parser/datasource/event/activity/__init__.py b/src/distributed_event_factory/parser/datasource/event/activity/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/distributed_event_factory/parser/datasource/event/activity/activity_parser.py b/src/distributed_event_factory/parser/datasource/event/activity/activity_parser.py new file mode 100644 index 0000000..846e3e1 --- /dev/null +++ b/src/distributed_event_factory/parser/datasource/event/activity/activity_parser.py @@ -0,0 +1,18 @@ +from src.distributed_event_factory.parser.parser import Parser +from src.distributed_event_factory.provider.activity.activity_provider import ConstantActivityProvider +from src.distributed_event_factory.provider.transition.duration.duration_provider import ConstantDurationProvider + + +class ActivityParser(Parser): + + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + if isinstance(config, str): + return ConstantActivityProvider(config) + return self.dependencies[config["type"]].parse(config) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/datasource/event/distribution_parser.py b/src/distributed_event_factory/parser/datasource/event/distribution_parser.py new file mode 100644 index 0000000..5c4c86f --- /dev/null +++ b/src/distributed_event_factory/parser/datasource/event/distribution_parser.py @@ -0,0 +1,13 @@ +from src.distributed_event_factory.parser.parser import Parser + + +class DistributionParser(Parser): + + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return config['distribution'] \ No newline at end of file diff --git a/src/distributed_event_factory/parser/datasource/event/duration/__init__.py b/src/distributed_event_factory/parser/datasource/event/duration/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/distributed_event_factory/parser/datasource/event/duration/constant_duration_parser.py b/src/distributed_event_factory/parser/datasource/event/duration/constant_duration_parser.py new file mode 100644 index 0000000..abdc512 --- /dev/null +++ b/src/distributed_event_factory/parser/datasource/event/duration/constant_duration_parser.py @@ -0,0 +1,11 @@ +from src.distributed_event_factory.parser.parser import Parser +from src.distributed_event_factory.provider.transition.duration.duration_provider import ConstantDurationProvider + + +class ConstantDurationParser(Parser): + + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return ConstantDurationProvider(config["duration"]) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/datasource/event/duration/duration_parser.py b/src/distributed_event_factory/parser/datasource/event/duration/duration_parser.py new file mode 100644 index 0000000..79ba6bf --- /dev/null +++ b/src/distributed_event_factory/parser/datasource/event/duration/duration_parser.py @@ -0,0 +1,17 @@ +from src.distributed_event_factory.parser.parser import Parser +from src.distributed_event_factory.provider.transition.duration.duration_provider import ConstantDurationProvider + + +class DurationParser(Parser): + + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + if isinstance(config, int): + return ConstantDurationProvider(config) + return self.dependencies[config["type"]].parse(config) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/datasource/event/duration/gaussian_duration_parser.py b/src/distributed_event_factory/parser/datasource/event/duration/gaussian_duration_parser.py new file mode 100644 index 0000000..18f1c93 --- /dev/null +++ b/src/distributed_event_factory/parser/datasource/event/duration/gaussian_duration_parser.py @@ -0,0 +1,11 @@ +from src.distributed_event_factory.parser.parser import Parser +from src.distributed_event_factory.provider.transition.duration.duration_provider import GaussianDurationProvider + + +class GaussianDurationParser(Parser): + + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return GaussianDurationProvider(config["mu"], config["sigma"]) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/datasource/event/duration/uniform_duration_parser.py b/src/distributed_event_factory/parser/datasource/event/duration/uniform_duration_parser.py new file mode 100644 index 0000000..4a8ffaf --- /dev/null +++ b/src/distributed_event_factory/parser/datasource/event/duration/uniform_duration_parser.py @@ -0,0 +1,10 @@ +from src.distributed_event_factory.parser.parser import Parser +from src.distributed_event_factory.provider.transition.duration.duration_provider import UniformDurationProvider + +class UniformDurationParser(Parser): + + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return UniformDurationProvider(config["lowerBound"], config["upperBound"]) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py b/src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py new file mode 100644 index 0000000..152c2d5 --- /dev/null +++ b/src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py @@ -0,0 +1,21 @@ +from src.distributed_event_factory.parser.parser import Parser +from src.distributed_event_factory.provider.activity.activity_provider import ConstantActivityProvider +from src.distributed_event_factory.provider.event.event_provider import CustomEventDataProvider +from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import ConstantNextSensorProvider + +class EventDataListParser(Parser): + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + event_list = [] + for event in config["eventData"]: + event_list.append(CustomEventDataProvider( + duration_provider=self.dependencies["duration"].parse(event["duration"]), + activity_provider=self.dependencies["activity"].parse(event["activity"]), + transition_provider=self.dependencies["transition"].parse(event["transition"]))) + return event_list diff --git a/src/distributed_event_factory/parser/datasource/event/event_data_parser.py b/src/distributed_event_factory/parser/datasource/event/event_data_parser.py new file mode 100644 index 0000000..b31142e --- /dev/null +++ b/src/distributed_event_factory/parser/datasource/event/event_data_parser.py @@ -0,0 +1,18 @@ +from src.distributed_event_factory.parser.parser import Parser +from src.distributed_event_factory.provider.activity.activity_provider import ConstantActivityProvider +from src.distributed_event_factory.provider.event.event_data import EventData +from src.distributed_event_factory.provider.transition.duration.duration_provider import ConstantDurationProvider +from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import ConstantNextSensorProvider + + +class EventDataParser(Parser): + + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return EventData( + duration_provider=ConstantDurationProvider(config["duration"]), + activity_provider=ConstantActivityProvider(config["activity"]), + transition_provider=ConstantNextSensorProvider(config["transition"]) + ) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/datasource/event/event_selection_parser.py b/src/distributed_event_factory/parser/datasource/event/event_selection_parser.py new file mode 100644 index 0000000..820903f --- /dev/null +++ b/src/distributed_event_factory/parser/datasource/event/event_selection_parser.py @@ -0,0 +1,19 @@ +from src.distributed_event_factory.parser.parser import Parser +from src.distributed_event_factory.provider.eventselection.generic_probability_event_selection_provider import \ + GenericProbabilityEventSelectionProvider + + +class EventSelectionParser(Parser): + + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + return GenericProbabilityEventSelectionProvider( + probability_distribution=self.dependencies["distribution"].parse(config), + potential_events=self.dependencies["eventDataList"].parse(config) + ) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/datasource/event/transition/__init__.py b/src/distributed_event_factory/parser/datasource/event/transition/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/distributed_event_factory/parser/datasource/event/transition/transition_parser.py b/src/distributed_event_factory/parser/datasource/event/transition/transition_parser.py new file mode 100644 index 0000000..3e749d7 --- /dev/null +++ b/src/distributed_event_factory/parser/datasource/event/transition/transition_parser.py @@ -0,0 +1,16 @@ +from src.distributed_event_factory.parser.parser import Parser +from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import ConstantNextSensorProvider + + +class TransitionParser(Parser): + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + if isinstance(config, str): + return ConstantNextSensorProvider(config) + return self.dependencies[config["type"]].parse(config) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/kind_parser.py b/src/distributed_event_factory/parser/kind_parser.py new file mode 100644 index 0000000..2c845bc --- /dev/null +++ b/src/distributed_event_factory/parser/kind_parser.py @@ -0,0 +1,14 @@ +from src.distributed_event_factory.parser.parser import Parser + + +class KindParser(Parser): + + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + return self.dependencies[config["kind"]].parse(config["spec"]) diff --git a/src/distributed_event_factory/parser/parser.py b/src/distributed_event_factory/parser/parser.py new file mode 100644 index 0000000..81ff9ae --- /dev/null +++ b/src/distributed_event_factory/parser/parser.py @@ -0,0 +1,12 @@ +from abc import ABC, abstractmethod + + +class Parser(ABC): + + @abstractmethod + def add_dependency(self, key: str, dependency): + pass + + @abstractmethod + def parse(self, config): + pass \ No newline at end of file diff --git a/src/distributed_event_factory/parser/parser_registry.py b/src/distributed_event_factory/parser/parser_registry.py new file mode 100644 index 0000000..b367784 --- /dev/null +++ b/src/distributed_event_factory/parser/parser_registry.py @@ -0,0 +1,99 @@ +from src.distributed_event_factory.parser.datasource.event.activity.activity_parser import ActivityParser +from src.distributed_event_factory.parser.datasource.event.duration.constant_duration_parser import \ + ConstantDurationParser +from src.distributed_event_factory.parser.datasource.event.duration.duration_parser import DurationParser +from src.distributed_event_factory.parser.datasource.event.duration.gaussian_duration_parser import \ + GaussianDurationParser +from src.distributed_event_factory.parser.datasource.event.duration.uniform_duration_parser import \ + UniformDurationParser +from src.distributed_event_factory.parser.datasource.event.transition.transition_parser import TransitionParser +from src.distributed_event_factory.parser.simulation.case.case_id_parser import CaseIdParser +from src.distributed_event_factory.parser.datasource.data_source_parser import DataSourceParser +from src.distributed_event_factory.parser.datasource.event.distribution_parser import DistributionParser +from src.distributed_event_factory.parser.datasource.event.event_data_list_parser import EventDataListParser +from src.distributed_event_factory.parser.datasource.event.event_data_parser import EventDataParser +from src.distributed_event_factory.parser.datasource.event.event_selection_parser import EventSelectionParser +from src.distributed_event_factory.parser.kind_parser import KindParser +from src.distributed_event_factory.parser.simulation.load.constant_load_parser import ConstantLoadParser +from src.distributed_event_factory.parser.simulation.load.gradual_load_parser import GradualLoadParser +from src.distributed_event_factory.parser.simulation.load.load_parser import LoadParser +from src.distributed_event_factory.parser.simulation.simulation_parser import SimulationParser +from src.distributed_event_factory.parser.sink.print_console_sink_parser import PrintConsoleSinkParser +from src.distributed_event_factory.parser.sink.sink_parser import SinkParser +from src.distributed_event_factory.parser.sink.ui_sink_parser import UiSinkParser +from src.distributed_event_factory.provider.data.case_provider import IncreasingCaseIdProvider + + +class ParserRegistry: + + def __init__(self): + # Sinks + self.console_sink_parser = (PrintConsoleSinkParser()) + self.ui_sink_parser = (UiSinkParser()) + self.sink_parser = (SinkParser() + .add_dependency("console", self.console_sink_parser) + .add_dependency("ui", self.ui_sink_parser)) + + ########## + # Event Data + self.event_data_parser = EventDataParser() + + # Activity + self.activity_parser = ActivityParser() + + # Duration + self.constant_duration_parser = ConstantDurationParser() + self.uniform_duration_parser = UniformDurationParser() + self.gaussian_duration_parser = GaussianDurationParser() + self.duration_parser = (DurationParser() + .add_dependency("constant", self.constant_duration_parser) + .add_dependency("uniform", self.uniform_duration_parser) + .add_dependency("gaussian", self.gaussian_duration_parser)) + + # Transition + self.transition_parser = TransitionParser() + + + # Event Data List + self.event_data_list_parser = (EventDataListParser() + .add_dependency("duration", self.duration_parser) + .add_dependency("activity", self.activity_parser) + .add_dependency("transition", self.transition_parser) + .add_dependency("eventData", self.event_data_parser)) + + # Distribution + self.distribution_parser = (DistributionParser()) + + # Event Selection + self.event_selection_parser = (EventSelectionParser() + .add_dependency("distribution", self.distribution_parser) + .add_dependency("eventDataList", self.event_data_list_parser)) + + # DataSource + self.datasource_parser = (DataSourceParser() + .add_dependency("eventData", self.event_selection_parser)) + + ########## + # Case + self.increasing_case_id_parser = IncreasingCaseIdProvider() + self.case_id_parser: CaseIdParser = (CaseIdParser() + .add_dependency("increasing", self.increasing_case_id_parser)) + + # Load + self.constant_load_parser = ConstantLoadParser() + self.gradual_load_parser = GradualLoadParser() + self.gaussian_load_parser = GradualLoadParser() + self.load_parser: LoadParser = (LoadParser() + .add_dependency("constant", self.constant_load_parser) + .add_dependency("gradual", self.gradual_load_parser)) + + # Simulation + self.simulation_parser: SimulationParser = (SimulationParser() + .add_dependency("load", self.load_parser) + .add_dependency("caseId", self.case_id_parser)) + + # Kind + self.kind_parser: KindParser = (KindParser() + .add_dependency("sink", self.sink_parser) + .add_dependency("datasource", self.datasource_parser) + .add_dependency("simulation", self.simulation_parser)) diff --git a/src/distributed_event_factory/parser/simulation/__init__.py b/src/distributed_event_factory/parser/simulation/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/distributed_event_factory/parser/simulation/case/__init__.py b/src/distributed_event_factory/parser/simulation/case/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/distributed_event_factory/parser/simulation/case/case_id_parser.py b/src/distributed_event_factory/parser/simulation/case/case_id_parser.py new file mode 100644 index 0000000..6672adc --- /dev/null +++ b/src/distributed_event_factory/parser/simulation/case/case_id_parser.py @@ -0,0 +1,13 @@ +from src.distributed_event_factory.parser.parser import Parser + + +class CaseIdParser(Parser): + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + return self.dependencies[config] \ No newline at end of file diff --git a/src/distributed_event_factory/parser/simulation/case/increasing_case_id_parser.py b/src/distributed_event_factory/parser/simulation/case/increasing_case_id_parser.py new file mode 100644 index 0000000..aec99d0 --- /dev/null +++ b/src/distributed_event_factory/parser/simulation/case/increasing_case_id_parser.py @@ -0,0 +1,11 @@ +from src.distributed_event_factory.parser.parser import Parser +from src.distributed_event_factory.provider.data.case_provider import IncreasingCaseIdProvider + + +class IncreasingCaseIdParser(Parser): + + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return IncreasingCaseIdProvider() \ No newline at end of file diff --git a/src/distributed_event_factory/parser/simulation/load/__init__.py b/src/distributed_event_factory/parser/simulation/load/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/distributed_event_factory/parser/simulation/load/constant_load_parser.py b/src/distributed_event_factory/parser/simulation/load/constant_load_parser.py new file mode 100644 index 0000000..537a7f8 --- /dev/null +++ b/src/distributed_event_factory/parser/simulation/load/constant_load_parser.py @@ -0,0 +1,11 @@ +from src.distributed_event_factory.parser.parser import Parser +from src.distributed_event_factory.provider.load.load_provider import ConstantLoadProvider + + +class ConstantLoadParser(Parser): + + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return ConstantLoadProvider(config["load"]) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/simulation/load/gradual_load_parser.py b/src/distributed_event_factory/parser/simulation/load/gradual_load_parser.py new file mode 100644 index 0000000..accd774 --- /dev/null +++ b/src/distributed_event_factory/parser/simulation/load/gradual_load_parser.py @@ -0,0 +1,11 @@ +from src.distributed_event_factory.parser.parser import Parser +from src.distributed_event_factory.provider.load.load_provider import GradualIncreasingLoadProvider + + +class GradualLoadParser(Parser): + + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return GradualIncreasingLoadProvider(config["tickCount"], config["minimalLoad"], config["load"]) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/simulation/load/load_parser.py b/src/distributed_event_factory/parser/simulation/load/load_parser.py new file mode 100644 index 0000000..b908b71 --- /dev/null +++ b/src/distributed_event_factory/parser/simulation/load/load_parser.py @@ -0,0 +1,15 @@ +from src.distributed_event_factory.parser.parser import Parser + + +class LoadParser(Parser): + + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + return self.dependencies[config["loadBehavior"]].parse(config) + diff --git a/src/distributed_event_factory/parser/simulation/simulation_parser.py b/src/distributed_event_factory/parser/simulation/simulation_parser.py new file mode 100644 index 0000000..9a48137 --- /dev/null +++ b/src/distributed_event_factory/parser/simulation/simulation_parser.py @@ -0,0 +1,17 @@ +from src.distributed_event_factory.simulation.new_simulation import NewSimulation + +class SimulationParser: + + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + return NewSimulation( + load_provider=self.dependencies["load"].parse(config["load"]), + time_frame_duration=config["timeFrameDuration"], + case_id_provider=self.dependencies["caseId"].parse(config["caseId"]), + ) diff --git a/src/distributed_event_factory/parser/sink/__init__.py b/src/distributed_event_factory/parser/sink/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/distributed_event_factory/parser/sink/print_console_sink_parser.py b/src/distributed_event_factory/parser/sink/print_console_sink_parser.py new file mode 100644 index 0000000..395aa1e --- /dev/null +++ b/src/distributed_event_factory/parser/sink/print_console_sink_parser.py @@ -0,0 +1,10 @@ +from src.distributed_event_factory.parser.parser import Parser +from src.distributed_event_factory.provider.sink.console.console_sink import PrintConsole + + +class PrintConsoleSinkParser(Parser): + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return PrintConsole(config["id"], config["dataSourceRefs"]) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/sink/sink_parser.py b/src/distributed_event_factory/parser/sink/sink_parser.py new file mode 100644 index 0000000..b0ed585 --- /dev/null +++ b/src/distributed_event_factory/parser/sink/sink_parser.py @@ -0,0 +1,13 @@ +from src.distributed_event_factory.parser.parser import Parser + +class SinkParser(Parser): + + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + return self.dependencies[config["type"]].parse(config) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/sink/ui_sink_parser.py b/src/distributed_event_factory/parser/sink/ui_sink_parser.py new file mode 100644 index 0000000..364cf08 --- /dev/null +++ b/src/distributed_event_factory/parser/sink/ui_sink_parser.py @@ -0,0 +1,10 @@ +from src.distributed_event_factory.parser.parser import Parser +from src.distributed_event_factory.provider.sink.ui.terminal_ui_sink import UiSink + + +class UiSinkParser(Parser): + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return UiSink(config["id"], config["dataSourceRefs"]) \ No newline at end of file diff --git a/src/distributed_event_factory/provider/activity/activity_provider.py b/src/distributed_event_factory/provider/activity/activity_provider.py index 2d545d3..cd0627d 100644 --- a/src/distributed_event_factory/provider/activity/activity_provider.py +++ b/src/distributed_event_factory/provider/activity/activity_provider.py @@ -8,7 +8,7 @@ def get_activity(self): pass -class DistinctActivityProvider(ActivityProvider): +class ConstantActivityProvider(ActivityProvider): def __init__(self, activity_name): self.activity_name = activity_name diff --git a/src/distributed_event_factory/provider/data/case_provider.py b/src/distributed_event_factory/provider/data/case_provider.py index c6d8375..88d5463 100644 --- a/src/distributed_event_factory/provider/data/case_provider.py +++ b/src/distributed_event_factory/provider/data/case_provider.py @@ -1,4 +1,5 @@ import abc +from random import random class CaseIdProvider: @@ -22,4 +23,4 @@ def __init__(self): def get(self): self.current_case_id += 1 - return "case " + str(self.current_case_id) + return f"case_{int(random()*1000000000)}_{str(self.current_case_id)}" diff --git a/src/distributed_event_factory/provider/datasource/data_source_registry.py b/src/distributed_event_factory/provider/datasource/data_source_registry.py index c72e5c8..7547639 100644 --- a/src/distributed_event_factory/provider/datasource/data_source_registry.py +++ b/src/distributed_event_factory/provider/datasource/data_source_registry.py @@ -21,7 +21,7 @@ def get(self, data_source_definitions: List[str], default_sink: SinkProvider): sensor_id = definition["name"] data_sources.append( GenericDataSource( - sensor_id=DataSourceId(sensor_id), + data_source_id=DataSourceId(sensor_id), group_id=definition.get("groupId", "default group"), event_provider=EventSelectionProviderRegistry().get(config=definition["eventGeneration"]), sink=self.get_sink(definition, sensor_id, default_sink) diff --git a/src/distributed_event_factory/provider/datasource/sensor_topology_builder.py b/src/distributed_event_factory/provider/datasource/sensor_topology_builder.py new file mode 100644 index 0000000..09297e2 --- /dev/null +++ b/src/distributed_event_factory/provider/datasource/sensor_topology_builder.py @@ -0,0 +1,15 @@ +from typing import List + +from src.distributed_event_factory.core.datasource import DataSource +from src.distributed_event_factory.provider.datasource.sensor_topology import ConcreteDataSourceTopologyProvider + +class SensorTopologyBuilder: + + def __init__(self): + self.datasources: List[DataSource] = [] + + def add_datasource(self, datasource: DataSource): + self.datasources.append(datasource) + + def build(self): + return ConcreteDataSourceTopologyProvider(data_source_list=self.datasources) \ No newline at end of file diff --git a/src/distributed_event_factory/provider/datasource/sensor_topology_registry.py b/src/distributed_event_factory/provider/datasource/sensor_topology_registry.py index e5d23a6..636c54f 100644 --- a/src/distributed_event_factory/provider/datasource/sensor_topology_registry.py +++ b/src/distributed_event_factory/provider/datasource/sensor_topology_registry.py @@ -3,14 +3,15 @@ ConcreteDataSourceTopologyProvider from src.distributed_event_factory.provider.sink.sink_provider_registry import SinkProviderRegistry - class DataSourceProviderRegistry: def get(self, config) -> DataSourceTopologyProvider: registry = dict() registry["concrete"] = lambda config: ConcreteDataSourceTopologyProvider( - data_source_list=DataSourceRegistry().get(data_source_definitions=config["dataSources"], default_sink=SinkProviderRegistry().get(config=config["defaultSink"])) + data_source_list=DataSourceRegistry().get( + data_source_definitions=config["dataSources"], + default_sink=SinkProviderRegistry().get(config=config["defaultSink"]) + ) ) return registry["concrete"](config) - diff --git a/src/distributed_event_factory/provider/event/event_provider.py b/src/distributed_event_factory/provider/event/event_provider.py index d43d3e1..6418d81 100644 --- a/src/distributed_event_factory/provider/event/event_provider.py +++ b/src/distributed_event_factory/provider/event/event_provider.py @@ -1,14 +1,14 @@ from abc import ABC, abstractmethod from typing import List -from src.distributed_event_factory.provider.activity.activity_provider import DistinctActivityProvider +from src.distributed_event_factory.provider.activity.activity_provider import ConstantActivityProvider, ActivityProvider from src.distributed_event_factory.provider.activity.selection.activity_selection_provider import \ ActivitySelectionProvider from src.distributed_event_factory.provider.event.event_data import EventData from src.distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider, \ - StaticDurationProvider + ConstantDurationProvider from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, \ - DistinctNextSensorProvider + ConstantNextSensorProvider, AbstractNextSensorProvider class EventDataProvider(ABC): @@ -32,8 +32,8 @@ class CustomEventDataProvider(EventDataProvider): def __init__( self, duration_provider: DurationProvider, - activity_provider: ActivitySelectionProvider, - transition_provider: NextSensorProvider + activity_provider: ActivityProvider, + transition_provider: AbstractNextSensorProvider ): self.duration_provider = duration_provider self.activity_provider = activity_provider @@ -47,7 +47,7 @@ def get_event_data(self): ) def get_activity(self): - return self.activity_provider.emit_activity() + return self.activity_provider.get_activity() def get_duration(self): return self.duration_provider.get_duration() @@ -58,18 +58,21 @@ def get_next_sensor(self): class StartEventProvider(EventDataProvider): + def __init__(self, transtition_provider): + self.transtition_provider = transtition_provider + def get_event_data(self): return EventData( - StaticDurationProvider(0), - DistinctActivityProvider("start"), - DistinctNextSensorProvider(0), + ConstantDurationProvider(0), + ConstantActivityProvider("start"), + self.transtition_provider ) class EndEventProvider(EventDataProvider): def get_event_data(self): return EventData( - StaticDurationProvider(0), - DistinctActivityProvider("end"), - DistinctNextSensorProvider(0), + ConstantDurationProvider(0), + ConstantActivityProvider("end"), + ConstantNextSensorProvider(0), ) diff --git a/src/distributed_event_factory/provider/event/event_provider_registry.py b/src/distributed_event_factory/provider/event/event_provider_registry.py index b858c00..2aa7886 100644 --- a/src/distributed_event_factory/provider/event/event_provider_registry.py +++ b/src/distributed_event_factory/provider/event/event_provider_registry.py @@ -19,6 +19,4 @@ def get(self, config) -> EventDataProvider: .get_activity_provider(), )) - - return registry["classic"](config) diff --git a/src/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py b/src/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py index 528516d..44e01fb 100644 --- a/src/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py +++ b/src/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py @@ -5,12 +5,11 @@ from src.distributed_event_factory.provider.event.event_provider import EventDataProvider from src.distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider - class GenericProbabilityEventSelectionProvider(EventSelectionProvider): def __init__(self, probability_distribution: List[float], potential_events: List[EventDataProvider]): - self.potential_events = potential_events self.probability_distribution = probability_distribution + self.potential_events = potential_events def get_event_data(self): index = random.choice(len(self.potential_events), p=self.probability_distribution) diff --git a/src/distributed_event_factory/provider/sink/console/console_sink.py b/src/distributed_event_factory/provider/sink/console/console_sink.py index d15a202..bed080f 100644 --- a/src/distributed_event_factory/provider/sink/console/console_sink.py +++ b/src/distributed_event_factory/provider/sink/console/console_sink.py @@ -1,17 +1,22 @@ -from src.distributed_event_factory.core.event import AbstractEvent +from src.distributed_event_factory.core.event import AbstractEvent, Event from src.distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider class PrintConsole(Sink): - def __init__(self, id): + def __init__(self, id, data_source_ref): self.id = id + self.data_source_ref = data_source_ref - def send(self, event: AbstractEvent) -> None: - print("Sensor " + self.id + ": " + str(event)) + def send(self, event: Event) -> None: + print("Sensor " + event.node + ": " + str(event)) + def start_timeframe(self): + pass + + def end_timeframe(self): + pass class PrintConsoleSinkProvider(SinkProvider): def get_sender(self, id) -> Sink: return PrintConsole(id) - diff --git a/src/distributed_event_factory/provider/sink/http/__init__.py b/src/distributed_event_factory/provider/sink/http/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/distributed_event_factory/provider/sink/http/http_sink.py b/src/distributed_event_factory/provider/sink/http/http_sink.py new file mode 100644 index 0000000..022e638 --- /dev/null +++ b/src/distributed_event_factory/provider/sink/http/http_sink.py @@ -0,0 +1,50 @@ +import json +from queue import Queue + +from src.distributed_event_factory.core.event import AbstractEvent +from src.distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider +import requests + +class TimeFrame: + def __init__(self, duration): + self.duration = duration + self.events = [] + + def add_event(self, event): + self.events.append(event) + + def toJson(self): + return json.dumps( + self, + default=lambda o: o.__dict__, + sort_keys=True, + indent=4) + +class HttpSink(Sink): + + def __init__(self, url, frame_duration): + self.url = url + self.frame_duration = frame_duration + + def start_timeframe(self): + self.timeframe = TimeFrame(duration=self.frame_duration) + + def add_event(self, event): + self.timeframe.add_event(event) + + def end_timeframe(self): + requests.post( + url=self.url + "/register", + data=self.timeframe.toJson(), + headers={'Content-Type': 'application/json'} + ) + + def start(self): + requests.post(url=self.url + "/start") + + def send(self, event: AbstractEvent) -> None: + self.timeframe.add_event(event) + +class HttpSinkProvider(SinkProvider): + def get_sender(self, id) -> Sink: + return HttpSink() \ No newline at end of file diff --git a/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py b/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py index c8b4118..a93a9f6 100644 --- a/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py +++ b/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py @@ -1,6 +1,8 @@ import json import string +from scheduled_futures import ScheduledThreadPoolExecutor + from src.distributed_event_factory.core.event import AbstractEvent from src.distributed_event_factory.provider.sink.kafka.partition.partition_provider import PartitionProvider from src.distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider @@ -18,14 +20,23 @@ def __init__(self, bootstrap_server_url: string, client_id: string, topic: strin ) self.topic = topic self.partition_provider = partition_provider + self.executor = ScheduledThreadPoolExecutor() + + def kSend(self, event): + self.producer.send( + self.topic, + value=json.dumps(event.__dict__), + key=event.get_case(), + partition=self.partition_provider.get_partition(event)) def send(self, event: AbstractEvent) -> None: + #self.executor.submit(lambda: self.kSend(event)) self.producer.send( self.topic, value=json.dumps(event.__dict__), key=event.get_case(), - partition=self.partition_provider.get_partition(event) - ).add_callback(lambda record_metadata: print(record_metadata)) + partition=self.partition_provider.get_partition(event)) + #.add_callback(lambda record_metadata: print(record_metadata))) class KafkaSinkProvider(SinkProvider): diff --git a/src/distributed_event_factory/provider/sink/newsink/__init__.py b/src/distributed_event_factory/provider/sink/newsink/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/distributed_event_factory/provider/sink/newsink/newsink.py b/src/distributed_event_factory/provider/sink/newsink/newsink.py new file mode 100644 index 0000000..75b58ed --- /dev/null +++ b/src/distributed_event_factory/provider/sink/newsink/newsink.py @@ -0,0 +1,54 @@ +import copy +import time +from copy import deepcopy +from queue import Queue +from threading import Thread, Lock + +from scheduled_futures import ScheduledThreadPoolExecutor +from src.distributed_event_factory.provider.sink.http.http_sink import TimeFrame + +class NewSink: + + def begin_timeframe(self, duration: int): + pass + + def add_event(self, event): + pass + + def end_timeframe(self): + pass + + def start(self): + pass + +class ConsoleNewSink(NewSink): + + def __init__(self): + self.queue: Queue = Queue() + + def begin_timeframe(self, duration: int): + self.time_frame = TimeFrame(duration) + + def add_event(self, event): + self.time_frame.add_event(event) + + def end_timeframe(self): + self.queue.put(self.time_frame) + + def print(self, data): + print(data) + + def start(self): + with ScheduledThreadPoolExecutor() as executor: + while True: + events = self.queue.get().events + event_iterator = iter(events) + events_length = len(events) + duration = self.time_frame.duration + if events_length != 0: + scheduler = executor.schedule( + lambda: self.print(next(event_iterator)), + period=duration / events_length + ) + time.sleep(duration) + scheduler.cancel() diff --git a/src/distributed_event_factory/provider/sink/newsink/sinkqueue.py b/src/distributed_event_factory/provider/sink/newsink/sinkqueue.py new file mode 100644 index 0000000..c4b23f2 --- /dev/null +++ b/src/distributed_event_factory/provider/sink/newsink/sinkqueue.py @@ -0,0 +1,20 @@ +from queue import Queue + +from src.distributed_event_factory.provider.sink.http.http_sink import TimeFrame + + +class SinkQueue: + def __init__(self): + self.queue: Queue = Queue() + + def begin_timeframe(self, duration: int): + self.timeframe = TimeFrame(duration=1000) + + def add_event(self, event): + self.timeframe.add_event(event) + + def end_timeframe(self): + self.queue.put(self.timeframe) + + def get(self): + return self.queue.get() diff --git a/src/distributed_event_factory/provider/sink/sink_provider_registry.py b/src/distributed_event_factory/provider/sink/sink_provider_registry.py index dcb5395..316ef2f 100644 --- a/src/distributed_event_factory/provider/sink/sink_provider_registry.py +++ b/src/distributed_event_factory/provider/sink/sink_provider_registry.py @@ -1,10 +1,10 @@ from src.distributed_event_factory.provider.sink.console.console_sink import PrintConsoleSinkProvider +from src.distributed_event_factory.provider.sink.http.http_sink import HttpSink, HttpSinkProvider from src.distributed_event_factory.provider.sink.kafka.kafka_sink import KafkaSinkProvider from src.distributed_event_factory.provider.sink.kafka.kafka_validation_sink import KafkaValidationSinkProvider from src.distributed_event_factory.provider.sink.kafka.partition.partition_registry import PartitionProviderRegistry from src.distributed_event_factory.provider.sink.sink_provider import SinkProvider - class SinkProviderRegistry: def get_ui(self): @@ -27,5 +27,8 @@ def get(self, config) -> SinkProvider: ) registry["ui"] = lambda config: self.get_ui() registry["console"] = lambda config: PrintConsoleSinkProvider() + registry["console"] = lambda config: PrintConsoleSinkProvider() + registry["http"] = lambda config: HttpSinkProvider() + #registry["custom"] lambda config: CustomReceiver() return registry[config["type"]](config) \ No newline at end of file diff --git a/src/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py b/src/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py index 0a9a26b..e359889 100644 --- a/src/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py +++ b/src/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py @@ -2,7 +2,6 @@ from src.distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider from src.distributed_event_factory.view.terminal import Terminal - class TerminalGui(Sink): def __init__(self, terminal): self.terminal: Terminal = terminal @@ -10,9 +9,16 @@ def __init__(self, terminal): def send(self, event: AbstractEvent): self.terminal.print(event) +class UiSink(Sink): + def __init__(self, id, data_source_ref): + self.ui = Terminal(title=id, start_position=0) + self.data_source_ref = data_source_ref -class TerminalGuiSinkProvider(SinkProvider): + def send(self, event: AbstractEvent) -> None: + self.ui.print(event) + +class TerminalGuiSinkProvider(SinkProvider): def __init__(self): self.i = -1 diff --git a/src/distributed_event_factory/provider/transition/duration/duration_provider.py b/src/distributed_event_factory/provider/transition/duration/duration_provider.py index f94305a..67315bd 100644 --- a/src/distributed_event_factory/provider/transition/duration/duration_provider.py +++ b/src/distributed_event_factory/provider/transition/duration/duration_provider.py @@ -18,7 +18,7 @@ def get_duration(self): return random.uniform(self.lower_border, self.upper_border) -class StaticDurationProvider(DurationProvider): +class ConstantDurationProvider(DurationProvider): def __init__(self, duration): self.duration = duration diff --git a/src/distributed_event_factory/provider/transition/duration/duration_registry.py b/src/distributed_event_factory/provider/transition/duration/duration_registry.py index ea2d5c4..61470cf 100644 --- a/src/distributed_event_factory/provider/transition/duration/duration_registry.py +++ b/src/distributed_event_factory/provider/transition/duration/duration_registry.py @@ -1,15 +1,15 @@ -from src.distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider, StaticDurationProvider, \ +from src.distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider, ConstantDurationProvider, \ UniformDurationProvider, GaussianDurationProvider class DurationProviderRegistry(DurationProvider): def get(self, config) -> DurationProvider: registry = dict() - registry["static"] = lambda config: StaticDurationProvider(config["duration"]) + registry["static"] = lambda config: ConstantDurationProvider(config["duration"]) registry["uniform"] = lambda config: UniformDurationProvider(config["lowerBound"], config["upperBound"]) registry["gaussian"] = lambda config: GaussianDurationProvider(config["mu"], config["sigma"]) if type(config) is int: - return StaticDurationProvider(config) + return ConstantDurationProvider(config) return registry[config["type"]](config) diff --git a/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider.py b/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider.py index 25c630d..63e9c48 100644 --- a/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider.py +++ b/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider.py @@ -27,7 +27,7 @@ def get(self, probability_distribution) -> NextSensorProvider: return NextSensorProvider(distribution) -class DistinctNextSensorProvider(AbstractNextSensorProvider): +class ConstantNextSensorProvider(AbstractNextSensorProvider): def __init__(self, next_sensor_index): self.next_sensor_index = next_sensor_index diff --git a/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider_registry.py b/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider_registry.py index 6cf6c03..a97159b 100644 --- a/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider_registry.py +++ b/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider_registry.py @@ -1,4 +1,4 @@ -from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, DistinctNextSensorProvider +from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, ConstantNextSensorProvider class NextSensorProviderRegistry: @@ -6,9 +6,9 @@ def get(self, config): registry = dict() registry["classic"] = lambda config: NextSensorProvider(config["transition"]) - registry["next_sensor"] = lambda config: DistinctNextSensorProvider(config["index"]) + registry["next_sensor"] = lambda config: ConstantNextSensorProvider(config["index"]) if type(config) is int: - return DistinctNextSensorProvider(config) + return ConstantNextSensorProvider(config) return registry[config["type"]](config) \ No newline at end of file diff --git a/src/distributed_event_factory/simulation/distributed_event_factory.py b/src/distributed_event_factory/simulation/distributed_event_factory.py index 8a5094a..374c4c2 100644 --- a/src/distributed_event_factory/simulation/distributed_event_factory.py +++ b/src/distributed_event_factory/simulation/distributed_event_factory.py @@ -3,21 +3,33 @@ from src.distributed_event_factory.provider.provider_registry import ProviderRegistry from src.distributed_event_factory.simulation.simulation import Simulation - class DistributedEventFactory: - def __init__(self, configuration_file): - self.configuration_file = configuration_file + def __init__( + self, + number_of_data_sources_provider, + case_id_provider, + event_loop, + data_source_topology_provider + ): + self.simulation = Simulation( + number_of_data_sources_provider=number_of_data_sources_provider, + event_loop=event_loop, + case_id_provider=case_id_provider, + data_source_topology_provider=data_source_topology_provider + ) - def start(self): - with open(self.configuration_file) as file: + @classmethod + def from_config_file(cls, configuration_file): + with open(configuration_file) as file: configuration = yaml.safe_load(file) registry = ProviderRegistry(configuration) - - simulation = Simulation( + return cls( number_of_data_sources_provider=registry.get("numberOfDataSources"), case_id_provider=registry.get("caseId"), event_loop=registry.get("eventLoop"), data_source_topology_provider=registry.get("dataSourceTopology"), ) - simulation.start() + + def start(self): + self.simulation.start() diff --git a/src/distributed_event_factory/simulation/eventloop/event_loop.py b/src/distributed_event_factory/simulation/eventloop/event_loop.py index 71d1f69..2aeb728 100644 --- a/src/distributed_event_factory/simulation/eventloop/event_loop.py +++ b/src/distributed_event_factory/simulation/eventloop/event_loop.py @@ -1,32 +1,37 @@ from abc import abstractmethod, ABC import time - from scheduled_futures import ScheduledThreadPoolExecutor +from src.distributed_event_factory.provider.sink.http.http_sink import TimeFrame, HttpSink -class EventLoop(ABC): +class EventLoop(ABC): @abstractmethod def run(self, process_simulator): pass - def get_number_of_generated_events(self): - pass - class DebugEventLoop(EventLoop): - - def __init__(self): - self.tick_count = 0 - def run(self, process_simulator): while True: - self.tick_count += 1 process_simulator.simulate() - def get_number_of_generated_events(self): - return self.tick_count +class AsyncEventLoop(EventLoop): + def __init__(self, load_provider, time_frame_duration): + self.load_provider = load_provider + self.time_frame_duration = time_frame_duration + self.sink = HttpSink() + + def run(self, process_simulator): + while True: + self.sink.begin_timeframe(self.time_frame_duration) + event_count = self.load_provider.get_load_value() + for i in range(event_count): + self.sink.add_event(process_simulator.simulate()) + self.sink.end_timeframe() + + class LoadEventLoop(EventLoop): def __init__(self, load_provider): @@ -36,12 +41,9 @@ def run(self, process_simulator): with ScheduledThreadPoolExecutor() as executor: while True: scheduler = executor.schedule( - process_simulator.simulate, + lambda: process_simulator.simulate()(), period=1/self.load_provider.get_load_value() ) time.sleep(1) scheduler.cancel() - def get_number_of_generated_events(self): - pass - diff --git a/src/distributed_event_factory/simulation/new_process_simulation.py b/src/distributed_event_factory/simulation/new_process_simulation.py new file mode 100644 index 0000000..58df115 --- /dev/null +++ b/src/distributed_event_factory/simulation/new_process_simulation.py @@ -0,0 +1,82 @@ +import random +import string +from datetime import datetime, timedelta +from typing import List, Dict + +from src.distributed_event_factory.core.datasource import DataSource +from src.distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID, DataSourceId +from src.distributed_event_factory.core.event import Event +from src.distributed_event_factory.provider.data.case_provider import CaseIdProvider + +class NewProcessSimulator: + def __init__( + self, + data_sources: Dict[str, DataSource], + case_id_provider: CaseIdProvider): + + self.tokens: List[Token] = [] + self.datasources: Dict[str, DataSource] = data_sources + self.case_id_provider = case_id_provider + self.last_timestamp = datetime.now() + + def simulate(self) -> Event: + if not self.tokens: + token = self.start_new_case() + else: + token = self.tokens[int(random.uniform(0, len(self.tokens)))] + + if token.data_source_id == END_DATA_SOURCE_ID: + self.tokens.remove(token) + token = self.start_new_case() + + if token.data_source_id == START_SENSOR_ID: + token.data_source_id = DataSourceId(self._get_sensor_with_id(START_SENSOR_ID).get_event_data().get_next_sensor()) + + current_data_source = self._get_sensor_with_id(token.data_source_id) + event = current_data_source.get_event_data() + next_datasource = event.get_next_sensor() + activity = event.get_activity() + token.add_to_last_timestamp(event.get_duration()) + token.set_data_source_id(self.datasources[next_datasource].get_id()) + self.last_timestamp = token.last_timestamp + return self._build_event(token.case, activity, self.last_timestamp, current_data_source) + + def start_new_case(self): + case_id = self.case_id_provider.get() + token = Token(case_id, START_SENSOR_ID, self.last_timestamp) + self.tokens.append(token) + return token + + def _build_event(self, case, activity, timestamp, datasource): + if hasattr(datasource, "sensor_id"): + return Event( + timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), + sensor_value=activity, + case_id=case, + sensor_name=datasource.sensor_id.get_name(), + group_id=datasource.group_id + ) + + def _get_sensor_with_id(self, data_source_id) -> DataSource: + for sensor in self.datasources: + if self.datasources[sensor].get_id() == data_source_id: + return self.datasources[sensor] + raise ValueError("Sensor not found") + + +class Token: + def __init__( + self, + case: string, + data_source_id: DataSourceId, + last_timestamp: datetime + ): + self.case = case + self.data_source_id = data_source_id + self.last_timestamp = last_timestamp + + def set_data_source_id(self, data_source_id): + self.data_source_id = data_source_id + + def add_to_last_timestamp(self, duration): + self.last_timestamp += timedelta(minutes=duration) diff --git a/src/distributed_event_factory/simulation/new_simulation.py b/src/distributed_event_factory/simulation/new_simulation.py new file mode 100644 index 0000000..9b042fb --- /dev/null +++ b/src/distributed_event_factory/simulation/new_simulation.py @@ -0,0 +1,51 @@ +import time + +from scheduled_futures import ScheduledThreadPoolExecutor +from src.distributed_event_factory.provider.data.case_provider import CaseIdProvider +from src.distributed_event_factory.provider.load.load_provider import LoadProvider +from src.distributed_event_factory.simulation.new_process_simulation import NewProcessSimulator + +class NewSimulation: + def send_event(self, event): + self.sinks[event.node].send(event) + + def __init__( + self, + load_provider: LoadProvider, + time_frame_duration: int, + case_id_provider: CaseIdProvider, + ): + self.case_id_provider = case_id_provider + self.load_provider = load_provider + self.time_frame_duration = time_frame_duration + self.sinks = dict() + + def start(self): + for sink in self.sinks: + self.sinks[sink].start_timeframe() + + def end(self): + for sink in self.sinks: + self.sinks[sink].end_timeframe() + + def send_event(self, event): + self.sinks[event.node].send(event) + + def run_simulation(self, datasources, sinks): + for sink in sinks: + for data_source in sinks[sink].data_source_ref: + self.sinks[data_source] = sinks[sink] + process_simulator = NewProcessSimulator( + case_id_provider=self.case_id_provider, + data_sources=datasources + ) + while True: + with ScheduledThreadPoolExecutor() as executor: + #self.start() + scheduler = executor.schedule( + lambda: self.send_event(process_simulator.simulate()), + period=1/self.load_provider.get_load_value() + ) + time.sleep(1) + #self.end() + scheduler.cancel() diff --git a/src/distributed_event_factory/simulation/new_simulation2.py b/src/distributed_event_factory/simulation/new_simulation2.py new file mode 100644 index 0000000..b3cd828 --- /dev/null +++ b/src/distributed_event_factory/simulation/new_simulation2.py @@ -0,0 +1,48 @@ +from typing import Dict +from src.distributed_event_factory.core.datasource import DataSource +from src.distributed_event_factory.provider.data.case_provider import CaseIdProvider +from src.distributed_event_factory.provider.load.load_provider import LoadProvider +from src.distributed_event_factory.provider.sink.sink_provider import Sink +from src.distributed_event_factory.simulation.new_process_simulation import NewProcessSimulator + + +class NewSimulation2: + def __init__( + self, + load_provider: LoadProvider, + time_frame_duration: int, + case_id_provider: CaseIdProvider, + sinks: Dict[str, Sink], + data_sources: Dict[str, DataSource], + ): + self.case_id_provider = case_id_provider + self.data_sources = data_sources + self.sinks = sinks + self.load_provider = load_provider + self.time_frame_duration = time_frame_duration + + def send_event(self, event): + self.sinks[event.node].send(event) + + def start(self): + for sink in self.sinks: + self.sinks[sink].start_timeframe() + + def end(self): + for sink in self.sinks: + self.sinks[sink].end_timeframe() + + def send_event(self, event): + if event: + self.sinks[event.node].send(event) + + def run_simulation(self): + process_simulator = NewProcessSimulator( + case_id_provider=self.case_id_provider, + data_sources=self.data_sources + ) + while True: + self.start() + for i in range(self.load_provider.get_load_value()): + self.send_event(process_simulator.simulate()), + self.end() diff --git a/src/distributed_event_factory/simulation/process_simulator.py b/src/distributed_event_factory/simulation/process_simulator.py index 7d03dac..1dbb4b6 100644 --- a/src/distributed_event_factory/simulation/process_simulator.py +++ b/src/distributed_event_factory/simulation/process_simulator.py @@ -5,9 +5,9 @@ from src.distributed_event_factory.core.datasource import DataSource from src.distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID, DataSourceId +from src.distributed_event_factory.core.event import Event from src.distributed_event_factory.provider.data.case_provider import CaseIdProvider - class ProcessSimulator: def __init__( self, @@ -17,8 +17,9 @@ def __init__( self.sensors: List[DataSource] = data_sources self.case_id_provider = case_id_provider self.last_time = datetime.now() + self.i = 0 - def simulate(self): + def simulate(self) -> Event: if not self.tokens: case_id = self.case_id_provider.get() self.tokens.append(Token(case_id, START_SENSOR_ID, self.last_time)) @@ -26,17 +27,20 @@ def simulate(self): token = self.tokens[int(random.uniform(0, len(self.tokens)))] current_data_source = self._get_sensor_with_id(token.data_source_id) event = current_data_source.get_event_provider().get_event_data() + next_datasource = event.get_next_sensor() if token.data_source_id == END_DATA_SOURCE_ID: - current_data_source.emit_event(token.case, event.get_activity(), token.last_timestamp) + event=current_data_source.emit_event(token.case, event.get_activity(), token.last_timestamp) self.tokens.remove(token) + return event else: activity = event.get_activity() token.add_to_last_timestamp(duration=event.get_duration()) last_timestamp = token.last_timestamp - current_data_source.emit_event(token.case, activity, last_timestamp) + event = current_data_source.emit_event(token.case, activity, last_timestamp) self.last_time = last_timestamp - token.set_data_source_id(self.sensors[event.get_next_sensor() + 1].get_id()) + token.set_data_source_id(self.sensors[next_datasource + 1].get_id()) + return event def _get_sensor_with_id(self, sensor_id) -> DataSource: for sensor in self.sensors: diff --git a/src/distributed_event_factory/simulation/simulation.py b/src/distributed_event_factory/simulation/simulation.py index 16df695..465dfcc 100644 --- a/src/distributed_event_factory/simulation/simulation.py +++ b/src/distributed_event_factory/simulation/simulation.py @@ -29,5 +29,4 @@ def start(self): try: self.event_loop.run(process_simulator) except KeyboardInterrupt: - print(self.event_loop.get_number_of_generated_events()) print("Simulation ended by user") \ No newline at end of file diff --git a/src/distributed_event_factory/view/terminal.py b/src/distributed_event_factory/view/terminal.py index 9b83bf0..a156b40 100644 --- a/src/distributed_event_factory/view/terminal.py +++ b/src/distributed_event_factory/view/terminal.py @@ -24,7 +24,7 @@ def run(self): self.root.protocol("WM_DELETE_WINDOW", self.close) self.root.title(self.title) self.root.geometry("600x400") - self.root.geometry(f"+{50 +((self.start_position % 3)*700)}+{int(self.start_position / 3) * 500}") + self.root.geometry(f"+{50 +((self.start_position % 3)*900)}+{int(self.start_position / 3) * 500}") self.scrolled_text = ScrolledText(self.root) self.scrolled_text.pack() self.root.mainloop() From 6e75dcfce368f199b793a2eb1af54df3d235d90b Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Sun, 13 Oct 2024 18:02:47 +0200 Subject: [PATCH 010/124] add interface to extend the parser registry --- pyproject.toml | 2 +- .../parser/parser_registry.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a7ef18f..0912ebb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "distributed-event-factory" -version = "0.2.0.dev1" +version = "0.2.0.dev2" authors = [ { name="Hendrik Reiter", email="hendrik.reiter@email.uni-kiel.de" }, ] diff --git a/src/distributed_event_factory/parser/parser_registry.py b/src/distributed_event_factory/parser/parser_registry.py index b367784..f717aab 100644 --- a/src/distributed_event_factory/parser/parser_registry.py +++ b/src/distributed_event_factory/parser/parser_registry.py @@ -97,3 +97,18 @@ def __init__(self): .add_dependency("sink", self.sink_parser) .add_dependency("datasource", self.datasource_parser) .add_dependency("simulation", self.simulation_parser)) + + def add_load_parser(self, key: str, parser: LoadParser): + self.load_parser.add_dependency(key, parser) + + def add_case_id_parser(self, key: str, parser: CaseIdParser): + self.case_id_parser.add_dependency(key, parser) + + def add_transition_parser(self, key: str, parser: TransitionParser): + self.transition_parser.add_dependency(key, parser) + + def add_activity_parser(self, key: str, parser: ActivityParser): + self.activity_parser.add_dependency(key, parser) + + def add_sink_parser(self, key: str, parser: SinkParser): + self.sink_parser.add_dependency(key, parser) From 814e8e23cec2b6670d3698b19e33c6f6b598821b Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Sun, 13 Oct 2024 18:08:44 +0200 Subject: [PATCH 011/124] add interface to extend the parser registry --- pyproject.toml | 2 +- .../event_factory.py | 21 +++++++++++++++++++ .../parser/parser_registry.py | 14 ------------- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 0912ebb..ae744aa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "distributed-event-factory" -version = "0.2.0.dev2" +version = "0.2.0.dev3" authors = [ { name="Hendrik Reiter", email="hendrik.reiter@email.uni-kiel.de" }, ] diff --git a/src/distributed_event_factory/event_factory.py b/src/distributed_event_factory/event_factory.py index b566c37..14e400d 100644 --- a/src/distributed_event_factory/event_factory.py +++ b/src/distributed_event_factory/event_factory.py @@ -1,8 +1,14 @@ import os import yaml +from src.distributed_event_factory.parser.datasource.event.activity.activity_parser import ActivityParser +from src.distributed_event_factory.parser.datasource.event.transition.transition_parser import TransitionParser from src.distributed_event_factory.parser.parser_registry import ParserRegistry from src.distributed_event_factory.core.datasource import EndDataSource +from src.distributed_event_factory.parser.simulation.case.case_id_parser import CaseIdParser +from src.distributed_event_factory.parser.simulation.load.load_parser import LoadParser +from src.distributed_event_factory.parser.sink.sink_parser import SinkParser + class EventFactory: def __init__(self): @@ -12,6 +18,21 @@ def __init__(self): self.datasources[""] = EndDataSource() self.parser = ParserRegistry() + def add_load_parser(self, key: str, parser: LoadParser): + self.parser.load_parser.add_dependency(key, parser) + + def add_case_id_parser(self, key: str, parser: CaseIdParser): + self.parser.case_id_parser.add_dependency(key, parser) + + def add_transition_parser(self, key: str, parser: TransitionParser): + self.parser.transition_parser.add_dependency(key, parser) + + def add_activity_parser(self, key: str, parser: ActivityParser): + self.parser.activity_parser.add_dependency(key, parser) + + def add_sink_parser(self, key: str, parser: SinkParser): + self.parser.sink_parser.add_dependency(key, parser) + def run(self, directory): for filename in os.listdir(directory): with open(directory + "/" + filename) as file: diff --git a/src/distributed_event_factory/parser/parser_registry.py b/src/distributed_event_factory/parser/parser_registry.py index f717aab..a202f89 100644 --- a/src/distributed_event_factory/parser/parser_registry.py +++ b/src/distributed_event_factory/parser/parser_registry.py @@ -98,17 +98,3 @@ def __init__(self): .add_dependency("datasource", self.datasource_parser) .add_dependency("simulation", self.simulation_parser)) - def add_load_parser(self, key: str, parser: LoadParser): - self.load_parser.add_dependency(key, parser) - - def add_case_id_parser(self, key: str, parser: CaseIdParser): - self.case_id_parser.add_dependency(key, parser) - - def add_transition_parser(self, key: str, parser: TransitionParser): - self.transition_parser.add_dependency(key, parser) - - def add_activity_parser(self, key: str, parser: ActivityParser): - self.activity_parser.add_dependency(key, parser) - - def add_sink_parser(self, key: str, parser: SinkParser): - self.sink_parser.add_dependency(key, parser) From d4808bd10acb3f1a0f54d5de1f6f3567f7bdc949 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Sun, 13 Oct 2024 19:24:19 +0200 Subject: [PATCH 012/124] change project structure --- .idea/distributed-event-factory.iml | 1 + README.md | 2 +- pyproject.toml | 7 +++- src/__init__.py | 0 .../experiment/new_simulation-experiment.py | 6 +-- .../core/datasource.py | 12 +++--- src/distributed_event_factory/core/event.py | 2 +- .../event_factory.py | 14 +++---- src/distributed_event_factory/main.py | 6 +-- .../parser/datasource/data_source_parser.py | 7 ++-- .../event/activity/activity_parser.py | 6 +-- .../datasource/event/distribution_parser.py | 2 +- .../duration/constant_duration_parser.py | 4 +- .../event/duration/duration_parser.py | 4 +- .../duration/gaussian_duration_parser.py | 4 +- .../event/duration/uniform_duration_parser.py | 4 +- .../event/event_data_list_parser.py | 8 ++-- .../datasource/event/event_data_parser.py | 10 ++--- .../event/event_selection_parser.py | 4 +- .../event/transition/transition_parser.py | 4 +- .../parser/kind_parser.py | 2 +- .../parser/parser_registry.py | 42 +++++++++---------- .../parser/simulation/case/case_id_parser.py | 2 +- .../case/increasing_case_id_parser.py | 4 +- .../simulation/load/constant_load_parser.py | 4 +- .../simulation/load/gradual_load_parser.py | 4 +- .../parser/simulation/load/load_parser.py | 2 +- .../parser/simulation/simulation_parser.py | 2 +- .../parser/sink/print_console_sink_parser.py | 4 +- .../parser/sink/sink_parser.py | 2 +- .../parser/sink/ui_sink_parser.py | 4 +- .../activity_generation_provider.py | 2 +- .../activity_generation_registry.py | 4 +- .../activity_selection_provider_registry.py | 10 ++--- .../ordered/ordered_selection_provider.py | 6 +-- .../single/single_selection_provider.py | 4 +- .../uniform/uniform_selection_provider.py | 6 +-- .../datasource/data_source_registry.py | 10 ++--- .../datasource/datasource_id_provider.py | 2 +- .../provider/datasource/sensor_topology.py | 8 ++-- .../datasource/sensor_topology_builder.py | 4 +- .../datasource/sensor_topology_registry.py | 6 +-- .../provider/event/event_data.py | 6 +-- .../provider/event/event_provider.py | 10 ++--- .../provider/event/event_provider_registry.py | 8 ++-- .../event_selection_provider_registry.py | 12 +++--- ...ic_probability_event_selection_provider.py | 4 +- .../ordered_selection_provider.py | 4 +- .../uniform_selction_provider.py | 4 +- .../generic/count_provider_registry.py | 2 +- .../provider/load/load_provider_registry.py | 2 +- .../provider/provider_registry.py | 12 +++--- .../provider/sink/console/console_sink.py | 4 +- .../provider/sink/http/http_sink.py | 4 +- .../provider/sink/kafka/kafka_sink.py | 6 +-- .../sink/kafka/kafka_validation_sink.py | 6 +-- .../kafka/partition/partition_provider.py | 2 +- .../kafka/partition/partition_registry.py | 2 +- .../provider/sink/newsink/newsink.py | 2 +- .../provider/sink/newsink/sinkqueue.py | 2 +- .../provider/sink/sink_provider.py | 2 +- .../provider/sink/sink_provider_registry.py | 14 +++---- .../provider/sink/ui/terminal_ui_sink.py | 6 +-- .../transition/duration/duration_registry.py | 2 +- .../next_sensor_provider_registry.py | 2 +- .../transition_matrix_creation_strategy.py | 6 +-- .../transition/transition_provider_factory.py | 4 +- .../simulation/distributed_event_factory.py | 4 +- .../simulation/eventloop/event_loop.py | 2 +- .../eventloop/event_loop_registry.py | 4 +- .../simulation/new_process_simulation.py | 8 ++-- .../simulation/new_simulation.py | 6 +-- .../simulation/new_simulation2.py | 10 ++--- .../simulation/process_simulator.py | 8 ++-- .../simulation/simulation.py | 10 ++--- 75 files changed, 212 insertions(+), 209 deletions(-) delete mode 100644 src/__init__.py diff --git a/.idea/distributed-event-factory.iml b/.idea/distributed-event-factory.iml index ac1f89c..9e2328d 100644 --- a/.idea/distributed-event-factory.iml +++ b/.idea/distributed-event-factory.iml @@ -2,6 +2,7 @@ + diff --git a/README.md b/README.md index d08d468..f5f5132 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,7 @@ pip install -r requirements.txt Define the `Distribted Event Factory` and specify a config file like mentioned above. ```python -from src.simulation.distributed_event_factory import DistributedEventFactory +from simulation.distributed_event_factory import DistributedEventFactory config_file = "src/distributed_event_factory/config/assembly_line.yml" DistributedEventFactory(config_file).start() diff --git a/pyproject.toml b/pyproject.toml index ae744aa..4bd0185 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "distributed-event-factory" -version = "0.2.0.dev3" +version = "0.2.0.dev5" authors = [ { name="Hendrik Reiter", email="hendrik.reiter@email.uni-kiel.de" }, ] @@ -17,4 +17,7 @@ Homepage = "https://github.com/cau-se/DistributedEventFactory" [build-system] requires = ["hatchling"] -build-backend = "hatchling.build" \ No newline at end of file +build-backend = "hatchling.build" + +[tool.hatch.build.targets.wheel.force-include] +"src" = "src" \ No newline at end of file diff --git a/src/__init__.py b/src/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/distributed_event_factory/config/experiment/new_simulation-experiment.py b/src/distributed_event_factory/config/experiment/new_simulation-experiment.py index ba5cfbb..ca6aeb1 100644 --- a/src/distributed_event_factory/config/experiment/new_simulation-experiment.py +++ b/src/distributed_event_factory/config/experiment/new_simulation-experiment.py @@ -2,9 +2,9 @@ import yaml -from src.distributed_event_factory.parser.simulation.load.gradual_load_parser import GradualLoadParser -from src.distributed_event_factory.parser.parser_registry import ParserRegistry -from src.distributed_event_factory.core.datasource import EndDataSource +from distributed_event_factory.parser.simulation.load.gradual_load_parser import GradualLoadParser +from distributed_event_factory.parser.parser_registry import ParserRegistry +from distributed_event_factory.core.datasource import EndDataSource if __name__ == '__main__': sinks = dict() diff --git a/src/distributed_event_factory/core/datasource.py b/src/distributed_event_factory/core/datasource.py index 055971f..c34078c 100644 --- a/src/distributed_event_factory/core/datasource.py +++ b/src/distributed_event_factory/core/datasource.py @@ -1,13 +1,13 @@ from abc import abstractmethod, ABC from typing import List -from src.distributed_event_factory.core.datasource_id import DataSourceId, START_SENSOR_ID, END_DATA_SOURCE_ID -from src.distributed_event_factory.core.event import AbstractEvent, StartEvent, EndEvent, Event -from src.distributed_event_factory.provider.event.event_data import EventData -from src.distributed_event_factory.provider.event.event_provider import EventDataProvider, EndEventProvider, \ +from distributed_event_factory.core.datasource_id import DataSourceId, START_SENSOR_ID, END_DATA_SOURCE_ID +from distributed_event_factory.core.event import AbstractEvent, StartEvent, EndEvent, Event +from distributed_event_factory.provider.event.event_data import EventData +from distributed_event_factory.provider.event.event_provider import EventDataProvider, EndEventProvider, \ StartEventProvider -from src.distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider -from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, \ +from distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider +from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, \ AbstractNextSensorProvider diff --git a/src/distributed_event_factory/core/event.py b/src/distributed_event_factory/core/event.py index 8998877..37c61fd 100644 --- a/src/distributed_event_factory/core/event.py +++ b/src/distributed_event_factory/core/event.py @@ -1,6 +1,6 @@ from abc import abstractmethod, ABC -from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, \ +from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, \ AbstractNextSensorProvider diff --git a/src/distributed_event_factory/event_factory.py b/src/distributed_event_factory/event_factory.py index 14e400d..8843de3 100644 --- a/src/distributed_event_factory/event_factory.py +++ b/src/distributed_event_factory/event_factory.py @@ -1,13 +1,13 @@ import os import yaml -from src.distributed_event_factory.parser.datasource.event.activity.activity_parser import ActivityParser -from src.distributed_event_factory.parser.datasource.event.transition.transition_parser import TransitionParser -from src.distributed_event_factory.parser.parser_registry import ParserRegistry -from src.distributed_event_factory.core.datasource import EndDataSource -from src.distributed_event_factory.parser.simulation.case.case_id_parser import CaseIdParser -from src.distributed_event_factory.parser.simulation.load.load_parser import LoadParser -from src.distributed_event_factory.parser.sink.sink_parser import SinkParser +from distributed_event_factory.parser.datasource.event.activity.activity_parser import ActivityParser +from distributed_event_factory.parser.datasource.event.transition.transition_parser import TransitionParser +from distributed_event_factory.parser.parser_registry import ParserRegistry +from distributed_event_factory.core.datasource import EndDataSource +from distributed_event_factory.parser.simulation.case.case_id_parser import CaseIdParser +from distributed_event_factory.parser.simulation.load.load_parser import LoadParser +from distributed_event_factory.parser.sink.sink_parser import SinkParser class EventFactory: diff --git a/src/distributed_event_factory/main.py b/src/distributed_event_factory/main.py index 6848a05..6ca1c25 100644 --- a/src/distributed_event_factory/main.py +++ b/src/distributed_event_factory/main.py @@ -1,6 +1,6 @@ -from src.distributed_event_factory.event_factory import EventFactory -from src.distributed_event_factory.parser.parser import Parser -from src.distributed_event_factory.provider.load.load_provider import LoadProvider +from distributed_event_factory.event_factory import EventFactory +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.load.load_provider import LoadProvider import math class SinusLoadProvider(LoadProvider): diff --git a/src/distributed_event_factory/parser/datasource/data_source_parser.py b/src/distributed_event_factory/parser/datasource/data_source_parser.py index af71c60..fd624d6 100644 --- a/src/distributed_event_factory/parser/datasource/data_source_parser.py +++ b/src/distributed_event_factory/parser/datasource/data_source_parser.py @@ -1,7 +1,6 @@ -from src.distributed_event_factory.parser.parser import Parser -from src.distributed_event_factory.core.datasource import GenericDataSource -from src.distributed_event_factory.core.datasource_id import DataSourceId - +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.core.datasource import GenericDataSource +from distributed_event_factory.core.datasource_id import DataSourceId class DataSourceParser(Parser): diff --git a/src/distributed_event_factory/parser/datasource/event/activity/activity_parser.py b/src/distributed_event_factory/parser/datasource/event/activity/activity_parser.py index 846e3e1..de352ab 100644 --- a/src/distributed_event_factory/parser/datasource/event/activity/activity_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/activity/activity_parser.py @@ -1,6 +1,6 @@ -from src.distributed_event_factory.parser.parser import Parser -from src.distributed_event_factory.provider.activity.activity_provider import ConstantActivityProvider -from src.distributed_event_factory.provider.transition.duration.duration_provider import ConstantDurationProvider +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.activity.activity_provider import ConstantActivityProvider +from distributed_event_factory.provider.transition.duration.duration_provider import ConstantDurationProvider class ActivityParser(Parser): diff --git a/src/distributed_event_factory/parser/datasource/event/distribution_parser.py b/src/distributed_event_factory/parser/datasource/event/distribution_parser.py index 5c4c86f..122c233 100644 --- a/src/distributed_event_factory/parser/datasource/event/distribution_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/distribution_parser.py @@ -1,4 +1,4 @@ -from src.distributed_event_factory.parser.parser import Parser +from distributed_event_factory.parser.parser import Parser class DistributionParser(Parser): diff --git a/src/distributed_event_factory/parser/datasource/event/duration/constant_duration_parser.py b/src/distributed_event_factory/parser/datasource/event/duration/constant_duration_parser.py index abdc512..8a7402d 100644 --- a/src/distributed_event_factory/parser/datasource/event/duration/constant_duration_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/duration/constant_duration_parser.py @@ -1,5 +1,5 @@ -from src.distributed_event_factory.parser.parser import Parser -from src.distributed_event_factory.provider.transition.duration.duration_provider import ConstantDurationProvider +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.transition.duration.duration_provider import ConstantDurationProvider class ConstantDurationParser(Parser): diff --git a/src/distributed_event_factory/parser/datasource/event/duration/duration_parser.py b/src/distributed_event_factory/parser/datasource/event/duration/duration_parser.py index 79ba6bf..fb44785 100644 --- a/src/distributed_event_factory/parser/datasource/event/duration/duration_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/duration/duration_parser.py @@ -1,5 +1,5 @@ -from src.distributed_event_factory.parser.parser import Parser -from src.distributed_event_factory.provider.transition.duration.duration_provider import ConstantDurationProvider +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.transition.duration.duration_provider import ConstantDurationProvider class DurationParser(Parser): diff --git a/src/distributed_event_factory/parser/datasource/event/duration/gaussian_duration_parser.py b/src/distributed_event_factory/parser/datasource/event/duration/gaussian_duration_parser.py index 18f1c93..6397cab 100644 --- a/src/distributed_event_factory/parser/datasource/event/duration/gaussian_duration_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/duration/gaussian_duration_parser.py @@ -1,5 +1,5 @@ -from src.distributed_event_factory.parser.parser import Parser -from src.distributed_event_factory.provider.transition.duration.duration_provider import GaussianDurationProvider +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.transition.duration.duration_provider import GaussianDurationProvider class GaussianDurationParser(Parser): diff --git a/src/distributed_event_factory/parser/datasource/event/duration/uniform_duration_parser.py b/src/distributed_event_factory/parser/datasource/event/duration/uniform_duration_parser.py index 4a8ffaf..447ec7d 100644 --- a/src/distributed_event_factory/parser/datasource/event/duration/uniform_duration_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/duration/uniform_duration_parser.py @@ -1,5 +1,5 @@ -from src.distributed_event_factory.parser.parser import Parser -from src.distributed_event_factory.provider.transition.duration.duration_provider import UniformDurationProvider +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.transition.duration.duration_provider import UniformDurationProvider class UniformDurationParser(Parser): diff --git a/src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py b/src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py index 152c2d5..5d4bb9c 100644 --- a/src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py @@ -1,7 +1,7 @@ -from src.distributed_event_factory.parser.parser import Parser -from src.distributed_event_factory.provider.activity.activity_provider import ConstantActivityProvider -from src.distributed_event_factory.provider.event.event_provider import CustomEventDataProvider -from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import ConstantNextSensorProvider +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.activity.activity_provider import ConstantActivityProvider +from distributed_event_factory.provider.event.event_provider import CustomEventDataProvider +from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import ConstantNextSensorProvider class EventDataListParser(Parser): def __init__(self): diff --git a/src/distributed_event_factory/parser/datasource/event/event_data_parser.py b/src/distributed_event_factory/parser/datasource/event/event_data_parser.py index b31142e..573b9d0 100644 --- a/src/distributed_event_factory/parser/datasource/event/event_data_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/event_data_parser.py @@ -1,8 +1,8 @@ -from src.distributed_event_factory.parser.parser import Parser -from src.distributed_event_factory.provider.activity.activity_provider import ConstantActivityProvider -from src.distributed_event_factory.provider.event.event_data import EventData -from src.distributed_event_factory.provider.transition.duration.duration_provider import ConstantDurationProvider -from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import ConstantNextSensorProvider +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.activity.activity_provider import ConstantActivityProvider +from distributed_event_factory.provider.event.event_data import EventData +from distributed_event_factory.provider.transition.duration.duration_provider import ConstantDurationProvider +from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import ConstantNextSensorProvider class EventDataParser(Parser): diff --git a/src/distributed_event_factory/parser/datasource/event/event_selection_parser.py b/src/distributed_event_factory/parser/datasource/event/event_selection_parser.py index 820903f..537bdeb 100644 --- a/src/distributed_event_factory/parser/datasource/event/event_selection_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/event_selection_parser.py @@ -1,5 +1,5 @@ -from src.distributed_event_factory.parser.parser import Parser -from src.distributed_event_factory.provider.eventselection.generic_probability_event_selection_provider import \ +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.eventselection.generic_probability_event_selection_provider import \ GenericProbabilityEventSelectionProvider diff --git a/src/distributed_event_factory/parser/datasource/event/transition/transition_parser.py b/src/distributed_event_factory/parser/datasource/event/transition/transition_parser.py index 3e749d7..5666025 100644 --- a/src/distributed_event_factory/parser/datasource/event/transition/transition_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/transition/transition_parser.py @@ -1,5 +1,5 @@ -from src.distributed_event_factory.parser.parser import Parser -from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import ConstantNextSensorProvider +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import ConstantNextSensorProvider class TransitionParser(Parser): diff --git a/src/distributed_event_factory/parser/kind_parser.py b/src/distributed_event_factory/parser/kind_parser.py index 2c845bc..9ff3090 100644 --- a/src/distributed_event_factory/parser/kind_parser.py +++ b/src/distributed_event_factory/parser/kind_parser.py @@ -1,4 +1,4 @@ -from src.distributed_event_factory.parser.parser import Parser +from distributed_event_factory.parser.parser import Parser class KindParser(Parser): diff --git a/src/distributed_event_factory/parser/parser_registry.py b/src/distributed_event_factory/parser/parser_registry.py index a202f89..9c59e81 100644 --- a/src/distributed_event_factory/parser/parser_registry.py +++ b/src/distributed_event_factory/parser/parser_registry.py @@ -1,27 +1,27 @@ -from src.distributed_event_factory.parser.datasource.event.activity.activity_parser import ActivityParser -from src.distributed_event_factory.parser.datasource.event.duration.constant_duration_parser import \ +from distributed_event_factory.parser.datasource.event.activity.activity_parser import ActivityParser +from distributed_event_factory.parser.datasource.event.duration.constant_duration_parser import \ ConstantDurationParser -from src.distributed_event_factory.parser.datasource.event.duration.duration_parser import DurationParser -from src.distributed_event_factory.parser.datasource.event.duration.gaussian_duration_parser import \ +from distributed_event_factory.parser.datasource.event.duration.duration_parser import DurationParser +from distributed_event_factory.parser.datasource.event.duration.gaussian_duration_parser import \ GaussianDurationParser -from src.distributed_event_factory.parser.datasource.event.duration.uniform_duration_parser import \ +from distributed_event_factory.parser.datasource.event.duration.uniform_duration_parser import \ UniformDurationParser -from src.distributed_event_factory.parser.datasource.event.transition.transition_parser import TransitionParser -from src.distributed_event_factory.parser.simulation.case.case_id_parser import CaseIdParser -from src.distributed_event_factory.parser.datasource.data_source_parser import DataSourceParser -from src.distributed_event_factory.parser.datasource.event.distribution_parser import DistributionParser -from src.distributed_event_factory.parser.datasource.event.event_data_list_parser import EventDataListParser -from src.distributed_event_factory.parser.datasource.event.event_data_parser import EventDataParser -from src.distributed_event_factory.parser.datasource.event.event_selection_parser import EventSelectionParser -from src.distributed_event_factory.parser.kind_parser import KindParser -from src.distributed_event_factory.parser.simulation.load.constant_load_parser import ConstantLoadParser -from src.distributed_event_factory.parser.simulation.load.gradual_load_parser import GradualLoadParser -from src.distributed_event_factory.parser.simulation.load.load_parser import LoadParser -from src.distributed_event_factory.parser.simulation.simulation_parser import SimulationParser -from src.distributed_event_factory.parser.sink.print_console_sink_parser import PrintConsoleSinkParser -from src.distributed_event_factory.parser.sink.sink_parser import SinkParser -from src.distributed_event_factory.parser.sink.ui_sink_parser import UiSinkParser -from src.distributed_event_factory.provider.data.case_provider import IncreasingCaseIdProvider +from distributed_event_factory.parser.datasource.event.transition.transition_parser import TransitionParser +from distributed_event_factory.parser.simulation.case.case_id_parser import CaseIdParser +from distributed_event_factory.parser.datasource.data_source_parser import DataSourceParser +from distributed_event_factory.parser.datasource.event.distribution_parser import DistributionParser +from distributed_event_factory.parser.datasource.event.event_data_list_parser import EventDataListParser +from distributed_event_factory.parser.datasource.event.event_data_parser import EventDataParser +from distributed_event_factory.parser.datasource.event.event_selection_parser import EventSelectionParser +from distributed_event_factory.parser.kind_parser import KindParser +from distributed_event_factory.parser.simulation.load.constant_load_parser import ConstantLoadParser +from distributed_event_factory.parser.simulation.load.gradual_load_parser import GradualLoadParser +from distributed_event_factory.parser.simulation.load.load_parser import LoadParser +from distributed_event_factory.parser.simulation.simulation_parser import SimulationParser +from distributed_event_factory.parser.sink.print_console_sink_parser import PrintConsoleSinkParser +from distributed_event_factory.parser.sink.sink_parser import SinkParser +from distributed_event_factory.parser.sink.ui_sink_parser import UiSinkParser +from distributed_event_factory.provider.data.case_provider import IncreasingCaseIdProvider class ParserRegistry: diff --git a/src/distributed_event_factory/parser/simulation/case/case_id_parser.py b/src/distributed_event_factory/parser/simulation/case/case_id_parser.py index 6672adc..7cb84a7 100644 --- a/src/distributed_event_factory/parser/simulation/case/case_id_parser.py +++ b/src/distributed_event_factory/parser/simulation/case/case_id_parser.py @@ -1,4 +1,4 @@ -from src.distributed_event_factory.parser.parser import Parser +from distributed_event_factory.parser.parser import Parser class CaseIdParser(Parser): diff --git a/src/distributed_event_factory/parser/simulation/case/increasing_case_id_parser.py b/src/distributed_event_factory/parser/simulation/case/increasing_case_id_parser.py index aec99d0..34a1cca 100644 --- a/src/distributed_event_factory/parser/simulation/case/increasing_case_id_parser.py +++ b/src/distributed_event_factory/parser/simulation/case/increasing_case_id_parser.py @@ -1,5 +1,5 @@ -from src.distributed_event_factory.parser.parser import Parser -from src.distributed_event_factory.provider.data.case_provider import IncreasingCaseIdProvider +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.data.case_provider import IncreasingCaseIdProvider class IncreasingCaseIdParser(Parser): diff --git a/src/distributed_event_factory/parser/simulation/load/constant_load_parser.py b/src/distributed_event_factory/parser/simulation/load/constant_load_parser.py index 537a7f8..6a65257 100644 --- a/src/distributed_event_factory/parser/simulation/load/constant_load_parser.py +++ b/src/distributed_event_factory/parser/simulation/load/constant_load_parser.py @@ -1,5 +1,5 @@ -from src.distributed_event_factory.parser.parser import Parser -from src.distributed_event_factory.provider.load.load_provider import ConstantLoadProvider +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.load.load_provider import ConstantLoadProvider class ConstantLoadParser(Parser): diff --git a/src/distributed_event_factory/parser/simulation/load/gradual_load_parser.py b/src/distributed_event_factory/parser/simulation/load/gradual_load_parser.py index accd774..8206685 100644 --- a/src/distributed_event_factory/parser/simulation/load/gradual_load_parser.py +++ b/src/distributed_event_factory/parser/simulation/load/gradual_load_parser.py @@ -1,5 +1,5 @@ -from src.distributed_event_factory.parser.parser import Parser -from src.distributed_event_factory.provider.load.load_provider import GradualIncreasingLoadProvider +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.load.load_provider import GradualIncreasingLoadProvider class GradualLoadParser(Parser): diff --git a/src/distributed_event_factory/parser/simulation/load/load_parser.py b/src/distributed_event_factory/parser/simulation/load/load_parser.py index b908b71..11cb8a2 100644 --- a/src/distributed_event_factory/parser/simulation/load/load_parser.py +++ b/src/distributed_event_factory/parser/simulation/load/load_parser.py @@ -1,4 +1,4 @@ -from src.distributed_event_factory.parser.parser import Parser +from distributed_event_factory.parser.parser import Parser class LoadParser(Parser): diff --git a/src/distributed_event_factory/parser/simulation/simulation_parser.py b/src/distributed_event_factory/parser/simulation/simulation_parser.py index 9a48137..fa0c0d7 100644 --- a/src/distributed_event_factory/parser/simulation/simulation_parser.py +++ b/src/distributed_event_factory/parser/simulation/simulation_parser.py @@ -1,4 +1,4 @@ -from src.distributed_event_factory.simulation.new_simulation import NewSimulation +from distributed_event_factory.simulation.new_simulation import NewSimulation class SimulationParser: diff --git a/src/distributed_event_factory/parser/sink/print_console_sink_parser.py b/src/distributed_event_factory/parser/sink/print_console_sink_parser.py index 395aa1e..17dfae2 100644 --- a/src/distributed_event_factory/parser/sink/print_console_sink_parser.py +++ b/src/distributed_event_factory/parser/sink/print_console_sink_parser.py @@ -1,5 +1,5 @@ -from src.distributed_event_factory.parser.parser import Parser -from src.distributed_event_factory.provider.sink.console.console_sink import PrintConsole +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.sink.console.console_sink import PrintConsole class PrintConsoleSinkParser(Parser): diff --git a/src/distributed_event_factory/parser/sink/sink_parser.py b/src/distributed_event_factory/parser/sink/sink_parser.py index b0ed585..12978fd 100644 --- a/src/distributed_event_factory/parser/sink/sink_parser.py +++ b/src/distributed_event_factory/parser/sink/sink_parser.py @@ -1,4 +1,4 @@ -from src.distributed_event_factory.parser.parser import Parser +from distributed_event_factory.parser.parser import Parser class SinkParser(Parser): diff --git a/src/distributed_event_factory/parser/sink/ui_sink_parser.py b/src/distributed_event_factory/parser/sink/ui_sink_parser.py index 364cf08..eace1ef 100644 --- a/src/distributed_event_factory/parser/sink/ui_sink_parser.py +++ b/src/distributed_event_factory/parser/sink/ui_sink_parser.py @@ -1,5 +1,5 @@ -from src.distributed_event_factory.parser.parser import Parser -from src.distributed_event_factory.provider.sink.ui.terminal_ui_sink import UiSink +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.sink.ui.terminal_ui_sink import UiSink class UiSinkParser(Parser): diff --git a/src/distributed_event_factory/provider/activity/generation/activity_generation_provider.py b/src/distributed_event_factory/provider/activity/generation/activity_generation_provider.py index 2910715..a324687 100644 --- a/src/distributed_event_factory/provider/activity/generation/activity_generation_provider.py +++ b/src/distributed_event_factory/provider/activity/generation/activity_generation_provider.py @@ -2,7 +2,7 @@ from string import ascii_uppercase as alphabet from typing import List -from src.distributed_event_factory.provider.generic.count_provider import CountProvider +from distributed_event_factory.provider.generic.count_provider import CountProvider class ActivityGenerationProvider(abc.ABC): diff --git a/src/distributed_event_factory/provider/activity/generation/activity_generation_registry.py b/src/distributed_event_factory/provider/activity/generation/activity_generation_registry.py index 6ca4af0..5b8955e 100644 --- a/src/distributed_event_factory/provider/activity/generation/activity_generation_registry.py +++ b/src/distributed_event_factory/provider/activity/generation/activity_generation_registry.py @@ -1,6 +1,6 @@ -from src.distributed_event_factory.provider.activity.generation.activity_generation_provider import \ +from distributed_event_factory.provider.activity.generation.activity_generation_provider import \ ActivityGenerationProvider, DistinctActivityGenerationProvider, ListBasedActivityGenerationProvider -from src.distributed_event_factory.provider.generic.count_provider_registry import CountProviderRegistry +from distributed_event_factory.provider.generic.count_provider_registry import CountProviderRegistry class ActivityGenerationProviderRegistry: diff --git a/src/distributed_event_factory/provider/activity/selection/activity_selection_provider_registry.py b/src/distributed_event_factory/provider/activity/selection/activity_selection_provider_registry.py index cf610a2..c625fd8 100644 --- a/src/distributed_event_factory/provider/activity/selection/activity_selection_provider_registry.py +++ b/src/distributed_event_factory/provider/activity/selection/activity_selection_provider_registry.py @@ -1,12 +1,12 @@ -from src.distributed_event_factory.provider.activity.generation.activity_generation_registry import \ +from distributed_event_factory.provider.activity.generation.activity_generation_registry import \ ActivityGenerationProviderRegistry -from src.distributed_event_factory.provider.activity.selection.activity_selection_provider import \ +from distributed_event_factory.provider.activity.selection.activity_selection_provider import \ ActivitySelectionProviderFactory -from src.distributed_event_factory.provider.activity.selection.ordered.ordered_selection_provider import \ +from distributed_event_factory.provider.activity.selection.ordered.ordered_selection_provider import \ OrderedActivitySelectionProviderFactory -from src.distributed_event_factory.provider.activity.selection.single.single_selection_provider import \ +from distributed_event_factory.provider.activity.selection.single.single_selection_provider import \ SingleActivitySelectionProviderFactory -from src.distributed_event_factory.provider.activity.selection.uniform.uniform_selection_provider import \ +from distributed_event_factory.provider.activity.selection.uniform.uniform_selection_provider import \ UniformActivitySelectionProviderFactory diff --git a/src/distributed_event_factory/provider/activity/selection/ordered/ordered_selection_provider.py b/src/distributed_event_factory/provider/activity/selection/ordered/ordered_selection_provider.py index 5fdafa1..e10f825 100644 --- a/src/distributed_event_factory/provider/activity/selection/ordered/ordered_selection_provider.py +++ b/src/distributed_event_factory/provider/activity/selection/ordered/ordered_selection_provider.py @@ -1,9 +1,9 @@ from typing import List -from src.distributed_event_factory.core.event import Activity -from src.distributed_event_factory.provider.activity.generation.activity_generation_provider import \ +from distributed_event_factory.core.event import Activity +from distributed_event_factory.provider.activity.generation.activity_generation_provider import \ ActivityGenerationProvider -from src.distributed_event_factory.provider.activity.selection.activity_selection_provider import \ +from distributed_event_factory.provider.activity.selection.activity_selection_provider import \ ActivitySelectionProviderFactory, ActivitySelectionProvider diff --git a/src/distributed_event_factory/provider/activity/selection/single/single_selection_provider.py b/src/distributed_event_factory/provider/activity/selection/single/single_selection_provider.py index 3b2e43c..cbaa5df 100644 --- a/src/distributed_event_factory/provider/activity/selection/single/single_selection_provider.py +++ b/src/distributed_event_factory/provider/activity/selection/single/single_selection_provider.py @@ -1,5 +1,5 @@ -from src.distributed_event_factory.core.event import Activity -from src.distributed_event_factory.provider.activity.selection.activity_selection_provider import \ +from distributed_event_factory.core.event import Activity +from distributed_event_factory.provider.activity.selection.activity_selection_provider import \ ActivitySelectionProviderFactory, ActivitySelectionProvider diff --git a/src/distributed_event_factory/provider/activity/selection/uniform/uniform_selection_provider.py b/src/distributed_event_factory/provider/activity/selection/uniform/uniform_selection_provider.py index b2a7801..06a9ad7 100644 --- a/src/distributed_event_factory/provider/activity/selection/uniform/uniform_selection_provider.py +++ b/src/distributed_event_factory/provider/activity/selection/uniform/uniform_selection_provider.py @@ -1,10 +1,10 @@ import random from typing import List -from src.distributed_event_factory.core.event import Activity -from src.distributed_event_factory.provider.activity.generation.activity_generation_provider import \ +from distributed_event_factory.core.event import Activity +from distributed_event_factory.provider.activity.generation.activity_generation_provider import \ ActivityGenerationProvider -from src.distributed_event_factory.provider.activity.selection.activity_selection_provider import \ +from distributed_event_factory.provider.activity.selection.activity_selection_provider import \ ActivitySelectionProviderFactory, ActivitySelectionProvider diff --git a/src/distributed_event_factory/provider/datasource/data_source_registry.py b/src/distributed_event_factory/provider/datasource/data_source_registry.py index 7547639..95cff6c 100644 --- a/src/distributed_event_factory/provider/datasource/data_source_registry.py +++ b/src/distributed_event_factory/provider/datasource/data_source_registry.py @@ -1,11 +1,11 @@ from typing import List -from src.distributed_event_factory.core.datasource import GenericDataSource -from src.distributed_event_factory.core.datasource_id import DataSourceId -from src.distributed_event_factory.provider.eventselection.event_selection_provider_registry import \ +from distributed_event_factory.core.datasource import GenericDataSource +from distributed_event_factory.core.datasource_id import DataSourceId +from distributed_event_factory.provider.eventselection.event_selection_provider_registry import \ EventSelectionProviderRegistry -from src.distributed_event_factory.provider.sink.sink_provider import SinkProvider -from src.distributed_event_factory.provider.sink.sink_provider_registry import SinkProviderRegistry +from distributed_event_factory.provider.sink.sink_provider import SinkProvider +from distributed_event_factory.provider.sink.sink_provider_registry import SinkProviderRegistry class DataSourceRegistry: diff --git a/src/distributed_event_factory/provider/datasource/datasource_id_provider.py b/src/distributed_event_factory/provider/datasource/datasource_id_provider.py index cc14152..8287167 100644 --- a/src/distributed_event_factory/provider/datasource/datasource_id_provider.py +++ b/src/distributed_event_factory/provider/datasource/datasource_id_provider.py @@ -1,6 +1,6 @@ from abc import abstractmethod, ABC -from src.distributed_event_factory.core.datasource_id import DataSourceId +from distributed_event_factory.core.datasource_id import DataSourceId class DataSourceIdProvider(ABC): diff --git a/src/distributed_event_factory/provider/datasource/sensor_topology.py b/src/distributed_event_factory/provider/datasource/sensor_topology.py index 5eefdd4..2128baa 100644 --- a/src/distributed_event_factory/provider/datasource/sensor_topology.py +++ b/src/distributed_event_factory/provider/datasource/sensor_topology.py @@ -1,10 +1,10 @@ from abc import abstractmethod from typing import List -from src.distributed_event_factory.core.datasource import DataSource, StartDataSource, EndDataSource -from src.distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID -from src.distributed_event_factory.provider.sink.console.console_sink import PrintConsoleSinkProvider -from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider +from distributed_event_factory.core.datasource import DataSource, StartDataSource, EndDataSource +from distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID +from distributed_event_factory.provider.sink.console.console_sink import PrintConsoleSinkProvider +from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider class DataSourceTopologyProvider: diff --git a/src/distributed_event_factory/provider/datasource/sensor_topology_builder.py b/src/distributed_event_factory/provider/datasource/sensor_topology_builder.py index 09297e2..2304800 100644 --- a/src/distributed_event_factory/provider/datasource/sensor_topology_builder.py +++ b/src/distributed_event_factory/provider/datasource/sensor_topology_builder.py @@ -1,7 +1,7 @@ from typing import List -from src.distributed_event_factory.core.datasource import DataSource -from src.distributed_event_factory.provider.datasource.sensor_topology import ConcreteDataSourceTopologyProvider +from distributed_event_factory.core.datasource import DataSource +from distributed_event_factory.provider.datasource.sensor_topology import ConcreteDataSourceTopologyProvider class SensorTopologyBuilder: diff --git a/src/distributed_event_factory/provider/datasource/sensor_topology_registry.py b/src/distributed_event_factory/provider/datasource/sensor_topology_registry.py index 636c54f..85038e5 100644 --- a/src/distributed_event_factory/provider/datasource/sensor_topology_registry.py +++ b/src/distributed_event_factory/provider/datasource/sensor_topology_registry.py @@ -1,7 +1,7 @@ -from src.distributed_event_factory.provider.datasource.data_source_registry import DataSourceRegistry -from src.distributed_event_factory.provider.datasource.sensor_topology import DataSourceTopologyProvider, \ +from distributed_event_factory.provider.datasource.data_source_registry import DataSourceRegistry +from distributed_event_factory.provider.datasource.sensor_topology import DataSourceTopologyProvider, \ ConcreteDataSourceTopologyProvider -from src.distributed_event_factory.provider.sink.sink_provider_registry import SinkProviderRegistry +from distributed_event_factory.provider.sink.sink_provider_registry import SinkProviderRegistry class DataSourceProviderRegistry: diff --git a/src/distributed_event_factory/provider/event/event_data.py b/src/distributed_event_factory/provider/event/event_data.py index d4e3158..22fa185 100644 --- a/src/distributed_event_factory/provider/event/event_data.py +++ b/src/distributed_event_factory/provider/event/event_data.py @@ -1,6 +1,6 @@ -from src.distributed_event_factory.provider.activity.activity_provider import ActivityProvider -from src.distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider -from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import AbstractNextSensorProvider +from distributed_event_factory.provider.activity.activity_provider import ActivityProvider +from distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider +from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import AbstractNextSensorProvider class EventData: diff --git a/src/distributed_event_factory/provider/event/event_provider.py b/src/distributed_event_factory/provider/event/event_provider.py index 6418d81..48f4046 100644 --- a/src/distributed_event_factory/provider/event/event_provider.py +++ b/src/distributed_event_factory/provider/event/event_provider.py @@ -1,13 +1,13 @@ from abc import ABC, abstractmethod from typing import List -from src.distributed_event_factory.provider.activity.activity_provider import ConstantActivityProvider, ActivityProvider -from src.distributed_event_factory.provider.activity.selection.activity_selection_provider import \ +from distributed_event_factory.provider.activity.activity_provider import ConstantActivityProvider, ActivityProvider +from distributed_event_factory.provider.activity.selection.activity_selection_provider import \ ActivitySelectionProvider -from src.distributed_event_factory.provider.event.event_data import EventData -from src.distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider, \ +from distributed_event_factory.provider.event.event_data import EventData +from distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider, \ ConstantDurationProvider -from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, \ +from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, \ ConstantNextSensorProvider, AbstractNextSensorProvider diff --git a/src/distributed_event_factory/provider/event/event_provider_registry.py b/src/distributed_event_factory/provider/event/event_provider_registry.py index 2aa7886..4fc79c2 100644 --- a/src/distributed_event_factory/provider/event/event_provider_registry.py +++ b/src/distributed_event_factory/provider/event/event_provider_registry.py @@ -1,8 +1,8 @@ -from src.distributed_event_factory.provider.activity.selection.activity_selection_provider_registry import \ +from distributed_event_factory.provider.activity.selection.activity_selection_provider_registry import \ ActivitySelectionProviderRegistry -from src.distributed_event_factory.provider.event.event_provider import EventDataProvider, CustomEventDataProvider -from src.distributed_event_factory.provider.transition.duration.duration_registry import DurationProviderRegistry -from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider_registry import \ +from distributed_event_factory.provider.event.event_provider import EventDataProvider, CustomEventDataProvider +from distributed_event_factory.provider.transition.duration.duration_registry import DurationProviderRegistry +from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider_registry import \ NextSensorProviderRegistry diff --git a/src/distributed_event_factory/provider/eventselection/event_selection_provider_registry.py b/src/distributed_event_factory/provider/eventselection/event_selection_provider_registry.py index ee92810..31dd4a2 100644 --- a/src/distributed_event_factory/provider/eventselection/event_selection_provider_registry.py +++ b/src/distributed_event_factory/provider/eventselection/event_selection_provider_registry.py @@ -1,13 +1,13 @@ from typing import List -from src.distributed_event_factory.provider.event.event_provider import EventDataProvider -from src.distributed_event_factory.provider.event.event_provider_registry import EventProviderRegistry -from src.distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider -from src.distributed_event_factory.provider.eventselection.generic_probability_event_selection_provider import \ +from distributed_event_factory.provider.event.event_provider import EventDataProvider +from distributed_event_factory.provider.event.event_provider_registry import EventProviderRegistry +from distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider +from distributed_event_factory.provider.eventselection.generic_probability_event_selection_provider import \ GenericProbabilityEventSelectionProvider -from src.distributed_event_factory.provider.eventselection.ordered_selection_provider import \ +from distributed_event_factory.provider.eventselection.ordered_selection_provider import \ OrderedEventSelectionProvider -from src.distributed_event_factory.provider.eventselection.uniform_selction_provider import \ +from distributed_event_factory.provider.eventselection.uniform_selction_provider import \ UniformEventSelectionProvider diff --git a/src/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py b/src/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py index 44e01fb..47a220b 100644 --- a/src/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py +++ b/src/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py @@ -2,8 +2,8 @@ from numpy import random -from src.distributed_event_factory.provider.event.event_provider import EventDataProvider -from src.distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider +from distributed_event_factory.provider.event.event_provider import EventDataProvider +from distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider class GenericProbabilityEventSelectionProvider(EventSelectionProvider): diff --git a/src/distributed_event_factory/provider/eventselection/ordered_selection_provider.py b/src/distributed_event_factory/provider/eventselection/ordered_selection_provider.py index 16e1de6..1d094b5 100644 --- a/src/distributed_event_factory/provider/eventselection/ordered_selection_provider.py +++ b/src/distributed_event_factory/provider/eventselection/ordered_selection_provider.py @@ -1,7 +1,7 @@ from typing import List -from src.distributed_event_factory.provider.event.event_provider import EventDataProvider -from src.distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider +from distributed_event_factory.provider.event.event_provider import EventDataProvider +from distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider class OrderedEventSelectionProvider(EventSelectionProvider): diff --git a/src/distributed_event_factory/provider/eventselection/uniform_selction_provider.py b/src/distributed_event_factory/provider/eventselection/uniform_selction_provider.py index b0ebfe4..7ac032e 100644 --- a/src/distributed_event_factory/provider/eventselection/uniform_selction_provider.py +++ b/src/distributed_event_factory/provider/eventselection/uniform_selction_provider.py @@ -1,7 +1,7 @@ from typing import List -from src.distributed_event_factory.provider.event.event_provider import EventDataProvider -from src.distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider +from distributed_event_factory.provider.event.event_provider import EventDataProvider +from distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider class UniformEventSelectionProvider(EventSelectionProvider): diff --git a/src/distributed_event_factory/provider/generic/count_provider_registry.py b/src/distributed_event_factory/provider/generic/count_provider_registry.py index 1e057ca..563292f 100644 --- a/src/distributed_event_factory/provider/generic/count_provider_registry.py +++ b/src/distributed_event_factory/provider/generic/count_provider_registry.py @@ -1,4 +1,4 @@ -from src.distributed_event_factory.provider.generic.count_provider import CountProvider, StaticCountProvider, \ +from distributed_event_factory.provider.generic.count_provider import CountProvider, StaticCountProvider, \ UniformCountProvider diff --git a/src/distributed_event_factory/provider/load/load_provider_registry.py b/src/distributed_event_factory/provider/load/load_provider_registry.py index 07823bd..41305e1 100644 --- a/src/distributed_event_factory/provider/load/load_provider_registry.py +++ b/src/distributed_event_factory/provider/load/load_provider_registry.py @@ -1,4 +1,4 @@ -from src.distributed_event_factory.provider.load.load_provider import LoadProvider, ConstantLoadProvider, \ +from distributed_event_factory.provider.load.load_provider import LoadProvider, ConstantLoadProvider, \ GradualIncreasingLoadProvider diff --git a/src/distributed_event_factory/provider/provider_registry.py b/src/distributed_event_factory/provider/provider_registry.py index 5b2da75..9338809 100644 --- a/src/distributed_event_factory/provider/provider_registry.py +++ b/src/distributed_event_factory/provider/provider_registry.py @@ -1,9 +1,9 @@ -from src.distributed_event_factory.provider.data.case_provider import CaseIdProviderRegistry -from src.distributed_event_factory.provider.datasource.sensor_topology_registry import DataSourceProviderRegistry -from src.distributed_event_factory.provider.generic.count_provider_registry import CountProviderRegistry -from src.distributed_event_factory.provider.load.load_provider_registry import LoadProviderRegistry -from src.distributed_event_factory.provider.transition.duration.duration_registry import DurationProviderRegistry -from src.distributed_event_factory.simulation.eventloop.event_loop_registry import EventLoopRegistry +from distributed_event_factory.provider.data.case_provider import CaseIdProviderRegistry +from distributed_event_factory.provider.datasource.sensor_topology_registry import DataSourceProviderRegistry +from distributed_event_factory.provider.generic.count_provider_registry import CountProviderRegistry +from distributed_event_factory.provider.load.load_provider_registry import LoadProviderRegistry +from distributed_event_factory.provider.transition.duration.duration_registry import DurationProviderRegistry +from distributed_event_factory.simulation.eventloop.event_loop_registry import EventLoopRegistry providers = dict() providers["numberOfDataSources"] = lambda config, field: CountProviderRegistry().get(config[field]) diff --git a/src/distributed_event_factory/provider/sink/console/console_sink.py b/src/distributed_event_factory/provider/sink/console/console_sink.py index bed080f..7ba352a 100644 --- a/src/distributed_event_factory/provider/sink/console/console_sink.py +++ b/src/distributed_event_factory/provider/sink/console/console_sink.py @@ -1,5 +1,5 @@ -from src.distributed_event_factory.core.event import AbstractEvent, Event -from src.distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider +from distributed_event_factory.core.event import AbstractEvent, Event +from distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider class PrintConsole(Sink): diff --git a/src/distributed_event_factory/provider/sink/http/http_sink.py b/src/distributed_event_factory/provider/sink/http/http_sink.py index 022e638..584d388 100644 --- a/src/distributed_event_factory/provider/sink/http/http_sink.py +++ b/src/distributed_event_factory/provider/sink/http/http_sink.py @@ -1,8 +1,8 @@ import json from queue import Queue -from src.distributed_event_factory.core.event import AbstractEvent -from src.distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider +from distributed_event_factory.core.event import AbstractEvent +from distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider import requests class TimeFrame: diff --git a/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py b/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py index a93a9f6..b7e4d5d 100644 --- a/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py +++ b/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py @@ -3,9 +3,9 @@ from scheduled_futures import ScheduledThreadPoolExecutor -from src.distributed_event_factory.core.event import AbstractEvent -from src.distributed_event_factory.provider.sink.kafka.partition.partition_provider import PartitionProvider -from src.distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider +from distributed_event_factory.core.event import AbstractEvent +from distributed_event_factory.provider.sink.kafka.partition.partition_provider import PartitionProvider +from distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider class KafkaSink(Sink): diff --git a/src/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py b/src/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py index 20fc536..4d176fa 100644 --- a/src/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py +++ b/src/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py @@ -1,10 +1,10 @@ import json import string -from src.distributed_event_factory.core.event import AbstractEvent -from src.distributed_event_factory.provider.sink.kafka.partition.partition_provider import ConstantPartitionProvider, \ +from distributed_event_factory.core.event import AbstractEvent +from distributed_event_factory.provider.sink.kafka.partition.partition_provider import ConstantPartitionProvider, \ PartitionProvider -from src.distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider +from distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider class KafkaValidationSink(Sink): diff --git a/src/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py b/src/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py index 132abc0..b88a192 100644 --- a/src/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py +++ b/src/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py @@ -1,6 +1,6 @@ from abc import ABC, abstractmethod -from src.distributed_event_factory.core.event import AbstractEvent, Event +from distributed_event_factory.core.event import AbstractEvent, Event class PartitionProvider(ABC): diff --git a/src/distributed_event_factory/provider/sink/kafka/partition/partition_registry.py b/src/distributed_event_factory/provider/sink/kafka/partition/partition_registry.py index c96578f..b595349 100644 --- a/src/distributed_event_factory/provider/sink/kafka/partition/partition_registry.py +++ b/src/distributed_event_factory/provider/sink/kafka/partition/partition_registry.py @@ -1,4 +1,4 @@ -from src.distributed_event_factory.provider.sink.kafka.partition.partition_provider import ConstantPartitionProvider, \ +from distributed_event_factory.provider.sink.kafka.partition.partition_provider import ConstantPartitionProvider, \ CaseIdPartitionProvider diff --git a/src/distributed_event_factory/provider/sink/newsink/newsink.py b/src/distributed_event_factory/provider/sink/newsink/newsink.py index 75b58ed..9e08ccd 100644 --- a/src/distributed_event_factory/provider/sink/newsink/newsink.py +++ b/src/distributed_event_factory/provider/sink/newsink/newsink.py @@ -5,7 +5,7 @@ from threading import Thread, Lock from scheduled_futures import ScheduledThreadPoolExecutor -from src.distributed_event_factory.provider.sink.http.http_sink import TimeFrame +from distributed_event_factory.provider.sink.http.http_sink import TimeFrame class NewSink: diff --git a/src/distributed_event_factory/provider/sink/newsink/sinkqueue.py b/src/distributed_event_factory/provider/sink/newsink/sinkqueue.py index c4b23f2..948c6d5 100644 --- a/src/distributed_event_factory/provider/sink/newsink/sinkqueue.py +++ b/src/distributed_event_factory/provider/sink/newsink/sinkqueue.py @@ -1,6 +1,6 @@ from queue import Queue -from src.distributed_event_factory.provider.sink.http.http_sink import TimeFrame +from distributed_event_factory.provider.sink.http.http_sink import TimeFrame class SinkQueue: diff --git a/src/distributed_event_factory/provider/sink/sink_provider.py b/src/distributed_event_factory/provider/sink/sink_provider.py index 61099fb..07c1793 100644 --- a/src/distributed_event_factory/provider/sink/sink_provider.py +++ b/src/distributed_event_factory/provider/sink/sink_provider.py @@ -1,6 +1,6 @@ import abc -from src.distributed_event_factory.core.event import AbstractEvent +from distributed_event_factory.core.event import AbstractEvent class Sink: diff --git a/src/distributed_event_factory/provider/sink/sink_provider_registry.py b/src/distributed_event_factory/provider/sink/sink_provider_registry.py index 316ef2f..93ea239 100644 --- a/src/distributed_event_factory/provider/sink/sink_provider_registry.py +++ b/src/distributed_event_factory/provider/sink/sink_provider_registry.py @@ -1,14 +1,14 @@ -from src.distributed_event_factory.provider.sink.console.console_sink import PrintConsoleSinkProvider -from src.distributed_event_factory.provider.sink.http.http_sink import HttpSink, HttpSinkProvider -from src.distributed_event_factory.provider.sink.kafka.kafka_sink import KafkaSinkProvider -from src.distributed_event_factory.provider.sink.kafka.kafka_validation_sink import KafkaValidationSinkProvider -from src.distributed_event_factory.provider.sink.kafka.partition.partition_registry import PartitionProviderRegistry -from src.distributed_event_factory.provider.sink.sink_provider import SinkProvider +from distributed_event_factory.provider.sink.console.console_sink import PrintConsoleSinkProvider +from distributed_event_factory.provider.sink.http.http_sink import HttpSink, HttpSinkProvider +from distributed_event_factory.provider.sink.kafka.kafka_sink import KafkaSinkProvider +from distributed_event_factory.provider.sink.kafka.kafka_validation_sink import KafkaValidationSinkProvider +from distributed_event_factory.provider.sink.kafka.partition.partition_registry import PartitionProviderRegistry +from distributed_event_factory.provider.sink.sink_provider import SinkProvider class SinkProviderRegistry: def get_ui(self): - from src.distributed_event_factory.provider.sink.ui.terminal_ui_sink import TerminalGuiSinkProvider + from distributed_event_factory.provider.sink.ui.terminal_ui_sink import TerminalGuiSinkProvider return TerminalGuiSinkProvider() def get(self, config) -> SinkProvider: diff --git a/src/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py b/src/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py index e359889..bae1e35 100644 --- a/src/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py +++ b/src/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py @@ -1,6 +1,6 @@ -from src.distributed_event_factory.core.event import AbstractEvent -from src.distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider -from src.distributed_event_factory.view.terminal import Terminal +from distributed_event_factory.core.event import AbstractEvent +from distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider +from distributed_event_factory.view.terminal import Terminal class TerminalGui(Sink): def __init__(self, terminal): diff --git a/src/distributed_event_factory/provider/transition/duration/duration_registry.py b/src/distributed_event_factory/provider/transition/duration/duration_registry.py index 61470cf..a38805a 100644 --- a/src/distributed_event_factory/provider/transition/duration/duration_registry.py +++ b/src/distributed_event_factory/provider/transition/duration/duration_registry.py @@ -1,4 +1,4 @@ -from src.distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider, ConstantDurationProvider, \ +from distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider, ConstantDurationProvider, \ UniformDurationProvider, GaussianDurationProvider diff --git a/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider_registry.py b/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider_registry.py index a97159b..0cd9e20 100644 --- a/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider_registry.py +++ b/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider_registry.py @@ -1,4 +1,4 @@ -from src.distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, ConstantNextSensorProvider +from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, ConstantNextSensorProvider class NextSensorProviderRegistry: diff --git a/src/distributed_event_factory/provider/transition/transition_matrix_creation_strategy.py b/src/distributed_event_factory/provider/transition/transition_matrix_creation_strategy.py index 0636d04..12ceafe 100644 --- a/src/distributed_event_factory/provider/transition/transition_matrix_creation_strategy.py +++ b/src/distributed_event_factory/provider/transition/transition_matrix_creation_strategy.py @@ -1,9 +1,9 @@ from abc import ABC, abstractmethod import random -from src.provider.generic.count_provider_registry import CountProviderRegistry -from src.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, NextSensorChooseProvider -from src.provider.transition.next_state_provider import DistinctProbabilityDistributionProvider +from provider.generic.count_provider_registry import CountProviderRegistry +from provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, NextSensorChooseProvider +from provider.transition.next_state_provider import DistinctProbabilityDistributionProvider class TransitionMatrixCreationStrategy(ABC): diff --git a/src/distributed_event_factory/provider/transition/transition_provider_factory.py b/src/distributed_event_factory/provider/transition/transition_provider_factory.py index 8e0f644..94d3946 100644 --- a/src/distributed_event_factory/provider/transition/transition_provider_factory.py +++ b/src/distributed_event_factory/provider/transition/transition_provider_factory.py @@ -1,7 +1,7 @@ from abc import ABC, abstractmethod -from src.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, NextSensorChooseProvider -from src.provider.transition.transition_matrix_creation_strategy import RandomTransitionMatrixCreationStrategy, \ +from provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, NextSensorChooseProvider +from provider.transition.transition_matrix_creation_strategy import RandomTransitionMatrixCreationStrategy, \ RandomTransitionMatrixProviderRegistry diff --git a/src/distributed_event_factory/simulation/distributed_event_factory.py b/src/distributed_event_factory/simulation/distributed_event_factory.py index 374c4c2..2249666 100644 --- a/src/distributed_event_factory/simulation/distributed_event_factory.py +++ b/src/distributed_event_factory/simulation/distributed_event_factory.py @@ -1,7 +1,7 @@ import yaml -from src.distributed_event_factory.provider.provider_registry import ProviderRegistry -from src.distributed_event_factory.simulation.simulation import Simulation +from distributed_event_factory.provider.provider_registry import ProviderRegistry +from distributed_event_factory.simulation.simulation import Simulation class DistributedEventFactory: diff --git a/src/distributed_event_factory/simulation/eventloop/event_loop.py b/src/distributed_event_factory/simulation/eventloop/event_loop.py index 2aeb728..eaffb62 100644 --- a/src/distributed_event_factory/simulation/eventloop/event_loop.py +++ b/src/distributed_event_factory/simulation/eventloop/event_loop.py @@ -2,7 +2,7 @@ import time from scheduled_futures import ScheduledThreadPoolExecutor -from src.distributed_event_factory.provider.sink.http.http_sink import TimeFrame, HttpSink +from distributed_event_factory.provider.sink.http.http_sink import TimeFrame, HttpSink class EventLoop(ABC): diff --git a/src/distributed_event_factory/simulation/eventloop/event_loop_registry.py b/src/distributed_event_factory/simulation/eventloop/event_loop_registry.py index 1c19fd5..a283926 100644 --- a/src/distributed_event_factory/simulation/eventloop/event_loop_registry.py +++ b/src/distributed_event_factory/simulation/eventloop/event_loop_registry.py @@ -1,5 +1,5 @@ -from src.distributed_event_factory.provider.load.load_provider_registry import LoadProviderRegistry -from src.distributed_event_factory.simulation.eventloop.event_loop import DebugEventLoop, LoadEventLoop +from distributed_event_factory.provider.load.load_provider_registry import LoadProviderRegistry +from distributed_event_factory.simulation.eventloop.event_loop import DebugEventLoop, LoadEventLoop class EventLoopRegistry: diff --git a/src/distributed_event_factory/simulation/new_process_simulation.py b/src/distributed_event_factory/simulation/new_process_simulation.py index 58df115..da58a35 100644 --- a/src/distributed_event_factory/simulation/new_process_simulation.py +++ b/src/distributed_event_factory/simulation/new_process_simulation.py @@ -3,10 +3,10 @@ from datetime import datetime, timedelta from typing import List, Dict -from src.distributed_event_factory.core.datasource import DataSource -from src.distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID, DataSourceId -from src.distributed_event_factory.core.event import Event -from src.distributed_event_factory.provider.data.case_provider import CaseIdProvider +from distributed_event_factory.core.datasource import DataSource +from distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID, DataSourceId +from distributed_event_factory.core.event import Event +from distributed_event_factory.provider.data.case_provider import CaseIdProvider class NewProcessSimulator: def __init__( diff --git a/src/distributed_event_factory/simulation/new_simulation.py b/src/distributed_event_factory/simulation/new_simulation.py index 9b042fb..3a9ed94 100644 --- a/src/distributed_event_factory/simulation/new_simulation.py +++ b/src/distributed_event_factory/simulation/new_simulation.py @@ -1,9 +1,9 @@ import time from scheduled_futures import ScheduledThreadPoolExecutor -from src.distributed_event_factory.provider.data.case_provider import CaseIdProvider -from src.distributed_event_factory.provider.load.load_provider import LoadProvider -from src.distributed_event_factory.simulation.new_process_simulation import NewProcessSimulator +from distributed_event_factory.provider.data.case_provider import CaseIdProvider +from distributed_event_factory.provider.load.load_provider import LoadProvider +from distributed_event_factory.simulation.new_process_simulation import NewProcessSimulator class NewSimulation: def send_event(self, event): diff --git a/src/distributed_event_factory/simulation/new_simulation2.py b/src/distributed_event_factory/simulation/new_simulation2.py index b3cd828..a56543f 100644 --- a/src/distributed_event_factory/simulation/new_simulation2.py +++ b/src/distributed_event_factory/simulation/new_simulation2.py @@ -1,9 +1,9 @@ from typing import Dict -from src.distributed_event_factory.core.datasource import DataSource -from src.distributed_event_factory.provider.data.case_provider import CaseIdProvider -from src.distributed_event_factory.provider.load.load_provider import LoadProvider -from src.distributed_event_factory.provider.sink.sink_provider import Sink -from src.distributed_event_factory.simulation.new_process_simulation import NewProcessSimulator +from distributed_event_factory.core.datasource import DataSource +from distributed_event_factory.provider.data.case_provider import CaseIdProvider +from distributed_event_factory.provider.load.load_provider import LoadProvider +from distributed_event_factory.provider.sink.sink_provider import Sink +from distributed_event_factory.simulation.new_process_simulation import NewProcessSimulator class NewSimulation2: diff --git a/src/distributed_event_factory/simulation/process_simulator.py b/src/distributed_event_factory/simulation/process_simulator.py index 1dbb4b6..5e9b8e5 100644 --- a/src/distributed_event_factory/simulation/process_simulator.py +++ b/src/distributed_event_factory/simulation/process_simulator.py @@ -3,10 +3,10 @@ from datetime import datetime, timedelta from typing import List -from src.distributed_event_factory.core.datasource import DataSource -from src.distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID, DataSourceId -from src.distributed_event_factory.core.event import Event -from src.distributed_event_factory.provider.data.case_provider import CaseIdProvider +from distributed_event_factory.core.datasource import DataSource +from distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID, DataSourceId +from distributed_event_factory.core.event import Event +from distributed_event_factory.provider.data.case_provider import CaseIdProvider class ProcessSimulator: def __init__( diff --git a/src/distributed_event_factory/simulation/simulation.py b/src/distributed_event_factory/simulation/simulation.py index 465dfcc..b451ee6 100644 --- a/src/distributed_event_factory/simulation/simulation.py +++ b/src/distributed_event_factory/simulation/simulation.py @@ -1,8 +1,8 @@ -from src.distributed_event_factory.provider.data.case_provider import CaseIdProvider -from src.distributed_event_factory.provider.datasource.sensor_topology import DataSourceTopologyProvider -from src.distributed_event_factory.provider.generic.count_provider import CountProvider -from src.distributed_event_factory.simulation.eventloop.event_loop import EventLoop -from src.distributed_event_factory.simulation.process_simulator import ProcessSimulator +from distributed_event_factory.provider.data.case_provider import CaseIdProvider +from distributed_event_factory.provider.datasource.sensor_topology import DataSourceTopologyProvider +from distributed_event_factory.provider.generic.count_provider import CountProvider +from distributed_event_factory.simulation.eventloop.event_loop import EventLoop +from distributed_event_factory.simulation.process_simulator import ProcessSimulator class Simulation: From 05547c6caa4bff5818d029fc51be3a33d8c60b39 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Tue, 15 Oct 2024 13:35:35 +0200 Subject: [PATCH 013/124] implement drifting sensor --- pyproject.toml | 3 -- .../assemblyline/d1-goods-delivery.yaml | 6 ++-- .../event_factory.py | 6 ++-- .../datasource/event/distribution_parser.py | 2 +- .../event/event_data_list_parser.py | 2 +- .../event/event_selection_parser.py | 5 +-- .../datasource/event/selection/__init__.py | 0 ...ting_probability_event_selection_parser.py | 20 ++++++++++++ ...eric_probability_event_selection_parser.py | 18 +++++++++++ .../parser/parser_registry.py | 20 ++++++++++-- ...ng_probability_event_selection_provider.py | 32 +++++++++++++++++++ 11 files changed, 97 insertions(+), 17 deletions(-) create mode 100644 src/distributed_event_factory/parser/datasource/event/selection/__init__.py create mode 100644 src/distributed_event_factory/parser/datasource/event/selection/drifting_probability_event_selection_parser.py create mode 100644 src/distributed_event_factory/parser/datasource/event/selection/generic_probability_event_selection_parser.py create mode 100644 src/distributed_event_factory/provider/eventselection/drifting_probability_event_selection_provider.py diff --git a/pyproject.toml b/pyproject.toml index 4bd0185..ec5c132 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,6 +18,3 @@ Homepage = "https://github.com/cau-se/DistributedEventFactory" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" - -[tool.hatch.build.targets.wheel.force-include] -"src" = "src" \ No newline at end of file diff --git a/src/distributed_event_factory/config/assemblyline/d1-goods-delivery.yaml b/src/distributed_event_factory/config/assemblyline/d1-goods-delivery.yaml index 879ae75..72f6148 100644 --- a/src/distributed_event_factory/config/assemblyline/d1-goods-delivery.yaml +++ b/src/distributed_event_factory/config/assemblyline/d1-goods-delivery.yaml @@ -3,8 +3,10 @@ name: "GoodsDelivery" spec: name: "GoodsDelivery" group: "factory" - selection: genericProbability - distribution: [0.1, 0.7, 0.2] + selection: driftingProbability + startDistribution: [0.1, 0.7, 0.2] + endDistribution: [0.1, 0.2, 0.7] + steps: 1000 eventData: - activity: "Reject" transition: "" diff --git a/src/distributed_event_factory/event_factory.py b/src/distributed_event_factory/event_factory.py index 8843de3..3ac260f 100644 --- a/src/distributed_event_factory/event_factory.py +++ b/src/distributed_event_factory/event_factory.py @@ -33,6 +33,9 @@ def add_activity_parser(self, key: str, parser: ActivityParser): def add_sink_parser(self, key: str, parser: SinkParser): self.parser.sink_parser.add_dependency(key, parser) + def add_selection_parser(self, key: str, parser: SinkParser): + self.parser.probability_selection_parser.add_dependency(key, parser) + def run(self, directory): for filename in os.listdir(directory): with open(directory + "/" + filename) as file: @@ -49,6 +52,3 @@ def run(self, directory): for simulation in self.simulations: self.simulations[simulation].run_simulation(self.datasources, self.sinks) - -if __name__ == '__main__': - EventFactory("") \ No newline at end of file diff --git a/src/distributed_event_factory/parser/datasource/event/distribution_parser.py b/src/distributed_event_factory/parser/datasource/event/distribution_parser.py index 122c233..165696e 100644 --- a/src/distributed_event_factory/parser/datasource/event/distribution_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/distribution_parser.py @@ -10,4 +10,4 @@ def add_dependency(self, key: str, dependency): pass def parse(self, config): - return config['distribution'] \ No newline at end of file + return config \ No newline at end of file diff --git a/src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py b/src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py index 5d4bb9c..d596275 100644 --- a/src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py @@ -13,7 +13,7 @@ def add_dependency(self, key: str, dependency): def parse(self, config): event_list = [] - for event in config["eventData"]: + for event in config: event_list.append(CustomEventDataProvider( duration_provider=self.dependencies["duration"].parse(event["duration"]), activity_provider=self.dependencies["activity"].parse(event["activity"]), diff --git a/src/distributed_event_factory/parser/datasource/event/event_selection_parser.py b/src/distributed_event_factory/parser/datasource/event/event_selection_parser.py index 537bdeb..1656cd8 100644 --- a/src/distributed_event_factory/parser/datasource/event/event_selection_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/event_selection_parser.py @@ -13,7 +13,4 @@ def add_dependency(self, key: str, dependency): return self def parse(self, config): - return GenericProbabilityEventSelectionProvider( - probability_distribution=self.dependencies["distribution"].parse(config), - potential_events=self.dependencies["eventDataList"].parse(config) - ) \ No newline at end of file + return self.dependencies[config['selection']].parse(config) diff --git a/src/distributed_event_factory/parser/datasource/event/selection/__init__.py b/src/distributed_event_factory/parser/datasource/event/selection/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/distributed_event_factory/parser/datasource/event/selection/drifting_probability_event_selection_parser.py b/src/distributed_event_factory/parser/datasource/event/selection/drifting_probability_event_selection_parser.py new file mode 100644 index 0000000..b760d0d --- /dev/null +++ b/src/distributed_event_factory/parser/datasource/event/selection/drifting_probability_event_selection_parser.py @@ -0,0 +1,20 @@ +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.eventselection.drifting_probability_event_selection_provider import \ + DriftingProbabilityEventSelectionProvider + + +class DriftingProbabilityEventSelectionParser(Parser): + def __init__(self): + self.dependencies=dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + return DriftingProbabilityEventSelectionProvider( + starting_probability_distribution=self.dependencies["distribution"].parse(config["startDistribution"]), + end_probability_distribution=self.dependencies["distribution"].parse(config["endDistribution"]), + steps=config["steps"], + potential_events=self.dependencies["eventData"].parse(config["eventData"]) + ) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/datasource/event/selection/generic_probability_event_selection_parser.py b/src/distributed_event_factory/parser/datasource/event/selection/generic_probability_event_selection_parser.py new file mode 100644 index 0000000..dabc83d --- /dev/null +++ b/src/distributed_event_factory/parser/datasource/event/selection/generic_probability_event_selection_parser.py @@ -0,0 +1,18 @@ +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.eventselection.generic_probability_event_selection_provider import \ + GenericProbabilityEventSelectionProvider + + +class GenericProbabilityEventSelectionParser(Parser): + def __init__(self): + self.dependencies=dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + return GenericProbabilityEventSelectionProvider( + self.dependencies["distribution"].parse(config["distribution"]), + self.dependencies["eventData"].parse(config["eventData"]) + ) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/parser_registry.py b/src/distributed_event_factory/parser/parser_registry.py index 9c59e81..bc5ea0b 100644 --- a/src/distributed_event_factory/parser/parser_registry.py +++ b/src/distributed_event_factory/parser/parser_registry.py @@ -6,6 +6,10 @@ GaussianDurationParser from distributed_event_factory.parser.datasource.event.duration.uniform_duration_parser import \ UniformDurationParser +from distributed_event_factory.parser.datasource.event.selection.drifting_probability_event_selection_parser import \ + DriftingProbabilityEventSelectionParser +from distributed_event_factory.parser.datasource.event.selection.generic_probability_event_selection_parser import \ + GenericProbabilityEventSelectionParser from distributed_event_factory.parser.datasource.event.transition.transition_parser import TransitionParser from distributed_event_factory.parser.simulation.case.case_id_parser import CaseIdParser from distributed_event_factory.parser.datasource.data_source_parser import DataSourceParser @@ -22,6 +26,8 @@ from distributed_event_factory.parser.sink.sink_parser import SinkParser from distributed_event_factory.parser.sink.ui_sink_parser import UiSinkParser from distributed_event_factory.provider.data.case_provider import IncreasingCaseIdProvider +from distributed_event_factory.provider.eventselection.generic_probability_event_selection_provider import \ + GenericProbabilityEventSelectionProvider class ParserRegistry: @@ -53,7 +59,6 @@ def __init__(self): # Transition self.transition_parser = TransitionParser() - # Event Data List self.event_data_list_parser = (EventDataListParser() .add_dependency("duration", self.duration_parser) @@ -64,10 +69,19 @@ def __init__(self): # Distribution self.distribution_parser = (DistributionParser()) + self.drifting_selection_parser = (DriftingProbabilityEventSelectionParser() + .add_dependency("distribution", self.distribution_parser) + .add_dependency("eventData", self.event_data_list_parser)) + + self.probability_selection_parser = (GenericProbabilityEventSelectionParser() + .add_dependency("distribution", self.distribution_parser) + .add_dependency("eventData", self.event_data_list_parser)) + + # Event Selection self.event_selection_parser = (EventSelectionParser() - .add_dependency("distribution", self.distribution_parser) - .add_dependency("eventDataList", self.event_data_list_parser)) + .add_dependency("genericProbability", self.probability_selection_parser) + .add_dependency("driftingProbability", self.drifting_selection_parser)) # DataSource self.datasource_parser = (DataSourceParser() diff --git a/src/distributed_event_factory/provider/eventselection/drifting_probability_event_selection_provider.py b/src/distributed_event_factory/provider/eventselection/drifting_probability_event_selection_provider.py new file mode 100644 index 0000000..4b17ae6 --- /dev/null +++ b/src/distributed_event_factory/provider/eventselection/drifting_probability_event_selection_provider.py @@ -0,0 +1,32 @@ +from typing import List + +from numpy import random + +from distributed_event_factory.provider.event.event_provider import EventDataProvider +from distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider + +class DriftingProbabilityEventSelectionProvider(EventSelectionProvider): + + def __init__(self, + steps: int, + starting_probability_distribution: List[float], + end_probability_distribution: List[float], + potential_events: List[EventDataProvider]): + self.starting_probability_distribution = starting_probability_distribution + self.end_probability_distribution = end_probability_distribution + self.potential_events = potential_events + self.steps = steps + self.step = 0 + + def get_event_data(self): + self.step = self.step + 1 + r = self.step / self.steps + if r < 1: + current_probability_distribution = [] + for i in range(len(self.starting_probability_distribution)): + current_probability_distribution.append(r * self.starting_probability_distribution[i] + (1-r) * self.end_probability_distribution[i]) + else: + current_probability_distribution = self.end_probability_distribution + + index = random.choice(len(self.potential_events), p=current_probability_distribution) + return self.potential_events[index] From 65082ab6747595000ccdbf474ea65ed736db40f5 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Tue, 15 Oct 2024 22:47:02 +0200 Subject: [PATCH 014/124] larger refactoring --- README.md | 4 +- cfg/warehouse2.yml | 102 ----- factory.png => docs/factory.png | Bin markov.png => docs/markov.png | Bin .../config/assembly_line.yml | 148 ------- .../config/assembly_line_kafka.yml | 123 ------ .../config/assemblyline/simulation.yaml | 12 +- .../experiment/new_simulation-experiment.py | 31 -- .../config/load_sensor_petri_net.yaml | 352 ---------------- .../config/simple.yml | 49 --- .../config/syntheticpetrinet.yaml | 379 ------------------ .../config/warehouse.yml | 102 ----- .../core/abstract_datasource.py | 24 ++ .../core/datasource.py | 74 +--- .../core/end_datasource.py | 26 ++ src/distributed_event_factory/core/event.py | 52 ++- .../core/start_datasource.py | 29 ++ .../event_factory.py | 2 +- src/distributed_event_factory/main.py | 7 - .../event/activity/activity_parser.py | 1 - .../duration/constant_duration_parser.py | 2 +- .../event/duration/duration_parser.py | 2 +- .../duration/gaussian_duration_parser.py | 2 +- .../event/duration/uniform_duration_parser.py | 3 +- .../event/event_data_list_parser.py | 2 - .../datasource/event/event_data_parser.py | 18 - .../ordered_event_selection_parser.py | 10 + .../event/transition/transition_parser.py | 4 +- .../parser/parser_registry.py | 31 +- .../{config => parser/sink/kafka}/__init__.py | 0 .../sink/kafka/case_partition_parser.py | 9 + .../sink/kafka/constant_partition_parser.py | 10 + .../parser/sink/kafka/kafka_sink_parser.py | 20 + .../parser/sink/kafka/partition_parser.py | 13 + .../selection/activity_selection_provider.py | 1 + .../provider/datasource/sensor_topology.py | 4 +- .../provider/event/event_data.py | 6 +- .../provider/event/event_provider.py | 19 +- .../provider/event/event_provider_registry.py | 2 +- .../provider/eventselection/README.md | 10 - .../uniform_selction_provider.py | 2 +- .../provider/generic/__init__.py | 0 .../provider/generic/count_provider.py | 25 -- .../generic/count_provider_registry.py | 10 - .../provider/provider_registry.py | 23 -- .../provider/sink/console/console_sink.py | 2 +- .../provider/sink/kafka/kafka_sink.py | 34 +- .../sink/kafka/kafka_validation_sink.py | 36 +- .../provider/sink/kafka/partition/README.md | 0 .../sink/kafka/partition/case_partition.py | 10 + .../kafka/partition/constant_partition.py | 10 + .../kafka/partition/partition_provider.py | 23 +- .../kafka/partition/partition_registry.py | 11 - .../provider/sink/sink_provider.py | 4 +- .../provider/sink/ui/terminal_ui_sink.py | 6 +- .../transition/duration/constant_duration.py | 8 + .../transition/duration/duration_provider.py | 31 +- .../transition/duration/duration_registry.py | 15 - .../transition/duration/gaussian_duration.py | 12 + .../transition/duration/uniform_duration.py | 13 + .../transition/next_state_provider.py | 30 -- .../transition/nextsensor/__init__.py | 0 .../next_sensor_provider_registry.py | 14 - .../transition/transition}/__init__.py | 0 .../transition/constant_transition.py | 8 + .../transition_provider.py} | 18 +- .../transition_matrix_creation_strategy.py | 52 --- .../transition_probability_provider.py | 28 -- .../transition/transition_provider.py | 2 +- .../simulation/new_process_simulation.py | 4 +- .../simulation/new_simulation.py | 1 + .../simulation/process_simulator.py | 2 +- 72 files changed, 312 insertions(+), 1807 deletions(-) delete mode 100644 cfg/warehouse2.yml rename factory.png => docs/factory.png (100%) rename markov.png => docs/markov.png (100%) delete mode 100644 src/distributed_event_factory/config/assembly_line.yml delete mode 100644 src/distributed_event_factory/config/assembly_line_kafka.yml delete mode 100644 src/distributed_event_factory/config/experiment/new_simulation-experiment.py delete mode 100644 src/distributed_event_factory/config/load_sensor_petri_net.yaml delete mode 100644 src/distributed_event_factory/config/simple.yml delete mode 100644 src/distributed_event_factory/config/syntheticpetrinet.yaml delete mode 100644 src/distributed_event_factory/config/warehouse.yml create mode 100644 src/distributed_event_factory/core/abstract_datasource.py create mode 100644 src/distributed_event_factory/core/end_datasource.py create mode 100644 src/distributed_event_factory/core/start_datasource.py delete mode 100644 src/distributed_event_factory/parser/datasource/event/event_data_parser.py create mode 100644 src/distributed_event_factory/parser/datasource/event/selection/ordered_event_selection_parser.py rename src/distributed_event_factory/{config => parser/sink/kafka}/__init__.py (100%) create mode 100644 src/distributed_event_factory/parser/sink/kafka/case_partition_parser.py create mode 100644 src/distributed_event_factory/parser/sink/kafka/constant_partition_parser.py create mode 100644 src/distributed_event_factory/parser/sink/kafka/kafka_sink_parser.py create mode 100644 src/distributed_event_factory/parser/sink/kafka/partition_parser.py delete mode 100644 src/distributed_event_factory/provider/eventselection/README.md delete mode 100644 src/distributed_event_factory/provider/generic/__init__.py delete mode 100644 src/distributed_event_factory/provider/generic/count_provider.py delete mode 100644 src/distributed_event_factory/provider/generic/count_provider_registry.py delete mode 100644 src/distributed_event_factory/provider/provider_registry.py delete mode 100644 src/distributed_event_factory/provider/sink/kafka/partition/README.md create mode 100644 src/distributed_event_factory/provider/sink/kafka/partition/case_partition.py create mode 100644 src/distributed_event_factory/provider/sink/kafka/partition/constant_partition.py delete mode 100644 src/distributed_event_factory/provider/sink/kafka/partition/partition_registry.py create mode 100644 src/distributed_event_factory/provider/transition/duration/constant_duration.py delete mode 100644 src/distributed_event_factory/provider/transition/duration/duration_registry.py create mode 100644 src/distributed_event_factory/provider/transition/duration/gaussian_duration.py create mode 100644 src/distributed_event_factory/provider/transition/duration/uniform_duration.py delete mode 100644 src/distributed_event_factory/provider/transition/next_state_provider.py delete mode 100644 src/distributed_event_factory/provider/transition/nextsensor/__init__.py delete mode 100644 src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider_registry.py rename src/distributed_event_factory/{config/experiment => provider/transition/transition}/__init__.py (100%) create mode 100644 src/distributed_event_factory/provider/transition/transition/constant_transition.py rename src/distributed_event_factory/provider/transition/{nextsensor/next_sensor_provider.py => transition/transition_provider.py} (56%) delete mode 100644 src/distributed_event_factory/provider/transition/transition_matrix_creation_strategy.py delete mode 100644 src/distributed_event_factory/provider/transition/transition_probability_provider.py diff --git a/README.md b/README.md index f5f5132..eeed0f5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Distributed Event Factory (DEF) -![Factory](factory.png) +![Factory](docs/factory.png) ## About @@ -28,7 +28,7 @@ DEF is based on a Markov chain. The vertices of the Markov chain represent the d The edges represent transitions between the data sources. They contain a probability for transitioning, the activity performed and a function modelling the process duration. -![Markov Chain](markov.png) +![Markov Chain](docs/markov.png) ## Minimal Running Example diff --git a/cfg/warehouse2.yml b/cfg/warehouse2.yml deleted file mode 100644 index 1a29868..0000000 --- a/cfg/warehouse2.yml +++ /dev/null @@ -1,102 +0,0 @@ -numberOfDataSources: - type: static - count: 7 -caseId: increasing -type: load -loadType: constant -tickCount: 100 -load: 10 -dataSourceTopology: - defaultSink: - type: console - dataSources: - - name: "GoodsReceiving" - groupId: "warehouse" - eventGeneration: - selection: genericProbability - distribution: [0.1, 0.6, 0.3] - from: - events: - - activity: "Reject" - transition: 6 - duration: 1 - - activity: "Store" - transition: 1 - duration: 1 - - activity: "Repackage" - transition: 1 - duration: - type: uniform - lowerBound: 3 - upperBound: 7 - - name: "Storage" - groupId: "warehouse" - eventGeneration: - selection: genericProbability - distribution: [ 0.3, 0.7 ] - from: - events: - - activity: "Picked up" - duration: - type: uniform - lowerBound: 1 - upperBound: 2 - transition: 2 - - activity: "Still storing" - transition: 1 - duration: 1 - - name: "Picking" - groupId: "warehouse" - eventGeneration: - selection: genericProbability - distribution: [ 0.5, 0.1, 0.4 ] - from: - events: - - activity: "Transport To Storage" - transition: 1 - duration: 1 - - activity: "Transport To Returns Handling" - transition: 4 - duration: 1 - - activity: "Transport to shipping" - transition: 5 - duration: - type: uniform - lowerBound: 5 - upperBound: 10 - - name: "Packaging" - groupId: "warehouse" - eventGeneration: - selection: genericProbability - distribution: [ 1.0 ] - from: - events: - - activity: "Packaging completed" - transition: 2 - duration: 3 - - name: "ReturnsHandling" - groupId: "warehouse" - eventGeneration: - selection: genericProbability - distribution: [ 1.0 ] - from: - events: - - activity: "Analysis" - transition: 2 - duration: - type: uniform - lowerBound: 30 - upperBound: 60 - - name: "Shipping" - groupId: "warehouse" - eventGeneration: - selection: uniform - distribution: [ 0.8, 0.2 ] - from: - events: - - activity: "Package waits for sending" - transition: 5 - duration: 180 - - activity: "Package sent" - transition: 6 - duration: 1 \ No newline at end of file diff --git a/factory.png b/docs/factory.png similarity index 100% rename from factory.png rename to docs/factory.png diff --git a/markov.png b/docs/markov.png similarity index 100% rename from markov.png rename to docs/markov.png diff --git a/src/distributed_event_factory/config/assembly_line.yml b/src/distributed_event_factory/config/assembly_line.yml deleted file mode 100644 index dc4554f..0000000 --- a/src/distributed_event_factory/config/assembly_line.yml +++ /dev/null @@ -1,148 +0,0 @@ -numberOfDataSources: - type: static - count: 7 -caseId: increasing -type: load -loadType: constant -tickCount: 100 -load: 10 -dataSourceTopology: - defaultSink: - type: console - dataSources: - - name: "GoodsDelivery" - groupId: "factory" - eventGeneration: - selection: genericProbability - distribution: [0.1, 0.7, 0.2] - from: - events: - - activity: "Reject" - transition: 7 - duration: 1 - - activity: "Store" - transition: 0 - duration: - type: gaussian - mu: 720 - sigma: 120 - - activity: "Pass To Production" - transition: 1 - duration: - type: uniform - lowerBound: 3 - upperBound: 7 - - name: "MaterialPreparation" - groupId: "factory" - eventGeneration: - selection: genericProbability - distribution: [ 0.25, 0.7, 0.05 ] - from: - events: - - activity: "MaterialPreparation - Finished" - duration: - type: uniform - lowerBound: 1 - upperBound: 2 - transition: 2 - - activity: "Waiting for Material" - transition: 1 - duration: 1 - - activity: "Internal Error" - transition: 1 - duration: - type: gaussian - mu: 500 - sigma: 100 - - name: "AssemblyLineSetup" - groupId: "factory" - eventGeneration: - selection: genericProbability - distribution: [ 0.3, 0.4, 0.15, 0.05, 0.1 ] - from: - events: - - activity: "Material Not Set Up as expected" - transition: 1 - duration: - type: uniform - lowerBound: 2 - upperBound: 5 - - activity: "Assembly Line Setup successfully" - transition: 3 - duration: 3 - - activity: "Material in wrong order. Reordering.." - transition: 2 - duration: 1 - - activity: "Maximum Material count exceeded. Remove item" - transition: 2 - duration: 1 - - activity: "Internal Error" - transition: 3 - duration: - type: gaussian - mu: 500 - sigma: 100 - - name: "AssemblyProcess" - groupId: "factory" - eventGeneration: - selection: genericProbability - distribution: [ 0.8, 0.1, 0.08, 0.02 ] - from: - events: - - activity: "Assembling completed" - duration: 10 - transition: 4 - - activity: "Overheating" - transition: 7 - duration: 2 - - activity: "Item broke" - transition: 7 - duration: 1 - - activity: "Internal Error" - transition: 3 - duration: - type: gaussian - mu: 500 - sigma: 100 - - name: "QualityControl" - groupId: "factory" - eventGeneration: - selection: genericProbability - distribution: [ 0.3, 0.1, 0.6 ] - from: - events: - - activity: "Item Needs Corrections" - transition: 3 - duration: 2 - - activity: "Quality Insufficient" - transition: 7 - duration: 2 - - activity: "Quality check passed" - transition: 5 - duration: - type: uniform - lowerBound: 5 - upperBound: 10 - - name: "Packaging" - groupId: "factory" - eventGeneration: - selection: genericProbability - distribution: [ 1.0 ] - from: - events: - - activity: "Packaging completed" - transition: 6 - duration: 3 - - name: "Shipping" - groupId: "factory" - eventGeneration: - selection: uniform - distribution: [ 0.8, 0.2 ] - from: - events: - - activity: "Package waits for sending" - transition: 6 - duration: 180 - - activity: "Package sent" - transition: 7 - duration: 1 \ No newline at end of file diff --git a/src/distributed_event_factory/config/assembly_line_kafka.yml b/src/distributed_event_factory/config/assembly_line_kafka.yml deleted file mode 100644 index 8e2724b..0000000 --- a/src/distributed_event_factory/config/assembly_line_kafka.yml +++ /dev/null @@ -1,123 +0,0 @@ -numberOfDataSources: - type: static - count: 9 -caseId: increasing -type: debug -loadType: gradual -tickCount: 100 -load: 10 -minimalLoad: 5 -dataSourceTopology: - defaultSink: - type: kafka - bootstrapServer: localhost:9092 - topic: input - partition: - type: caseId - numberPartitions: 1 - dataSources: - - name: "GoodsDelivery" - eventGeneration: - selection: genericProbability - distribution: [0.1, 0.7, 0.2] - from: - events: - - activity: "Reject" - duration: 1 - transition: 7 - - activity: "Store" - transition: 0 - duration: 720 - - activity: "Pass To Production" - duration: 5 - transition: 1 - - name: "MaterialPreparation" - eventGeneration: - selection: genericProbability - distribution: [ 0.25, 0.7, 0.05 ] - from: - events: - - activity: "MaterialPreparation - Finished" - duration: 5 - transition: 2 - - activity: "Waiting for Material" - duration: 1 - transition: 1 - - activity: "Internal Error" - duration: 500 - transition: 1 - - name: "AssemblyLineSetup" - eventGeneration: - selection: genericProbability - distribution: [ 0.3, 0.4, 0.15, 0.05, 0.1 ] - from: - events: - - activity: "Material Not Set Up as expected" - duration: 2 - transition: 1 - - activity: "Assembly Line Setup successfully" - duration: 3 - transition: 3 - - activity: "Material in wrong order. Reordering.." - duration: 1 - transition: 2 - - activity: "Maximum Material count exceeded. Remove item" - duration: 1 - transition: 2 - - activity: "Internal Error" - duration: 500 - transition: 3 - - name: "AssemblyProcess" - eventGeneration: - selection: genericProbability - distribution: [ 0.8, 0.1, 0.08, 0.02 ] - from: - events: - - activity: "Assembling completed" - duration: 10 - transition: 4 - - activity: "Overheating" - duration: 2 - transition: 7 - - activity: "Item broke" - duration: 1 - transition: 7 - - activity: "Internal Error" - duration: 500 - transition: 3 - - name: "QualityControl" - eventGeneration: - selection: genericProbability - distribution: [ 0.3, 0.1, 0.6 ] - from: - events: - - activity: "Item Needs Corrections" - duration: 2 - transition: 3 - - activity: "Quality Insufficient" - duration: 2 - transition: 7 - - activity: "Quality check passed" - duration: 7 - transition: 5 - - name: "Packaging" - eventGeneration: - selection: genericProbability - distribution: [ 1.0 ] - from: - events: - - activity: "Packaging completed" - duration: 3 - transition: 6 - - name: "Shipping" - eventGeneration: - selection: uniform - distribution: [ 0.8, 0.2 ] - from: - events: - - activity: "Package waits for sending" - duration: 180 - transition: 6 - - activity: "Package sent" - duration: 1 - transition: 7 \ No newline at end of file diff --git a/src/distributed_event_factory/config/assemblyline/simulation.yaml b/src/distributed_event_factory/config/assemblyline/simulation.yaml index 78ce1e1..a085bea 100644 --- a/src/distributed_event_factory/config/assemblyline/simulation.yaml +++ b/src/distributed_event_factory/config/assemblyline/simulation.yaml @@ -4,11 +4,7 @@ spec: caseId: increasing timeFrameDuration: 10 load: - loadBehavior: sinus - mean: 10 - amplitude: 8 - phase: 50 - #loadBehavior: gradual - #tickCount: 100 - #minimalLoad: 5 - #load: 10 \ No newline at end of file + loadBehavior: gradual + tickCount: 100 + minimalLoad: 5 + load: 10 \ No newline at end of file diff --git a/src/distributed_event_factory/config/experiment/new_simulation-experiment.py b/src/distributed_event_factory/config/experiment/new_simulation-experiment.py deleted file mode 100644 index ca6aeb1..0000000 --- a/src/distributed_event_factory/config/experiment/new_simulation-experiment.py +++ /dev/null @@ -1,31 +0,0 @@ -import os - -import yaml - -from distributed_event_factory.parser.simulation.load.gradual_load_parser import GradualLoadParser -from distributed_event_factory.parser.parser_registry import ParserRegistry -from distributed_event_factory.core.datasource import EndDataSource - -if __name__ == '__main__': - sinks = dict() - simulations = dict() - datasources = dict() - datasources[""] = EndDataSource() - parser = ParserRegistry() - parser.load_parser.add_dependency("gradual", GradualLoadParser()) - - for filename in os.listdir("../assemblyline"): - with open("../assemblyline/" + filename) as file: - configuration = yaml.safe_load(file) - kind = configuration['kind'] - name = configuration['name'] - parsed_object = parser.kind_parser.parse(configuration) - if kind == "simulation": - simulations[name] = parsed_object - elif kind == "datasource": - datasources[name] = parsed_object - elif kind == "sink": - sinks[name] = parsed_object - - for simulation in simulations: - simulations[simulation].run_simulation(datasources, sinks) diff --git a/src/distributed_event_factory/config/load_sensor_petri_net.yaml b/src/distributed_event_factory/config/load_sensor_petri_net.yaml deleted file mode 100644 index e84e97b..0000000 --- a/src/distributed_event_factory/config/load_sensor_petri_net.yaml +++ /dev/null @@ -1,352 +0,0 @@ -numberOfDataSources: - type: static - count: 9 -caseId: increasing -type: load -loadType: gradual -tickCount: 100 -load: 10 -minimalLoad: 5 -dataSourceTopology: - defaultSink: - type: kafka - bootstrapServer: kube1-1:30376 - topic: t5 - partition: - type: caseId - numberPartitions: 1 - validationTopic: assembly-validation - validationSplit: 8 - dataSources: - - name: "GoodsDelivery" #pseudo Transition 0 from start to "store" - eventGeneration: - selection: genericProbability - distribution: [0.01, 0.91, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01] - from: - events: - - activity: "Reject" - duration: 1 - transition: 10 - - activity: "Store" - transition: 1 - duration: 5 - - activity: "Pass To Production" - duration: 4 - transition: 2 - - activity: "Material Preparation Finished" - duration: 1 - transition: 3 - - activity: "Internal Error" - transition: 4 - duration: 5 - - activity: "Assemble complete" - duration: 7 - transition: 5 - - activity: "Waiting for Material" - duration: 1 - transition: 6 - - activity: "Packaging completed" - transition: 7 - duration: 4 - - activity: "Waiting for sending" - duration: 1 - transition: 8 - - activity: "Package sent" - duration: 1 - transition: 9 - - - name: "GoodsProcessing" #Transition 1 from store to "pass to production / reject" - eventGeneration: - selection: genericProbability - distribution: [0.11, 0.00, 0.82, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01] - from: - events: - - activity: "Reject" - duration: 1 - transition: 10 - - activity: "Store" - transition: 1 - duration: 5 - - activity: "Pass To Production" - duration: 4 - transition: 2 - - activity: "Material Preparation Finished" - duration: 1 - transition: 3 - - activity: "Internal Error" - transition: 4 - duration: 5 - - activity: "Assemble complete" - duration: 7 - transition: 5 - - activity: "Waiting for Material" - duration: 1 - transition: 6 - - activity: "Packaging completed" - transition: 7 - duration: 4 - - activity: "Waiting for sending" - duration: 1 - transition: 8 - - activity: "Package sent" - duration: 1 - transition: 9 - - - name: "MaterialCompletion" #Transition 2 from "pass to production" to "Material Prep finished / Waiting for Material" - eventGeneration: - selection: genericProbability - distribution: [0.01, 0.00, 0.01, 0.2, 0.01, 0.01, 0.73, 0.01, 0.01, 0.01] - from: - events: - - activity: "Reject" - duration: 1 - transition: 10 - - activity: "Store" - transition: 1 - duration: 5 - - activity: "Pass To Production" - duration: 4 - transition: 2 - - activity: "Material Preparation Finished" - duration: 1 - transition: 3 - - activity: "Internal Error" - transition: 4 - duration: 5 - - activity: "Assemble complete" - duration: 7 - transition: 5 - - activity: "Waiting for Material" - duration: 1 - transition: 6 - - activity: "Packaging completed" - transition: 7 - duration: 4 - - activity: "Waiting for sending" - duration: 1 - transition: 8 - - activity: "Package sent" - duration: 1 - transition: 9 - - - name: "AssemblyProcess" #Transition 3 from Material Preparation Finished to "Internal Error / Assemble complete" - eventGeneration: - selection: genericProbability - distribution: [0.01, 0.00, 0.00, 0.01, 0.06, 0.88, 0.01, 0.01, 0.01, 0.01] - from: - events: - - activity: "Reject" - duration: 1 - transition: 10 - - activity: "Store" - transition: 1 - duration: 5 - - activity: "Pass To Production" - duration: 4 - transition: 2 - - activity: "Material Preparation Finished" - duration: 1 - transition: 3 - - activity: "Internal Error" - transition: 4 - duration: 5 - - activity: "Assemble complete" - duration: 7 - transition: 5 - - activity: "Waiting for Material" - duration: 1 - transition: 6 - - activity: "Packaging completed" - transition: 7 - duration: 4 - - activity: "Waiting for sending" - duration: 1 - transition: 8 - - activity: "Package sent" - duration: 1 - transition: 9 - - - name: "QualityControl" #Transition 4 Internal Error to "Waiting for material" - eventGeneration: - selection: genericProbability - distribution: [0.01, 0.00, 0.00, 0.00, 0.02, 0.01, 0.93, 0.01, 0.01, 0.01] - from: - events: - - activity: "Reject" - duration: 1 - transition: 10 - - activity: "Store" - transition: 1 - duration: 5 - - activity: "Pass To Production" - duration: 4 - transition: 2 - - activity: "Material Preparation Finished" - duration: 1 - transition: 3 - - activity: "Internal Error" - transition: 4 - duration: 5 - - activity: "Assemble complete" - duration: 7 - transition: 5 - - activity: "Waiting for Material" - duration: 1 - transition: 6 - - activity: "Packaging complete" - transition: 7 - duration: 4 - - activity: "Waiting for sending" - duration: 1 - transition: 8 - - activity: "Package sent" - duration: 1 - transition: 9 - - - name: "Assembly" #Transition 5 Assemble complete to "Packaging complete" - eventGeneration: - selection: genericProbability - distribution: [0.01, 0.00, 0.00, 0.00, 0.00, 0.01, 0.00, 0.96, 0.01, 0.01] - from: - events: - - activity: "Reject" - duration: 1 - transition: 10 - - activity: "Store" - transition: 1 - duration: 5 - - activity: "Pass To Production" - duration: 4 - transition: 2 - - activity: "Material Preparation Finished" - duration: 1 - transition: 3 - - activity: "Internal Error" - transition: 4 - duration: 5 - - activity: "Assemble complete" - duration: 7 - transition: 5 - - activity: "Waiting for Material" - duration: 1 - transition: 6 - - activity: "Packaging completed" - transition: 7 - duration: 4 - - activity: "Waiting for sending" - duration: 1 - transition: 8 - - activity: "Package sent" - duration: 1 - transition: 9 - - - name: "Packing" #Transition 6 Waiting for Material to "Pass to production" - eventGeneration: - selection: uniform - distribution: [0.01, 0.00, 0.92, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01] - from: - events: - - activity: "Reject" - duration: 1 - transition: 10 - - activity: "Store" - transition: 1 - duration: 5 - - activity: "Pass To Production" - duration: 4 - transition: 2 - - activity: "Material Preparation Finished" - duration: 1 - transition: 3 - - activity: "Internal Error" - transition: 4 - duration: 5 - - activity: "Assemble complete" - duration: 7 - transition: 5 - - activity: "Waiting for Material" - duration: 1 - transition: 6 - - activity: "Packaging complete" - transition: 7 - duration: 4 - - activity: "Waiting for sending" - duration: 1 - transition: 8 - - activity: "Package sent" - duration: 1 - transition: 9 - - - name: "Shipping" #Transition 7 Packaging completed to "Waiting for sending" - eventGeneration: - selection: uniform - distribution: [0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.98, 0.02] - from: - events: - - activity: "Reject" - duration: 1 - transition: 10 - - activity: "Store" - transition: 1 - duration: 5 - - activity: "Pass To Production" - duration: 4 - transition: 2 - - activity: "Material Preparation Finished" - duration: 1 - transition: 3 - - activity: "Internal Error" - transition: 4 - duration: 5 - - activity: "Assemble complete" - duration: 7 - transition: 5 - - activity: "Waiting for Material" - duration: 1 - transition: 6 - - activity: "Packaging complete" - transition: 7 - duration: 4 - - activity: "Waiting for sending" - duration: 1 - transition: 8 - - activity: "Package sent" - duration: 1 - transition: 9 - - - name: "Shipping" #Transition 8 Waiting for sending to "Packaging complete/Package sent" - eventGeneration: - selection: uniform - distribution: [0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.15, 0.85] - from: - events: - - activity: "Reject" - duration: 1 - transition: 10 - - activity: "Store" - transition: 1 - duration: 5 - - activity: "Pass To Production" - duration: 4 - transition: 2 - - activity: "Material Preparation Finished" - duration: 1 - transition: 3 - - activity: "Internal Error" - transition: 4 - duration: 5 - - activity: "Assemble complete" - duration: 7 - transition: 5 - - activity: "Waiting for Material" - duration: 1 - transition: 6 - - activity: "Packaging complete" - transition: 7 - duration: 4 - - activity: "Waiting for sending" - duration: 1 - transition: 8 - - activity: "Package sent" - duration: 1 - transition: 9 \ No newline at end of file diff --git a/src/distributed_event_factory/config/simple.yml b/src/distributed_event_factory/config/simple.yml deleted file mode 100644 index 325c976..0000000 --- a/src/distributed_event_factory/config/simple.yml +++ /dev/null @@ -1,49 +0,0 @@ -numberOfDataSources: - type: static - count: 3 -caseId: increasing -type: load -loadType: gradual -tickCount: 100 -load: 10 -minimalLoad: 5 -dataSourceTopology: - defaultSink: - type: kafka - bootstrapServer: kube1-1:30376 - topic: t3 - partition: - type: caseId - numberPartitions: 1 - dataSources: - - name: "S1" - eventGeneration: - selection: genericProbability - distribution: [1.0] - from: - events: - - activity: "A1" - duration: 1 - transition: 1 - - name: "S2" - eventGeneration: - selection: genericProbability - distribution: [ 0.7, 0.3 ] - from: - events: - - activity: "A2" - duration: 5 - transition: 2 - - activity: "A3" - duration: 5 - transition: 2 - - name: "S3" - eventGeneration: - selection: genericProbability - distribution: [ 1.0 ] - from: - events: - - activity: "A4" - duration: 2 - transition: 3 - diff --git a/src/distributed_event_factory/config/syntheticpetrinet.yaml b/src/distributed_event_factory/config/syntheticpetrinet.yaml deleted file mode 100644 index 5f4b961..0000000 --- a/src/distributed_event_factory/config/syntheticpetrinet.yaml +++ /dev/null @@ -1,379 +0,0 @@ -numberOfDataSources: - type: static - count: 9 -caseId: increasing -type: load -loadType: constant -tickCount: 100 -load: 5000 -minimalLoad: 5 -dataSourceTopology: - defaultSink: - type: http - bootstrapServer: kube1-1:30376 - topic: z12 - partition: - type: caseId - numberPartitions: 1 - dataSources: - - name: "start_place" # start Place to "Inspection" - eventGeneration: - selection: genericProbability - distribution: [0.91, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01] - from: - events: - - activity: "Inspection" - duration: 1 - transition: 1 - - activity: "Reject" - duration: 5 - transition: 2 - - activity: "Accept" - duration: 4 - transition: 3 - - activity: "Process" - duration: 1 - transition: 4 - - activity: "Return" - duration: 5 - transition: 5 - - activity: "Pay" - duration: 7 - transition: 6 - - activity: "Record" - duration: 1 - transition: 7 - - activity: "Document" - duration: 4 - transition: 8 - - activity: "Manufacture" - duration: 1 - transition: 9 - - activity: "Take Stock" - duration: 1 - transition: 10 - - - name: "P1" # from a to "b or c" - eventGeneration: - selection: genericProbability - distribution: [0.00, 0.48, 0.48, 0.01, 0.01, 0.01, 0.01, 0.00, 0.00, 0.00] - from: - events: - - activity: "Inspection" - duration: 1 - transition: 1 - - activity: "Reject" - duration: 5 - transition: 2 - - activity: "Accept" - duration: 4 - transition: 3 - - activity: "Process" - duration: 1 - transition: 4 - - activity: "Return" - duration: 5 - transition: 5 - - activity: "Pay" - duration: 7 - transition: 6 - - activity: "Record" - duration: 1 - transition: 7 - - activity: "Document" - duration: 4 - transition: 8 - - activity: "Manufacture" - duration: 1 - transition: 9 - - activity: "Take Stock" - duration: 1 - transition: 10 - - name: "P2" # from b to "d or e" - eventGeneration: - selection: genericProbability - distribution: [0.00, 0.00, 0.00, 0.49, 0.49, 0.00, 0.00, 0.01, 0.0, 0.01] - from: - events: - - activity: "Inspection" - duration: 1 - transition: 1 - - activity: "Reject" - duration: 5 - transition: 2 - - activity: "Accept" - duration: 4 - transition: 3 - - activity: "Process" - duration: 1 - transition: 4 - - activity: "Return" - duration: 5 - transition: 5 - - activity: "Pay" - duration: 7 - transition: 6 - - activity: "Record" - duration: 1 - transition: 7 - - activity: "Document" - duration: 4 - transition: 8 - - activity: "Manufacture" - duration: 1 - transition: 9 - - activity: "Take Stock" - duration: 1 - transition: 10 - - name: "Place4and5" # exit c to "f and g" - eventGeneration: - selection: genericProbability - distribution: [0.00, 0.00, 0.00, 0.00, 0.00, 0.49, 0.49, 0.00, 0.01, 0.01] - from: - events: - - activity: "Inspection" - duration: 1 - transition: 1 - - activity: "Reject" - duration: 5 - transition: 2 - - activity: "Accept" - duration: 4 - transition: 3 - - activity: "Process" - duration: 1 - transition: 4 - - activity: "Return" - duration: 5 - transition: 5 - - activity: "Pay" - duration: 7 - transition: 6 - - activity: "Record" - duration: 1 - transition: 7 - - activity: "Document" - duration: 4 - transition: 8 - - activity: "Manufacture" - duration: 1 - transition: 9 - - activity: "Take Stock" - duration: 1 - transition: 10 - - name: "P3" # from d to "Document" - eventGeneration: - selection: genericProbability - distribution: [0.00, 0.00, 0.00, 0.01, 0.00, 0.00, 0.00, 0.98, 0.00, 0.01] - from: - events: - - activity: "Inspection" - duration: 1 - transition: 1 - - activity: "Reject" - duration: 5 - transition: 2 - - activity: "Accept" - duration: 4 - transition: 3 - - activity: "Process" - duration: 1 - transition: 4 - - activity: "Return" - duration: 5 - transition: 5 - - activity: "Pay" - duration: 7 - transition: 6 - - activity: "Record" - duration: 1 - transition: 7 - - activity: "Document" - duration: 4 - transition: 8 - - activity: "Manufacture" - duration: 1 - transition: 9 - - activity: "Take Stock" - duration: 1 - transition: 10 - - name: "P3" # from e to "Manufacture" - eventGeneration: - selection: genericProbability - distribution: [0.00, 0.00, 0.00, 0.00, 0.01, 0.00, 0.00, 0.98, 0.00, 0.01] - from: - events: - - activity: "Inspection" - duration: 1 - transition: 1 - - activity: "Reject" - duration: 5 - transition: 2 - - activity: "Accept" - duration: 4 - transition: 3 - - activity: "Process" - duration: 1 - transition: 4 - - activity: "Return" - duration: 5 - transition: 5 - - activity: "Pay" - duration: 7 - transition: 6 - - activity: "Record" - duration: 1 - transition: 7 - - activity: "Document" - duration: 4 - transition: 8 - - activity: "Manufacture" - duration: 1 - transition: 9 - - activity: "Take Stock" - duration: 1 - transition: 10 - - name: "P6" # from f to "i or g" - eventGeneration: - selection: genericProbability - distribution: [0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.39, 0.00, 0.60, 0.01] - from: - events: - - activity: "Inspection" - duration: 1 - transition: 1 - - activity: "Reject" - duration: 5 - transition: 2 - - activity: "Accept" - duration: 4 - transition: 3 - - activity: "Process" - duration: 1 - transition: 4 - - activity: "Return" - duration: 5 - transition: 5 - - activity: "Pay" - duration: 7 - transition: 6 - - activity: "Record" - duration: 1 - transition: 7 - - activity: "Document" - duration: 4 - transition: 8 - - activity: "Manufacture" - duration: 1 - transition: 9 - - activity: "Take Stock" - duration: 1 - transition: 10 - - name: "P7" # from g to "i or f" - eventGeneration: - selection: genericProbability - distribution: [0.00, 0.00, 0.00, 0.00, 0.00, 0.39, 0.00, 0.00, 0.60, 0.01] - from: - events: - - activity: "Inspection" - duration: 1 - transition: 1 - - activity: "Reject" - duration: 5 - transition: 2 - - activity: "Accept" - duration: 4 - transition: 3 - - activity: "Process" - duration: 1 - transition: 4 - - activity: "Return" - duration: 5 - transition: 5 - - activity: "Pay" - duration: 7 - transition: 6 - - activity: "Record" - duration: 1 - transition: 7 - - activity: "Document" - duration: 4 - transition: 8 - - activity: "Manufacture" - duration: 1 - transition: 9 - - activity: "Take Stock" - duration: 1 - transition: 10 - - name: "P8" # from h to "Take Stock" - eventGeneration: - selection: genericProbability - distribution: [0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.01, 0.00, 0.99] - from: - events: - - activity: "Inspection" - duration: 1 - transition: 1 - - activity: "Reject" - duration: 5 - transition: 2 - - activity: "Accept" - duration: 4 - transition: 3 - - activity: "Process" - duration: 1 - transition: 4 - - activity: "Return" - duration: 5 - transition: 5 - - activity: "Pay" - duration: 7 - transition: 6 - - activity: "Record" - duration: 1 - transition: 7 - - activity: "Document" - duration: 4 - transition: 8 - - activity: "Manufacture" - duration: 1 - transition: 9 - - activity: "Take Stock" - duration: 1 - transition: 10 - - name: "GoodsDelivery" # from i to "Take Stock" - eventGeneration: - selection: genericProbability - distribution: [0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.01, 0.99] - from: - events: - - activity: "Inspection" - duration: 1 - transition: 1 - - activity: "Reject" - duration: 5 - transition: 2 - - activity: "Accept" - duration: 4 - transition: 3 - - activity: "Process" - duration: 1 - transition: 4 - - activity: "Return" - duration: 5 - transition: 5 - - activity: "Pay" - duration: 7 - transition: 6 - - activity: "Record" - duration: 1 - transition: 7 - - activity: "Document" - duration: 4 - transition: 8 - - activity: "Manufacture" - duration: 1 - transition: 9 - - activity: "Take Stock" - duration: 1 - transition: 10 \ No newline at end of file diff --git a/src/distributed_event_factory/config/warehouse.yml b/src/distributed_event_factory/config/warehouse.yml deleted file mode 100644 index 1a29868..0000000 --- a/src/distributed_event_factory/config/warehouse.yml +++ /dev/null @@ -1,102 +0,0 @@ -numberOfDataSources: - type: static - count: 7 -caseId: increasing -type: load -loadType: constant -tickCount: 100 -load: 10 -dataSourceTopology: - defaultSink: - type: console - dataSources: - - name: "GoodsReceiving" - groupId: "warehouse" - eventGeneration: - selection: genericProbability - distribution: [0.1, 0.6, 0.3] - from: - events: - - activity: "Reject" - transition: 6 - duration: 1 - - activity: "Store" - transition: 1 - duration: 1 - - activity: "Repackage" - transition: 1 - duration: - type: uniform - lowerBound: 3 - upperBound: 7 - - name: "Storage" - groupId: "warehouse" - eventGeneration: - selection: genericProbability - distribution: [ 0.3, 0.7 ] - from: - events: - - activity: "Picked up" - duration: - type: uniform - lowerBound: 1 - upperBound: 2 - transition: 2 - - activity: "Still storing" - transition: 1 - duration: 1 - - name: "Picking" - groupId: "warehouse" - eventGeneration: - selection: genericProbability - distribution: [ 0.5, 0.1, 0.4 ] - from: - events: - - activity: "Transport To Storage" - transition: 1 - duration: 1 - - activity: "Transport To Returns Handling" - transition: 4 - duration: 1 - - activity: "Transport to shipping" - transition: 5 - duration: - type: uniform - lowerBound: 5 - upperBound: 10 - - name: "Packaging" - groupId: "warehouse" - eventGeneration: - selection: genericProbability - distribution: [ 1.0 ] - from: - events: - - activity: "Packaging completed" - transition: 2 - duration: 3 - - name: "ReturnsHandling" - groupId: "warehouse" - eventGeneration: - selection: genericProbability - distribution: [ 1.0 ] - from: - events: - - activity: "Analysis" - transition: 2 - duration: - type: uniform - lowerBound: 30 - upperBound: 60 - - name: "Shipping" - groupId: "warehouse" - eventGeneration: - selection: uniform - distribution: [ 0.8, 0.2 ] - from: - events: - - activity: "Package waits for sending" - transition: 5 - duration: 180 - - activity: "Package sent" - transition: 6 - duration: 1 \ No newline at end of file diff --git a/src/distributed_event_factory/core/abstract_datasource.py b/src/distributed_event_factory/core/abstract_datasource.py new file mode 100644 index 0000000..792fb19 --- /dev/null +++ b/src/distributed_event_factory/core/abstract_datasource.py @@ -0,0 +1,24 @@ +from abc import ABC, abstractmethod +from typing import List + +from distributed_event_factory.core.datasource_id import DataSourceId +from distributed_event_factory.core.event import Event +from distributed_event_factory.provider.event.event_data import EventData + +class DataSource(ABC): + + @abstractmethod + def emit_event(self, case, activity_name, timestamp) -> None: + pass + + @abstractmethod + def get_event_data(self) -> EventData: + pass + + @abstractmethod + def get_id(self) -> DataSourceId: + pass + + @abstractmethod + def get_event_log(self) -> List[Event]: + pass diff --git a/src/distributed_event_factory/core/datasource.py b/src/distributed_event_factory/core/datasource.py index c34078c..dc4e6de 100644 --- a/src/distributed_event_factory/core/datasource.py +++ b/src/distributed_event_factory/core/datasource.py @@ -1,77 +1,15 @@ from abc import abstractmethod, ABC from typing import List +from distributed_event_factory.core.abstract_datasource import DataSource from distributed_event_factory.core.datasource_id import DataSourceId, START_SENSOR_ID, END_DATA_SOURCE_ID -from distributed_event_factory.core.event import AbstractEvent, StartEvent, EndEvent, Event +from distributed_event_factory.core.event import StartEvent, EndEvent, Event from distributed_event_factory.provider.event.event_data import EventData from distributed_event_factory.provider.event.event_provider import EventDataProvider, EndEventProvider, \ StartEventProvider from distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider -from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, \ - AbstractNextSensorProvider - - -class DataSource(ABC): - - @abstractmethod - def emit_event(self, case, activity_name, timestamp) -> None: - pass - - @abstractmethod - def get_event_data(self) -> EventData: - pass - - @abstractmethod - def get_id(self) -> DataSourceId: - pass - - @abstractmethod - def get_event_log(self) -> List[AbstractEvent]: - pass - - -class StartDataSource(DataSource): - - def __init__(self, transition_provider: AbstractNextSensorProvider): - self.event_log = [] - self.transition_provider = transition_provider - - def get_event_data(self) -> EventDataProvider: - return StartEventProvider(self.transition_provider).get_event_data() - - def emit_event(self, case, activity, timestamp) -> AbstractEvent: - return StartEvent(case, self.transition_provider) - - def get_sensor_transition(self) -> tuple[int, int]: - return 0, self.transition_provider.get_next_sensor() - - def get_id(self) -> DataSourceId: - return START_SENSOR_ID - - def get_event_log(self) -> List[AbstractEvent]: - return self.event_log - - -class EndDataSource(DataSource): - - def __init__(self): - self.event_log = [] - - def emit_event(self, case, activity, timestamp) -> None: - event = EndEvent(case) - self.event_log.append(event) - - def get_event_data(self) -> EventDataProvider: - return EndEventProvider().get_event_data() - - def get_sensor_transition(self) -> tuple[int, int]: - raise ValueError("There is no transition on the end datasource") - - def get_id(self) -> DataSourceId: - return END_DATA_SOURCE_ID - - def get_event_log(self) -> List[AbstractEvent]: - return self.event_log +from distributed_event_factory.provider.transition.transition.transition_provider import ChoiceTransitionProvider, \ + TransitionProvider class GenericDataSource(DataSource): @@ -84,7 +22,7 @@ def __init__( self.sensor_id: DataSourceId = data_source_id self.group_id: str = group_id self.event_provider = event_provider - self.event_log: List[AbstractEvent] = [] + self.event_log: List[Event] = [] def get_id(self) -> DataSourceId: return self.sensor_id @@ -106,5 +44,5 @@ def emit_event(self, case, activity_name, timestamp) -> Event: self.event_log.append(event) return event - def get_event_log(self) -> List[AbstractEvent]: + def get_event_log(self) -> List[Event]: return self.event_log diff --git a/src/distributed_event_factory/core/end_datasource.py b/src/distributed_event_factory/core/end_datasource.py new file mode 100644 index 0000000..2c7ce76 --- /dev/null +++ b/src/distributed_event_factory/core/end_datasource.py @@ -0,0 +1,26 @@ +from typing import List + +from distributed_event_factory.core.abstract_datasource import DataSource +from distributed_event_factory.core.datasource_id import END_DATA_SOURCE_ID, DataSourceId +from distributed_event_factory.core.event import Event, EndEvent +from distributed_event_factory.provider.event.event_provider import EventDataProvider, EndEventProvider + +class EndDataSource(DataSource): + def __init__(self): + self.event_log = [] + + def emit_event(self, case, activity, timestamp) -> None: + event = EndEvent(case) + self.event_log.append(event) + + def get_event_data(self) -> EventDataProvider: + return EndEventProvider().get_event_data() + + def get_sensor_transition(self) -> tuple[int, int]: + raise ValueError("There is no transition on the end datasource") + + def get_id(self) -> DataSourceId: + return END_DATA_SOURCE_ID + + def get_event_log(self) -> List[Event]: + return self.event_log \ No newline at end of file diff --git a/src/distributed_event_factory/core/event.py b/src/distributed_event_factory/core/event.py index 37c61fd..59b70bb 100644 --- a/src/distributed_event_factory/core/event.py +++ b/src/distributed_event_factory/core/event.py @@ -1,27 +1,37 @@ -from abc import abstractmethod, ABC - -from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, \ - AbstractNextSensorProvider - +from distributed_event_factory.provider.transition.transition.transition_provider import ChoiceTransitionProvider, \ + TransitionProvider class CaseId: def __init__(self, case_id: str): self.case_id = case_id - class Activity: def __init__(self, activity: str): self.activity = activity +class Event: + def __init__(self, timestamp, sensor_value, case_id: CaseId, sensor_name, group_id): + self.timestamp = timestamp + self.activity: any = sensor_value + self.caseId: CaseId = case_id + self.node: str = sensor_name + self.group: str = group_id + + def get_case(self): + return self.caseId -class AbstractEvent(ABC): - @abstractmethod - def get_case(self) -> CaseId: - pass + def get_activity(self): + return self.activity + def get_timestamp(self): + return self.timestamp + + def __str__(self): + return str(self.__dict__) -class StartEvent(AbstractEvent): - def __init__(self, case_id: CaseId, transition_provider: AbstractNextSensorProvider): + +class StartEvent: + def __init__(self, case_id: CaseId, transition_provider: TransitionProvider): self.case_id = case_id self.transition_provider = transition_provider self.node = "start" @@ -30,14 +40,13 @@ def get_case(self): return self.case_id def get_next_sensor(self): - return self.transition_provider.get_next_sensor() + return self.transition_provider.get_transition() def __str__(self): return f"" -class EndEvent(AbstractEvent): - +class EndEvent: def __init__(self, case_id: CaseId): self.case_id = case_id @@ -48,16 +57,3 @@ def __str__(self): return f"" -class Event(AbstractEvent): - def __init__(self, timestamp, sensor_value, case_id: CaseId, sensor_name, group_id): - self.timestamp = timestamp - self.activity: any = sensor_value - self.caseId: CaseId = case_id - self.node: str = sensor_name - self.group: str = group_id - - def get_case(self): - return self.caseId - - def __str__(self): - return str(self.__dict__) diff --git a/src/distributed_event_factory/core/start_datasource.py b/src/distributed_event_factory/core/start_datasource.py new file mode 100644 index 0000000..6a1e516 --- /dev/null +++ b/src/distributed_event_factory/core/start_datasource.py @@ -0,0 +1,29 @@ +from typing import List + +from distributed_event_factory.core.abstract_datasource import DataSource +from distributed_event_factory.core.datasource_id import START_SENSOR_ID, DataSourceId +from distributed_event_factory.core.event import StartEvent, AbstractEvent +from distributed_event_factory.provider.event.event_provider import EventDataProvider, StartEventProvider +from distributed_event_factory.provider.transition.transition.transition_provider import TransitionProvider + + +class StartDataSource(DataSource): + + def __init__(self, transition_provider: TransitionProvider): + self.event_log = [] + self.transition_provider = transition_provider + + def get_event_data(self) -> EventDataProvider: + return StartEventProvider(self.transition_provider).get_event_data() + + def emit_event(self, case, activity, timestamp) -> AbstractEvent: + return StartEvent(case, self.transition_provider) + + def get_sensor_transition(self) -> tuple[int, int]: + return 0, self.transition_provider.get_transition() + + def get_id(self) -> DataSourceId: + return START_SENSOR_ID + + def get_event_log(self) -> List[AbstractEvent]: + return self.event_log \ No newline at end of file diff --git a/src/distributed_event_factory/event_factory.py b/src/distributed_event_factory/event_factory.py index 3ac260f..b90ea67 100644 --- a/src/distributed_event_factory/event_factory.py +++ b/src/distributed_event_factory/event_factory.py @@ -1,10 +1,10 @@ import os import yaml +from distributed_event_factory.core.end_datasource import EndDataSource from distributed_event_factory.parser.datasource.event.activity.activity_parser import ActivityParser from distributed_event_factory.parser.datasource.event.transition.transition_parser import TransitionParser from distributed_event_factory.parser.parser_registry import ParserRegistry -from distributed_event_factory.core.datasource import EndDataSource from distributed_event_factory.parser.simulation.case.case_id_parser import CaseIdParser from distributed_event_factory.parser.simulation.load.load_parser import LoadParser from distributed_event_factory.parser.sink.sink_parser import SinkParser diff --git a/src/distributed_event_factory/main.py b/src/distributed_event_factory/main.py index 6ca1c25..4251e6b 100644 --- a/src/distributed_event_factory/main.py +++ b/src/distributed_event_factory/main.py @@ -24,13 +24,6 @@ def parse(self, config): if __name__ == '__main__': - #if "CONFIG_FILE" in os.environ: - # config_file = os.environ["CONFIG_FILE"] - #else: - # config_file = "config/syntheticpetrinet.yaml" - event_factory = EventFactory() event_factory.parser.load_parser.add_dependency("sinus", SinusLoadParser()) event_factory.run("config/assemblyline") - - #DistributedEventFactory.from_config_file(config_file).start() diff --git a/src/distributed_event_factory/parser/datasource/event/activity/activity_parser.py b/src/distributed_event_factory/parser/datasource/event/activity/activity_parser.py index de352ab..9d555f9 100644 --- a/src/distributed_event_factory/parser/datasource/event/activity/activity_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/activity/activity_parser.py @@ -1,6 +1,5 @@ from distributed_event_factory.parser.parser import Parser from distributed_event_factory.provider.activity.activity_provider import ConstantActivityProvider -from distributed_event_factory.provider.transition.duration.duration_provider import ConstantDurationProvider class ActivityParser(Parser): diff --git a/src/distributed_event_factory/parser/datasource/event/duration/constant_duration_parser.py b/src/distributed_event_factory/parser/datasource/event/duration/constant_duration_parser.py index 8a7402d..5501324 100644 --- a/src/distributed_event_factory/parser/datasource/event/duration/constant_duration_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/duration/constant_duration_parser.py @@ -1,5 +1,5 @@ from distributed_event_factory.parser.parser import Parser -from distributed_event_factory.provider.transition.duration.duration_provider import ConstantDurationProvider +from distributed_event_factory.provider.transition.duration.constant_duration import ConstantDurationProvider class ConstantDurationParser(Parser): diff --git a/src/distributed_event_factory/parser/datasource/event/duration/duration_parser.py b/src/distributed_event_factory/parser/datasource/event/duration/duration_parser.py index fb44785..785211f 100644 --- a/src/distributed_event_factory/parser/datasource/event/duration/duration_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/duration/duration_parser.py @@ -1,5 +1,5 @@ from distributed_event_factory.parser.parser import Parser -from distributed_event_factory.provider.transition.duration.duration_provider import ConstantDurationProvider +from distributed_event_factory.provider.transition.duration.constant_duration import ConstantDurationProvider class DurationParser(Parser): diff --git a/src/distributed_event_factory/parser/datasource/event/duration/gaussian_duration_parser.py b/src/distributed_event_factory/parser/datasource/event/duration/gaussian_duration_parser.py index 6397cab..508505d 100644 --- a/src/distributed_event_factory/parser/datasource/event/duration/gaussian_duration_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/duration/gaussian_duration_parser.py @@ -1,5 +1,5 @@ from distributed_event_factory.parser.parser import Parser -from distributed_event_factory.provider.transition.duration.duration_provider import GaussianDurationProvider +from distributed_event_factory.provider.transition.duration.gaussian_duration import GaussianDurationProvider class GaussianDurationParser(Parser): diff --git a/src/distributed_event_factory/parser/datasource/event/duration/uniform_duration_parser.py b/src/distributed_event_factory/parser/datasource/event/duration/uniform_duration_parser.py index 447ec7d..d6eca1b 100644 --- a/src/distributed_event_factory/parser/datasource/event/duration/uniform_duration_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/duration/uniform_duration_parser.py @@ -1,5 +1,6 @@ from distributed_event_factory.parser.parser import Parser -from distributed_event_factory.provider.transition.duration.duration_provider import UniformDurationProvider +from distributed_event_factory.provider.transition.duration.uniform_duration import UniformDurationProvider + class UniformDurationParser(Parser): diff --git a/src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py b/src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py index d596275..ee41a16 100644 --- a/src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py @@ -1,7 +1,5 @@ from distributed_event_factory.parser.parser import Parser -from distributed_event_factory.provider.activity.activity_provider import ConstantActivityProvider from distributed_event_factory.provider.event.event_provider import CustomEventDataProvider -from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import ConstantNextSensorProvider class EventDataListParser(Parser): def __init__(self): diff --git a/src/distributed_event_factory/parser/datasource/event/event_data_parser.py b/src/distributed_event_factory/parser/datasource/event/event_data_parser.py deleted file mode 100644 index 573b9d0..0000000 --- a/src/distributed_event_factory/parser/datasource/event/event_data_parser.py +++ /dev/null @@ -1,18 +0,0 @@ -from distributed_event_factory.parser.parser import Parser -from distributed_event_factory.provider.activity.activity_provider import ConstantActivityProvider -from distributed_event_factory.provider.event.event_data import EventData -from distributed_event_factory.provider.transition.duration.duration_provider import ConstantDurationProvider -from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import ConstantNextSensorProvider - - -class EventDataParser(Parser): - - def add_dependency(self, key: str, dependency): - pass - - def parse(self, config): - return EventData( - duration_provider=ConstantDurationProvider(config["duration"]), - activity_provider=ConstantActivityProvider(config["activity"]), - transition_provider=ConstantNextSensorProvider(config["transition"]) - ) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/datasource/event/selection/ordered_event_selection_parser.py b/src/distributed_event_factory/parser/datasource/event/selection/ordered_event_selection_parser.py new file mode 100644 index 0000000..e36e624 --- /dev/null +++ b/src/distributed_event_factory/parser/datasource/event/selection/ordered_event_selection_parser.py @@ -0,0 +1,10 @@ +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.eventselection.ordered_selection_provider import OrderedEventSelectionProvider + + +class OrderedEventSelectionParser(Parser): + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return OrderedEventSelectionProvider(config["eventData"]) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/datasource/event/transition/transition_parser.py b/src/distributed_event_factory/parser/datasource/event/transition/transition_parser.py index 5666025..b5715a3 100644 --- a/src/distributed_event_factory/parser/datasource/event/transition/transition_parser.py +++ b/src/distributed_event_factory/parser/datasource/event/transition/transition_parser.py @@ -1,5 +1,5 @@ from distributed_event_factory.parser.parser import Parser -from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import ConstantNextSensorProvider +from distributed_event_factory.provider.transition.transition.constant_transition import ConstantTransitionProvider class TransitionParser(Parser): @@ -12,5 +12,5 @@ def add_dependency(self, key: str, dependency): def parse(self, config): if isinstance(config, str): - return ConstantNextSensorProvider(config) + return ConstantTransitionProvider(config) return self.dependencies[config["type"]].parse(config) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/parser_registry.py b/src/distributed_event_factory/parser/parser_registry.py index bc5ea0b..fbb48e1 100644 --- a/src/distributed_event_factory/parser/parser_registry.py +++ b/src/distributed_event_factory/parser/parser_registry.py @@ -10,40 +10,53 @@ DriftingProbabilityEventSelectionParser from distributed_event_factory.parser.datasource.event.selection.generic_probability_event_selection_parser import \ GenericProbabilityEventSelectionParser +from distributed_event_factory.parser.datasource.event.selection.ordered_event_selection_parser import \ + OrderedEventSelectionParser from distributed_event_factory.parser.datasource.event.transition.transition_parser import TransitionParser from distributed_event_factory.parser.simulation.case.case_id_parser import CaseIdParser from distributed_event_factory.parser.datasource.data_source_parser import DataSourceParser from distributed_event_factory.parser.datasource.event.distribution_parser import DistributionParser from distributed_event_factory.parser.datasource.event.event_data_list_parser import EventDataListParser -from distributed_event_factory.parser.datasource.event.event_data_parser import EventDataParser from distributed_event_factory.parser.datasource.event.event_selection_parser import EventSelectionParser from distributed_event_factory.parser.kind_parser import KindParser from distributed_event_factory.parser.simulation.load.constant_load_parser import ConstantLoadParser from distributed_event_factory.parser.simulation.load.gradual_load_parser import GradualLoadParser from distributed_event_factory.parser.simulation.load.load_parser import LoadParser from distributed_event_factory.parser.simulation.simulation_parser import SimulationParser +from distributed_event_factory.parser.sink.kafka.case_partition_parser import CasePartitionParser +from distributed_event_factory.parser.sink.kafka.constant_partition_parser import ConstantPartitionParser +from distributed_event_factory.parser.sink.kafka.kafka_sink_parser import KafkaSinkParser +from distributed_event_factory.parser.sink.kafka.partition_parser import PartitionParser from distributed_event_factory.parser.sink.print_console_sink_parser import PrintConsoleSinkParser from distributed_event_factory.parser.sink.sink_parser import SinkParser from distributed_event_factory.parser.sink.ui_sink_parser import UiSinkParser from distributed_event_factory.provider.data.case_provider import IncreasingCaseIdProvider from distributed_event_factory.provider.eventselection.generic_probability_event_selection_provider import \ GenericProbabilityEventSelectionProvider +from distributed_event_factory.provider.eventselection.ordered_selection_provider import OrderedEventSelectionProvider +from distributed_event_factory.provider.sink.kafka.partition.case_partition import CaseIdPartitionProvider class ParserRegistry: def __init__(self): + # Partitioning + self.constant_partition_parser = ConstantPartitionParser() + self.case_partition_parser = CasePartitionParser() + self.partition_parser = (PartitionParser() + .add_dependency("constant", self.constant_partition_parser) + .add_dependency("case", self.case_partition_parser)) + + # Sinks self.console_sink_parser = (PrintConsoleSinkParser()) self.ui_sink_parser = (UiSinkParser()) + self.kafka_sink_parser = (KafkaSinkParser()) self.sink_parser = (SinkParser() .add_dependency("console", self.console_sink_parser) - .add_dependency("ui", self.ui_sink_parser)) - + .add_dependency("ui", self.ui_sink_parser) + .add_dependency("kafka", self.kafka_sink_parser)) ########## - # Event Data - self.event_data_parser = EventDataParser() - # Activity self.activity_parser = ActivityParser() @@ -63,12 +76,13 @@ def __init__(self): self.event_data_list_parser = (EventDataListParser() .add_dependency("duration", self.duration_parser) .add_dependency("activity", self.activity_parser) - .add_dependency("transition", self.transition_parser) - .add_dependency("eventData", self.event_data_parser)) + .add_dependency("transition", self.transition_parser)) # Distribution self.distribution_parser = (DistributionParser()) + self.ordered_event_selection_parser = (OrderedEventSelectionParser()) + self.drifting_selection_parser = (DriftingProbabilityEventSelectionParser() .add_dependency("distribution", self.distribution_parser) .add_dependency("eventData", self.event_data_list_parser)) @@ -80,6 +94,7 @@ def __init__(self): # Event Selection self.event_selection_parser = (EventSelectionParser() + .add_dependency("ordered", self.ordered_event_selection_parser) .add_dependency("genericProbability", self.probability_selection_parser) .add_dependency("driftingProbability", self.drifting_selection_parser)) diff --git a/src/distributed_event_factory/config/__init__.py b/src/distributed_event_factory/parser/sink/kafka/__init__.py similarity index 100% rename from src/distributed_event_factory/config/__init__.py rename to src/distributed_event_factory/parser/sink/kafka/__init__.py diff --git a/src/distributed_event_factory/parser/sink/kafka/case_partition_parser.py b/src/distributed_event_factory/parser/sink/kafka/case_partition_parser.py new file mode 100644 index 0000000..9ebf154 --- /dev/null +++ b/src/distributed_event_factory/parser/sink/kafka/case_partition_parser.py @@ -0,0 +1,9 @@ +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.sink.kafka.partition.case_partition import CaseIdPartitionProvider + +class CasePartitionParser(Parser): + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return CaseIdPartitionProvider(number_of_partitions=config["partitionCount"]) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/sink/kafka/constant_partition_parser.py b/src/distributed_event_factory/parser/sink/kafka/constant_partition_parser.py new file mode 100644 index 0000000..4f238c5 --- /dev/null +++ b/src/distributed_event_factory/parser/sink/kafka/constant_partition_parser.py @@ -0,0 +1,10 @@ +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.sink.kafka.partition.constant_partition import ConstantPartitionProvider + + +class ConstantPartitionParser(Parser): + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return ConstantPartitionProvider(partition=config["partition"]) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/sink/kafka/kafka_sink_parser.py b/src/distributed_event_factory/parser/sink/kafka/kafka_sink_parser.py new file mode 100644 index 0000000..af93066 --- /dev/null +++ b/src/distributed_event_factory/parser/sink/kafka/kafka_sink_parser.py @@ -0,0 +1,20 @@ +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.sink.kafka.kafka_sink import KafkaSink + + +class KafkaSinkParser(Parser): + + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + return KafkaSink( + config["bootstrapServer"], + config["clientId"], + config["topic"], + self.dependencies["partition"].parse(config["partition"]) + ) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/sink/kafka/partition_parser.py b/src/distributed_event_factory/parser/sink/kafka/partition_parser.py new file mode 100644 index 0000000..93f7da7 --- /dev/null +++ b/src/distributed_event_factory/parser/sink/kafka/partition_parser.py @@ -0,0 +1,13 @@ +from distributed_event_factory.parser.parser import Parser + +class PartitionParser(Parser): + + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + return self.dependencies[config["type"]].parse(config) \ No newline at end of file diff --git a/src/distributed_event_factory/provider/activity/selection/activity_selection_provider.py b/src/distributed_event_factory/provider/activity/selection/activity_selection_provider.py index 031e109..a7f9c2c 100644 --- a/src/distributed_event_factory/provider/activity/selection/activity_selection_provider.py +++ b/src/distributed_event_factory/provider/activity/selection/activity_selection_provider.py @@ -2,6 +2,7 @@ class ActivitySelectionProvider(ABC): + @abstractmethod def emit_activity(self): pass diff --git a/src/distributed_event_factory/provider/datasource/sensor_topology.py b/src/distributed_event_factory/provider/datasource/sensor_topology.py index 2128baa..4b68d43 100644 --- a/src/distributed_event_factory/provider/datasource/sensor_topology.py +++ b/src/distributed_event_factory/provider/datasource/sensor_topology.py @@ -4,7 +4,7 @@ from distributed_event_factory.core.datasource import DataSource, StartDataSource, EndDataSource from distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID from distributed_event_factory.provider.sink.console.console_sink import PrintConsoleSinkProvider -from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider +from distributed_event_factory.provider.transition.transition.transition_provider import ChoiceTransitionProvider class DataSourceTopologyProvider: @@ -23,7 +23,7 @@ def get_sensor_topology(self, number_of_sensors): transitions[0] = 1.0 data_sources.append( StartDataSource( - transition_provider=NextSensorProvider(transitions), + transition_provider=ChoiceTransitionProvider(transitions), sender=PrintConsoleSinkProvider().get_sender(START_SENSOR_ID.get_name()))) for data_source in self.data_source_list: data_sources.append(data_source) diff --git a/src/distributed_event_factory/provider/event/event_data.py b/src/distributed_event_factory/provider/event/event_data.py index 22fa185..f806895 100644 --- a/src/distributed_event_factory/provider/event/event_data.py +++ b/src/distributed_event_factory/provider/event/event_data.py @@ -1,6 +1,6 @@ from distributed_event_factory.provider.activity.activity_provider import ActivityProvider from distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider -from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import AbstractNextSensorProvider +from distributed_event_factory.provider.transition.transition.transition_provider import TransitionProvider class EventData: @@ -8,7 +8,7 @@ def __init__( self, duration_provider: DurationProvider, activity_provider: ActivityProvider, - transition_provider: AbstractNextSensorProvider + transition_provider: TransitionProvider ): self.duration_provider = duration_provider self.activity_provider = activity_provider @@ -18,7 +18,7 @@ def get_duration(self): return self.duration_provider.get_duration() def get_next_sensor(self): - return self.transition_provider.get_next_sensor() + return self.transition_provider.get_transition() def get_activity(self): return self.activity_provider.get_activity() diff --git a/src/distributed_event_factory/provider/event/event_provider.py b/src/distributed_event_factory/provider/event/event_provider.py index 48f4046..788210a 100644 --- a/src/distributed_event_factory/provider/event/event_provider.py +++ b/src/distributed_event_factory/provider/event/event_provider.py @@ -2,14 +2,11 @@ from typing import List from distributed_event_factory.provider.activity.activity_provider import ConstantActivityProvider, ActivityProvider -from distributed_event_factory.provider.activity.selection.activity_selection_provider import \ - ActivitySelectionProvider from distributed_event_factory.provider.event.event_data import EventData -from distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider, \ - ConstantDurationProvider -from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, \ - ConstantNextSensorProvider, AbstractNextSensorProvider - +from distributed_event_factory.provider.transition.duration.constant_duration import ConstantDurationProvider +from distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider +from distributed_event_factory.provider.transition.transition.constant_transition import ConstantTransitionProvider +from distributed_event_factory.provider.transition.transition.transition_provider import TransitionProvider class EventDataProvider(ABC): @@ -33,7 +30,7 @@ def __init__( self, duration_provider: DurationProvider, activity_provider: ActivityProvider, - transition_provider: AbstractNextSensorProvider + transition_provider: TransitionProvider ): self.duration_provider = duration_provider self.activity_provider = activity_provider @@ -52,8 +49,8 @@ def get_activity(self): def get_duration(self): return self.duration_provider.get_duration() - def get_next_sensor(self): - return self.transition_provider.get_next_sensor() + def get_transition(self): + return self.transition_provider.get_transition() class StartEventProvider(EventDataProvider): @@ -74,5 +71,5 @@ def get_event_data(self): return EventData( ConstantDurationProvider(0), ConstantActivityProvider("end"), - ConstantNextSensorProvider(0), + ConstantTransitionProvider(0) ) diff --git a/src/distributed_event_factory/provider/event/event_provider_registry.py b/src/distributed_event_factory/provider/event/event_provider_registry.py index 4fc79c2..7267060 100644 --- a/src/distributed_event_factory/provider/event/event_provider_registry.py +++ b/src/distributed_event_factory/provider/event/event_provider_registry.py @@ -2,7 +2,7 @@ ActivitySelectionProviderRegistry from distributed_event_factory.provider.event.event_provider import EventDataProvider, CustomEventDataProvider from distributed_event_factory.provider.transition.duration.duration_registry import DurationProviderRegistry -from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider_registry import \ +from distributed_event_factory.provider.transition.transition.next_sensor_provider_registry import \ NextSensorProviderRegistry diff --git a/src/distributed_event_factory/provider/eventselection/README.md b/src/distributed_event_factory/provider/eventselection/README.md deleted file mode 100644 index bc8572d..0000000 --- a/src/distributed_event_factory/provider/eventselection/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Event Selection - -The event selection function defines how an event is selected from possibly multiple defined -events that could be produced by a datasource. - -Currently, these event selection functions are supported: - -- By Probability Distribution -- In Order -- Random with uniform distribution \ No newline at end of file diff --git a/src/distributed_event_factory/provider/eventselection/uniform_selction_provider.py b/src/distributed_event_factory/provider/eventselection/uniform_selction_provider.py index 7ac032e..a05c0c4 100644 --- a/src/distributed_event_factory/provider/eventselection/uniform_selction_provider.py +++ b/src/distributed_event_factory/provider/eventselection/uniform_selction_provider.py @@ -1,3 +1,4 @@ +import random from typing import List from distributed_event_factory.provider.event.event_provider import EventDataProvider @@ -9,5 +10,4 @@ def __init__(self, potential_events: List[EventDataProvider]): self.potential_events = potential_events def get_event_data(self): - import random return self.potential_events[int(random.uniform(0, len(self.potential_events)))] diff --git a/src/distributed_event_factory/provider/generic/__init__.py b/src/distributed_event_factory/provider/generic/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/distributed_event_factory/provider/generic/count_provider.py b/src/distributed_event_factory/provider/generic/count_provider.py deleted file mode 100644 index d1fa355..0000000 --- a/src/distributed_event_factory/provider/generic/count_provider.py +++ /dev/null @@ -1,25 +0,0 @@ -import random -from abc import abstractmethod - - -class CountProvider: - @abstractmethod - def get(self): - pass - - -class StaticCountProvider(CountProvider): - def __init__(self, count): - self.count = count - - def get(self): - return self.count - - -class UniformCountProvider(CountProvider): - def __init__(self, minimal_value, maximal_value): - self.minimal_value = minimal_value - self.maximal_value = maximal_value - - def get(self): - return int(int(random.uniform(self.minimal_value, self.maximal_value))) diff --git a/src/distributed_event_factory/provider/generic/count_provider_registry.py b/src/distributed_event_factory/provider/generic/count_provider_registry.py deleted file mode 100644 index 563292f..0000000 --- a/src/distributed_event_factory/provider/generic/count_provider_registry.py +++ /dev/null @@ -1,10 +0,0 @@ -from distributed_event_factory.provider.generic.count_provider import CountProvider, StaticCountProvider, \ - UniformCountProvider - - -class CountProviderRegistry: - def get(self, config) -> CountProvider: - registry = dict() - registry["static"] = lambda config: StaticCountProvider(config["count"]) - registry["uniform"] = lambda config: UniformCountProvider(config["min"], config["max"]) - return registry[config["type"]](config) diff --git a/src/distributed_event_factory/provider/provider_registry.py b/src/distributed_event_factory/provider/provider_registry.py deleted file mode 100644 index 9338809..0000000 --- a/src/distributed_event_factory/provider/provider_registry.py +++ /dev/null @@ -1,23 +0,0 @@ -from distributed_event_factory.provider.data.case_provider import CaseIdProviderRegistry -from distributed_event_factory.provider.datasource.sensor_topology_registry import DataSourceProviderRegistry -from distributed_event_factory.provider.generic.count_provider_registry import CountProviderRegistry -from distributed_event_factory.provider.load.load_provider_registry import LoadProviderRegistry -from distributed_event_factory.provider.transition.duration.duration_registry import DurationProviderRegistry -from distributed_event_factory.simulation.eventloop.event_loop_registry import EventLoopRegistry - -providers = dict() -providers["numberOfDataSources"] = lambda config, field: CountProviderRegistry().get(config[field]) -providers["caseId"] = lambda config, field: CaseIdProviderRegistry().get(config[field]) -providers["duration"] = lambda config, field: DurationProviderRegistry().get(config[field]) -providers["eventLoop"] = lambda config, field: EventLoopRegistry().get(config) -providers["loadProfile"] = lambda config, field: LoadProviderRegistry().get(config[field]) -providers["dataSourceTopology"] = lambda config, field: DataSourceProviderRegistry().get(config[field]) - - -class ProviderRegistry: - - def __init__(self, configuration): - self.configuration = configuration - - def get(self, field): - return providers[field](self.configuration, field) diff --git a/src/distributed_event_factory/provider/sink/console/console_sink.py b/src/distributed_event_factory/provider/sink/console/console_sink.py index 7ba352a..f63c210 100644 --- a/src/distributed_event_factory/provider/sink/console/console_sink.py +++ b/src/distributed_event_factory/provider/sink/console/console_sink.py @@ -1,4 +1,4 @@ -from distributed_event_factory.core.event import AbstractEvent, Event +from distributed_event_factory.core.event import Event from distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider diff --git a/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py b/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py index b7e4d5d..4d00c9e 100644 --- a/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py +++ b/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py @@ -1,11 +1,9 @@ import json import string -from scheduled_futures import ScheduledThreadPoolExecutor - -from distributed_event_factory.core.event import AbstractEvent +from distributed_event_factory.core.event import Event from distributed_event_factory.provider.sink.kafka.partition.partition_provider import PartitionProvider -from distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider +from distributed_event_factory.provider.sink.sink_provider import Sink class KafkaSink(Sink): @@ -20,36 +18,10 @@ def __init__(self, bootstrap_server_url: string, client_id: string, topic: strin ) self.topic = topic self.partition_provider = partition_provider - self.executor = ScheduledThreadPoolExecutor() - - def kSend(self, event): - self.producer.send( - self.topic, - value=json.dumps(event.__dict__), - key=event.get_case(), - partition=self.partition_provider.get_partition(event)) - def send(self, event: AbstractEvent) -> None: - #self.executor.submit(lambda: self.kSend(event)) + def send(self, event: Event) -> None: self.producer.send( self.topic, value=json.dumps(event.__dict__), key=event.get_case(), partition=self.partition_provider.get_partition(event)) - #.add_callback(lambda record_metadata: print(record_metadata))) - - -class KafkaSinkProvider(SinkProvider): - - def __init__(self, bootstrap_server: string, topic: string, partition_provider: PartitionProvider): - self.bootstrapServer = bootstrap_server - self.topic = topic - self.partition_provider = partition_provider - - def get_sender(self, id) -> Sink: - return KafkaSink( - bootstrap_server_url=self.bootstrapServer, - client_id=str(id), - partition_provider=self.partition_provider, - topic=self.topic - ) diff --git a/src/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py b/src/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py index 4d176fa..3d7a868 100644 --- a/src/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py +++ b/src/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py @@ -1,10 +1,8 @@ import json -import string -from distributed_event_factory.core.event import AbstractEvent -from distributed_event_factory.provider.sink.kafka.partition.partition_provider import ConstantPartitionProvider, \ - PartitionProvider -from distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider +from distributed_event_factory.core.event import Event +from distributed_event_factory.provider.sink.kafka.partition.partition_provider import ConstantPartitionProvider +from distributed_event_factory.provider.sink.sink_provider import Sink class KafkaValidationSink(Sink): @@ -30,7 +28,7 @@ def __init__( self.validation_topic = validation_topic self.validation_split = validation_split - def send(self, event: AbstractEvent) -> None: + def send(self, event: Event) -> None: if hash(event.get_case()) % self.validation_split == 0: send_topic = self.validation_topic send_partition = ConstantPartitionProvider(partition=0) @@ -44,29 +42,3 @@ def send(self, event: AbstractEvent) -> None: key=event.get_case(), partition=send_partition.get_partition(event) ).add_callback(lambda record_metadata: print(record_metadata)) - - -class KafkaValidationSinkProvider(SinkProvider): - def __init__( - self, - bootstrap_server: string, - topic: string, - partition_provider: PartitionProvider, - validation_topic: string, - validation_split: string - ): - self.bootstrapServer = bootstrap_server - self.topic = topic - self.partition_provider = partition_provider - self.validation_topic = validation_topic - self.validation_split = validation_split - - def get_sender(self, id) -> Sink: - return KafkaValidationSink( - bootstrap_server_url=self.bootstrapServer, - client_id=str(id), - topic=self.topic, - partition_provider=self.partition_provider, - validation_topic=self.validation_topic, - validation_split=self.validation_split - ) diff --git a/src/distributed_event_factory/provider/sink/kafka/partition/README.md b/src/distributed_event_factory/provider/sink/kafka/partition/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/src/distributed_event_factory/provider/sink/kafka/partition/case_partition.py b/src/distributed_event_factory/provider/sink/kafka/partition/case_partition.py new file mode 100644 index 0000000..030a2ba --- /dev/null +++ b/src/distributed_event_factory/provider/sink/kafka/partition/case_partition.py @@ -0,0 +1,10 @@ +from distributed_event_factory.core.event import Event +from distributed_event_factory.provider.sink.kafka.partition.partition_provider import PartitionProvider + + +class CaseIdPartitionProvider(PartitionProvider): + def __init__(self, number_of_partitions): + self.max_number_of_partitions = number_of_partitions + + def get_partition(self, event: Event) -> int: + return hash(event.get_case()) % self.max_number_of_partitions diff --git a/src/distributed_event_factory/provider/sink/kafka/partition/constant_partition.py b/src/distributed_event_factory/provider/sink/kafka/partition/constant_partition.py new file mode 100644 index 0000000..605a4d2 --- /dev/null +++ b/src/distributed_event_factory/provider/sink/kafka/partition/constant_partition.py @@ -0,0 +1,10 @@ +from distributed_event_factory.provider.sink.kafka.partition.partition_provider import PartitionProvider + + +class ConstantPartitionProvider(PartitionProvider): + + def __init__(self, partition): + self.partition = partition + + def get_partition(self, event): + return self.partition diff --git a/src/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py b/src/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py index b88a192..1e50eda 100644 --- a/src/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py +++ b/src/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py @@ -1,28 +1,9 @@ from abc import ABC, abstractmethod - -from distributed_event_factory.core.event import AbstractEvent, Event +from distributed_event_factory.core.event import Event class PartitionProvider(ABC): @abstractmethod - def get_partition(self, event: AbstractEvent) -> int: + def get_partition(self, event: Event): pass - -class ConstantPartitionProvider(PartitionProvider): - - def __init__(self, partition): - self.partition = partition - - def get_partition(self, event): - return self.partition - - -class CaseIdPartitionProvider(PartitionProvider): - def __init__(self, max_number_of_partitions): - self.max_number_of_partitions = max_number_of_partitions - - def get_partition(self, event: Event) -> int: - return hash(event.case_id) % self.max_number_of_partitions - - diff --git a/src/distributed_event_factory/provider/sink/kafka/partition/partition_registry.py b/src/distributed_event_factory/provider/sink/kafka/partition/partition_registry.py deleted file mode 100644 index b595349..0000000 --- a/src/distributed_event_factory/provider/sink/kafka/partition/partition_registry.py +++ /dev/null @@ -1,11 +0,0 @@ -from distributed_event_factory.provider.sink.kafka.partition.partition_provider import ConstantPartitionProvider, \ - CaseIdPartitionProvider - - -class PartitionProviderRegistry: - - def get(self, config): - registry = dict() - registry["constant"] = lambda config: ConstantPartitionProvider(config["number"]) - registry["caseId"] = lambda config: CaseIdPartitionProvider(config["numberPartitions"]) - return registry[config["type"]](config) \ No newline at end of file diff --git a/src/distributed_event_factory/provider/sink/sink_provider.py b/src/distributed_event_factory/provider/sink/sink_provider.py index 07c1793..90e2680 100644 --- a/src/distributed_event_factory/provider/sink/sink_provider.py +++ b/src/distributed_event_factory/provider/sink/sink_provider.py @@ -1,12 +1,12 @@ import abc -from distributed_event_factory.core.event import AbstractEvent +from distributed_event_factory.core.event import Event class Sink: @abc.abstractmethod - def send(self, event: AbstractEvent) -> None: + def send(self, event: Event) -> None: pass diff --git a/src/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py b/src/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py index bae1e35..a1d2221 100644 --- a/src/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py +++ b/src/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py @@ -1,4 +1,4 @@ -from distributed_event_factory.core.event import AbstractEvent +from distributed_event_factory.core.event import Event from distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider from distributed_event_factory.view.terminal import Terminal @@ -6,7 +6,7 @@ class TerminalGui(Sink): def __init__(self, terminal): self.terminal: Terminal = terminal - def send(self, event: AbstractEvent): + def send(self, event: Event): self.terminal.print(event) class UiSink(Sink): @@ -14,7 +14,7 @@ def __init__(self, id, data_source_ref): self.ui = Terminal(title=id, start_position=0) self.data_source_ref = data_source_ref - def send(self, event: AbstractEvent) -> None: + def send(self, event: Event) -> None: self.ui.print(event) diff --git a/src/distributed_event_factory/provider/transition/duration/constant_duration.py b/src/distributed_event_factory/provider/transition/duration/constant_duration.py new file mode 100644 index 0000000..7bb242f --- /dev/null +++ b/src/distributed_event_factory/provider/transition/duration/constant_duration.py @@ -0,0 +1,8 @@ +from distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider + +class ConstantDurationProvider(DurationProvider): + def __init__(self, duration): + self.duration = duration + + def get_duration(self): + return self.duration diff --git a/src/distributed_event_factory/provider/transition/duration/duration_provider.py b/src/distributed_event_factory/provider/transition/duration/duration_provider.py index 67315bd..dde1cd2 100644 --- a/src/distributed_event_factory/provider/transition/duration/duration_provider.py +++ b/src/distributed_event_factory/provider/transition/duration/duration_provider.py @@ -1,36 +1,7 @@ -import random from abc import abstractmethod class DurationProvider: @abstractmethod def get_duration(self): - pass - - -class UniformDurationProvider(DurationProvider): - - def __init__(self, lower_bound, upper_bound): - self.lower_border = lower_bound - self.upper_border = upper_bound - - def get_duration(self): - return random.uniform(self.lower_border, self.upper_border) - - -class ConstantDurationProvider(DurationProvider): - def __init__(self, duration): - self.duration = duration - - def get_duration(self): - return self.duration - - -class GaussianDurationProvider(DurationProvider): - def __init__(self, mu, sigma): - self.mu = mu - self.sigma = sigma - - def get_duration(self): - return random.gauss(mu=self.mu, sigma=self.sigma) - + pass \ No newline at end of file diff --git a/src/distributed_event_factory/provider/transition/duration/duration_registry.py b/src/distributed_event_factory/provider/transition/duration/duration_registry.py deleted file mode 100644 index a38805a..0000000 --- a/src/distributed_event_factory/provider/transition/duration/duration_registry.py +++ /dev/null @@ -1,15 +0,0 @@ -from distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider, ConstantDurationProvider, \ - UniformDurationProvider, GaussianDurationProvider - - -class DurationProviderRegistry(DurationProvider): - def get(self, config) -> DurationProvider: - registry = dict() - registry["static"] = lambda config: ConstantDurationProvider(config["duration"]) - registry["uniform"] = lambda config: UniformDurationProvider(config["lowerBound"], config["upperBound"]) - registry["gaussian"] = lambda config: GaussianDurationProvider(config["mu"], config["sigma"]) - - if type(config) is int: - return ConstantDurationProvider(config) - - return registry[config["type"]](config) diff --git a/src/distributed_event_factory/provider/transition/duration/gaussian_duration.py b/src/distributed_event_factory/provider/transition/duration/gaussian_duration.py new file mode 100644 index 0000000..da6edf5 --- /dev/null +++ b/src/distributed_event_factory/provider/transition/duration/gaussian_duration.py @@ -0,0 +1,12 @@ +import random + +from distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider + + +class GaussianDurationProvider(DurationProvider): + def __init__(self, mu, sigma): + self.mu = mu + self.sigma = sigma + + def get_duration(self): + return random.gauss(mu=self.mu, sigma=self.sigma) \ No newline at end of file diff --git a/src/distributed_event_factory/provider/transition/duration/uniform_duration.py b/src/distributed_event_factory/provider/transition/duration/uniform_duration.py new file mode 100644 index 0000000..e72a0cc --- /dev/null +++ b/src/distributed_event_factory/provider/transition/duration/uniform_duration.py @@ -0,0 +1,13 @@ +import random + +from distributed_event_factory.provider.transition.duration.duration_provider import DurationProvider + + +class UniformDurationProvider(DurationProvider): + + def __init__(self, lower_bound, upper_bound): + self.lower_border = lower_bound + self.upper_border = upper_bound + + def get_duration(self): + return random.uniform(self.lower_border, self.upper_border) diff --git a/src/distributed_event_factory/provider/transition/next_state_provider.py b/src/distributed_event_factory/provider/transition/next_state_provider.py deleted file mode 100644 index c1a51a2..0000000 --- a/src/distributed_event_factory/provider/transition/next_state_provider.py +++ /dev/null @@ -1,30 +0,0 @@ -from abc import abstractmethod -import random -from typing import List - - -class ProbabilityDistributionProvider: - - @abstractmethod - def get_next_states(self, number_of_data_sources) -> List[int]: - pass - - -def get_random_distinct(max_length, count) -> List[int]: - random_elements: List[int] = [] - if count > max_length: - raise ValueError("Count must be smaller than array length") - while len(random_elements) < count: - next_element = int(random.uniform(0, max_length)) - if next_element not in random_elements: - random_elements.append(next_element) - return random_elements - - -class DistinctProbabilityDistributionProvider(ProbabilityDistributionProvider): - def __init__(self, number_of_next_state_provider): - self.number_of_next_state_provider = number_of_next_state_provider - - def get_next_states(self, possible_next_state) -> List[int]: - number_of_next_state = self.number_of_next_state_provider.get() - return get_random_distinct(possible_next_state, number_of_next_state) diff --git a/src/distributed_event_factory/provider/transition/nextsensor/__init__.py b/src/distributed_event_factory/provider/transition/nextsensor/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider_registry.py b/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider_registry.py deleted file mode 100644 index 0cd9e20..0000000 --- a/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider_registry.py +++ /dev/null @@ -1,14 +0,0 @@ -from distributed_event_factory.provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, ConstantNextSensorProvider - -class NextSensorProviderRegistry: - - def get(self, config): - registry = dict() - - registry["classic"] = lambda config: NextSensorProvider(config["transition"]) - registry["next_sensor"] = lambda config: ConstantNextSensorProvider(config["index"]) - - if type(config) is int: - return ConstantNextSensorProvider(config) - - return registry[config["type"]](config) \ No newline at end of file diff --git a/src/distributed_event_factory/config/experiment/__init__.py b/src/distributed_event_factory/provider/transition/transition/__init__.py similarity index 100% rename from src/distributed_event_factory/config/experiment/__init__.py rename to src/distributed_event_factory/provider/transition/transition/__init__.py diff --git a/src/distributed_event_factory/provider/transition/transition/constant_transition.py b/src/distributed_event_factory/provider/transition/transition/constant_transition.py new file mode 100644 index 0000000..46dcc5e --- /dev/null +++ b/src/distributed_event_factory/provider/transition/transition/constant_transition.py @@ -0,0 +1,8 @@ +from distributed_event_factory.provider.transition.transition_provider import TransitionProvider + +class ConstantTransitionProvider(TransitionProvider): + def __init__(self, next_sensor_index): + self.next_sensor_index = next_sensor_index + + def get_transition(self): + return self.next_sensor_index diff --git a/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider.py b/src/distributed_event_factory/provider/transition/transition/transition_provider.py similarity index 56% rename from src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider.py rename to src/distributed_event_factory/provider/transition/transition/transition_provider.py index 63e9c48..224e814 100644 --- a/src/distributed_event_factory/provider/transition/nextsensor/next_sensor_provider.py +++ b/src/distributed_event_factory/provider/transition/transition/transition_provider.py @@ -1,18 +1,18 @@ from abc import ABC, abstractmethod import numpy -class AbstractNextSensorProvider(ABC): +class TransitionProvider(ABC): @abstractmethod - def get_next_sensor(self): + def get_transition(self): pass -class NextSensorProvider(AbstractNextSensorProvider): +class ChoiceTransitionProvider(TransitionProvider): def __init__(self, probability_distribution): self.probability_distribution = probability_distribution - def get_next_sensor(self) -> int: + def get_transition(self) -> int: return numpy.random.choice(len(self.probability_distribution), p=numpy.array(self.probability_distribution)) @@ -20,17 +20,11 @@ class NextSensorChooseProvider: def __init__(self, number_of_data_sources): self.number_of_sensors = number_of_data_sources - def get(self, probability_distribution) -> NextSensorProvider: + def get(self, probability_distribution) -> ChoiceTransitionProvider: distribution = probability_distribution[0:self.number_of_sensors - 1] remaining_probability = 1.0 - sum(distribution) distribution.append(remaining_probability) - return NextSensorProvider(distribution) + return ChoiceTransitionProvider(distribution) -class ConstantNextSensorProvider(AbstractNextSensorProvider): - def __init__(self, next_sensor_index): - self.next_sensor_index = next_sensor_index - - def get_next_sensor(self): - return self.next_sensor_index diff --git a/src/distributed_event_factory/provider/transition/transition_matrix_creation_strategy.py b/src/distributed_event_factory/provider/transition/transition_matrix_creation_strategy.py deleted file mode 100644 index 12ceafe..0000000 --- a/src/distributed_event_factory/provider/transition/transition_matrix_creation_strategy.py +++ /dev/null @@ -1,52 +0,0 @@ -from abc import ABC, abstractmethod -import random - -from provider.generic.count_provider_registry import CountProviderRegistry -from provider.transition.nextsensor.next_sensor_provider import NextSensorProvider, NextSensorChooseProvider -from provider.transition.next_state_provider import DistinctProbabilityDistributionProvider - - -class TransitionMatrixCreationStrategy(ABC): - @abstractmethod - def next(self, number_of_sensors) -> NextSensorProvider: - pass - - -class RandomTransitionMatrixCreationStrategy(TransitionMatrixCreationStrategy): - - def __init__(self, probability_distribution): - self.transition_indices_provider = probability_distribution - - def next(self, number_of_sensors) -> NextSensorProvider: - transition_indices = self.transition_indices_provider.get_next_states(number_of_sensors) - random_numbers = [0.0] * number_of_sensors - remaining_prob = 1.0 - for i in range(len(transition_indices) - 1): - random_value = round(random.random() * remaining_prob, 2) - remaining_prob -= random_value - random_numbers[transition_indices[i]] = random_value - - if remaining_prob > 0: - random_numbers[transition_indices[len(transition_indices) - 1]] = round(remaining_prob, 2) - return NextSensorChooseProvider(number_of_sensors).get(random_numbers) - - -class RandomTransitionMatrixProviderRegistry: - - def __init__(self): - self.number_of_next_sensors_provider_registry = CountProviderRegistry() - - def get(self, type: str, args) -> RandomTransitionMatrixCreationStrategy: - registry = dict() - registry["random"] = lambda config: ( - RandomTransitionMatrixCreationStrategy( - probability_distribution= - DistinctProbabilityDistributionProvider( - number_of_next_state_provider= - self.number_of_next_sensors_provider_registry.get( - config["numberOfTransitions"] - ) - ) - ) - ) - return registry[type](args) diff --git a/src/distributed_event_factory/provider/transition/transition_probability_provider.py b/src/distributed_event_factory/provider/transition/transition_probability_provider.py deleted file mode 100644 index b2c1645..0000000 --- a/src/distributed_event_factory/provider/transition/transition_probability_provider.py +++ /dev/null @@ -1,28 +0,0 @@ -import abc -from abc import abstractmethod -from typing import List - - -class TransitionProbabilityProvider: - - @abstractmethod - def get_transition_probabilities(self): - pass - - -class MatrixBasedTransitionProvider(TransitionProbabilityProvider): - - def __init__(self, transition_matrix: List[List[float]]): - self.transition_matrix = transition_matrix - self.transition_iterator = iter(transition_matrix) - - def get_transition_probabilities(self) -> List[float]: - return next(self.transition_iterator) - - -class TransitionProbabilityProviderFactory(abc.ABC): - - @abc.abstractmethod - def get(self, number_of_data_sources): - pass - diff --git a/src/distributed_event_factory/provider/transition/transition_provider.py b/src/distributed_event_factory/provider/transition/transition_provider.py index eecfae8..df9e763 100644 --- a/src/distributed_event_factory/provider/transition/transition_provider.py +++ b/src/distributed_event_factory/provider/transition/transition_provider.py @@ -3,7 +3,7 @@ class TransitionProvider(ABC): @abstractmethod - def get_next_sensor(self) -> int: + def get_transition(self) -> int: pass diff --git a/src/distributed_event_factory/simulation/new_process_simulation.py b/src/distributed_event_factory/simulation/new_process_simulation.py index da58a35..dd08695 100644 --- a/src/distributed_event_factory/simulation/new_process_simulation.py +++ b/src/distributed_event_factory/simulation/new_process_simulation.py @@ -30,11 +30,11 @@ def simulate(self) -> Event: token = self.start_new_case() if token.data_source_id == START_SENSOR_ID: - token.data_source_id = DataSourceId(self._get_sensor_with_id(START_SENSOR_ID).get_event_data().get_next_sensor()) + token.data_source_id = DataSourceId(self._get_sensor_with_id(START_SENSOR_ID).get_event_data().get_transition()) current_data_source = self._get_sensor_with_id(token.data_source_id) event = current_data_source.get_event_data() - next_datasource = event.get_next_sensor() + next_datasource = event.get_transition() activity = event.get_activity() token.add_to_last_timestamp(event.get_duration()) token.set_data_source_id(self.datasources[next_datasource].get_id()) diff --git a/src/distributed_event_factory/simulation/new_simulation.py b/src/distributed_event_factory/simulation/new_simulation.py index 3a9ed94..b27acf1 100644 --- a/src/distributed_event_factory/simulation/new_simulation.py +++ b/src/distributed_event_factory/simulation/new_simulation.py @@ -39,6 +39,7 @@ def run_simulation(self, datasources, sinks): case_id_provider=self.case_id_provider, data_sources=datasources ) + process_simulator.simulate() while True: with ScheduledThreadPoolExecutor() as executor: #self.start() diff --git a/src/distributed_event_factory/simulation/process_simulator.py b/src/distributed_event_factory/simulation/process_simulator.py index 5e9b8e5..14d5375 100644 --- a/src/distributed_event_factory/simulation/process_simulator.py +++ b/src/distributed_event_factory/simulation/process_simulator.py @@ -27,7 +27,7 @@ def simulate(self) -> Event: token = self.tokens[int(random.uniform(0, len(self.tokens)))] current_data_source = self._get_sensor_with_id(token.data_source_id) event = current_data_source.get_event_provider().get_event_data() - next_datasource = event.get_next_sensor() + next_datasource = event.get_transition() if token.data_source_id == END_DATA_SOURCE_ID: event=current_data_source.emit_event(token.case, event.get_activity(), token.last_timestamp) From 53091cf4851e4b3ac2b4577c3887abc9f8ffee18 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Wed, 16 Oct 2024 10:52:45 +0200 Subject: [PATCH 015/124] larger refactoring --- .../selection/uniform_event_selection.py | 12 ++++++ .../parser/parser_registry.py | 9 ++-- .../provider/datasource/README.md | 26 ------------ .../provider/datasource/sensor_topology.py | 13 +++--- .../datasource/sensor_topology_builder.py | 15 ------- .../datasource/sensor_topology_registry.py | 17 -------- .../provider/event/event_provider_registry.py | 22 ---------- .../event_selection_provider_registry.py | 41 ------------------- 8 files changed, 22 insertions(+), 133 deletions(-) create mode 100644 src/distributed_event_factory/parser/datasource/event/selection/uniform_event_selection.py delete mode 100644 src/distributed_event_factory/provider/datasource/README.md delete mode 100644 src/distributed_event_factory/provider/datasource/sensor_topology_builder.py delete mode 100644 src/distributed_event_factory/provider/datasource/sensor_topology_registry.py delete mode 100644 src/distributed_event_factory/provider/event/event_provider_registry.py delete mode 100644 src/distributed_event_factory/provider/eventselection/event_selection_provider_registry.py diff --git a/src/distributed_event_factory/parser/datasource/event/selection/uniform_event_selection.py b/src/distributed_event_factory/parser/datasource/event/selection/uniform_event_selection.py new file mode 100644 index 0000000..73665a2 --- /dev/null +++ b/src/distributed_event_factory/parser/datasource/event/selection/uniform_event_selection.py @@ -0,0 +1,12 @@ +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.eventselection.uniform_selction_provider import UniformEventSelectionProvider + + +class UniformEventSelectionParser(Parser): + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return UniformEventSelectionProvider( + potential_events=config["eventData"] + ) \ No newline at end of file diff --git a/src/distributed_event_factory/parser/parser_registry.py b/src/distributed_event_factory/parser/parser_registry.py index fbb48e1..0118ca7 100644 --- a/src/distributed_event_factory/parser/parser_registry.py +++ b/src/distributed_event_factory/parser/parser_registry.py @@ -12,6 +12,8 @@ GenericProbabilityEventSelectionParser from distributed_event_factory.parser.datasource.event.selection.ordered_event_selection_parser import \ OrderedEventSelectionParser +from distributed_event_factory.parser.datasource.event.selection.uniform_event_selection import \ + UniformEventSelectionParser from distributed_event_factory.parser.datasource.event.transition.transition_parser import TransitionParser from distributed_event_factory.parser.simulation.case.case_id_parser import CaseIdParser from distributed_event_factory.parser.datasource.data_source_parser import DataSourceParser @@ -31,10 +33,6 @@ from distributed_event_factory.parser.sink.sink_parser import SinkParser from distributed_event_factory.parser.sink.ui_sink_parser import UiSinkParser from distributed_event_factory.provider.data.case_provider import IncreasingCaseIdProvider -from distributed_event_factory.provider.eventselection.generic_probability_event_selection_provider import \ - GenericProbabilityEventSelectionProvider -from distributed_event_factory.provider.eventselection.ordered_selection_provider import OrderedEventSelectionProvider -from distributed_event_factory.provider.sink.kafka.partition.case_partition import CaseIdPartitionProvider class ParserRegistry: @@ -81,6 +79,8 @@ def __init__(self): # Distribution self.distribution_parser = (DistributionParser()) + + self.uniform_event_selection_parser = (UniformEventSelectionParser()) self.ordered_event_selection_parser = (OrderedEventSelectionParser()) self.drifting_selection_parser = (DriftingProbabilityEventSelectionParser() @@ -95,6 +95,7 @@ def __init__(self): # Event Selection self.event_selection_parser = (EventSelectionParser() .add_dependency("ordered", self.ordered_event_selection_parser) + .add_dependency("uniform", self.uniform_event_selection_parser) .add_dependency("genericProbability", self.probability_selection_parser) .add_dependency("driftingProbability", self.drifting_selection_parser)) diff --git a/src/distributed_event_factory/provider/datasource/README.md b/src/distributed_event_factory/provider/datasource/README.md deleted file mode 100644 index 6957aa4..0000000 --- a/src/distributed_event_factory/provider/datasource/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# Data Source - -Data Sources are the heart of DEF. They are defined by 3 properties: - -- `name:` Simply the name of the data source -- `groupId:` The name of the group it belongs to -- [`eventGenerator:`](../event/README.md) A method which defines which events it produces -- [`sink:`](../sink/README.md) A sik nk where it sends the generated events to - -## Default sink -Instead of giving each data source its own sink a default sink can be defined which applies for all sink. - -It is defined in this way: -```yaml -defaultSink: - type: console -``` - -## Example Configuration -An exemplary example of a data source looks like this -```yaml -name: "GoodsDelivery" -groupId: "factory" -eventGeneration: [...] -sink: console -``` \ No newline at end of file diff --git a/src/distributed_event_factory/provider/datasource/sensor_topology.py b/src/distributed_event_factory/provider/datasource/sensor_topology.py index 4b68d43..c4b85fd 100644 --- a/src/distributed_event_factory/provider/datasource/sensor_topology.py +++ b/src/distributed_event_factory/provider/datasource/sensor_topology.py @@ -1,9 +1,9 @@ from abc import abstractmethod from typing import List -from distributed_event_factory.core.datasource import DataSource, StartDataSource, EndDataSource -from distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID -from distributed_event_factory.provider.sink.console.console_sink import PrintConsoleSinkProvider +from distributed_event_factory.core.datasource import DataSource +from distributed_event_factory.core.end_datasource import EndDataSource +from distributed_event_factory.core.start_datasource import StartDataSource from distributed_event_factory.provider.transition.transition.transition_provider import ChoiceTransitionProvider @@ -21,12 +21,9 @@ def get_sensor_topology(self, number_of_sensors): data_sources = [] transitions = [0.0] * number_of_sensors transitions[0] = 1.0 - data_sources.append( - StartDataSource( - transition_provider=ChoiceTransitionProvider(transitions), - sender=PrintConsoleSinkProvider().get_sender(START_SENSOR_ID.get_name()))) + data_sources.append(StartDataSource(transition_provider=ChoiceTransitionProvider(transitions))) for data_source in self.data_source_list: data_sources.append(data_source) - data_sources.append(EndDataSource(sender=PrintConsoleSinkProvider().get_sender(END_DATA_SOURCE_ID.get_name()))) + data_sources.append(EndDataSource()) return data_sources diff --git a/src/distributed_event_factory/provider/datasource/sensor_topology_builder.py b/src/distributed_event_factory/provider/datasource/sensor_topology_builder.py deleted file mode 100644 index 2304800..0000000 --- a/src/distributed_event_factory/provider/datasource/sensor_topology_builder.py +++ /dev/null @@ -1,15 +0,0 @@ -from typing import List - -from distributed_event_factory.core.datasource import DataSource -from distributed_event_factory.provider.datasource.sensor_topology import ConcreteDataSourceTopologyProvider - -class SensorTopologyBuilder: - - def __init__(self): - self.datasources: List[DataSource] = [] - - def add_datasource(self, datasource: DataSource): - self.datasources.append(datasource) - - def build(self): - return ConcreteDataSourceTopologyProvider(data_source_list=self.datasources) \ No newline at end of file diff --git a/src/distributed_event_factory/provider/datasource/sensor_topology_registry.py b/src/distributed_event_factory/provider/datasource/sensor_topology_registry.py deleted file mode 100644 index 85038e5..0000000 --- a/src/distributed_event_factory/provider/datasource/sensor_topology_registry.py +++ /dev/null @@ -1,17 +0,0 @@ -from distributed_event_factory.provider.datasource.data_source_registry import DataSourceRegistry -from distributed_event_factory.provider.datasource.sensor_topology import DataSourceTopologyProvider, \ - ConcreteDataSourceTopologyProvider -from distributed_event_factory.provider.sink.sink_provider_registry import SinkProviderRegistry - -class DataSourceProviderRegistry: - - def get(self, config) -> DataSourceTopologyProvider: - registry = dict() - - registry["concrete"] = lambda config: ConcreteDataSourceTopologyProvider( - data_source_list=DataSourceRegistry().get( - data_source_definitions=config["dataSources"], - default_sink=SinkProviderRegistry().get(config=config["defaultSink"]) - ) - ) - return registry["concrete"](config) diff --git a/src/distributed_event_factory/provider/event/event_provider_registry.py b/src/distributed_event_factory/provider/event/event_provider_registry.py deleted file mode 100644 index 7267060..0000000 --- a/src/distributed_event_factory/provider/event/event_provider_registry.py +++ /dev/null @@ -1,22 +0,0 @@ -from distributed_event_factory.provider.activity.selection.activity_selection_provider_registry import \ - ActivitySelectionProviderRegistry -from distributed_event_factory.provider.event.event_provider import EventDataProvider, CustomEventDataProvider -from distributed_event_factory.provider.transition.duration.duration_registry import DurationProviderRegistry -from distributed_event_factory.provider.transition.transition.next_sensor_provider_registry import \ - NextSensorProviderRegistry - - -class EventProviderRegistry: - - def get(self, config) -> EventDataProvider: - registry = dict() - registry["classic"] = lambda config: ( - CustomEventDataProvider( - duration_provider=DurationProviderRegistry().get(config=config["duration"]), - transition_provider=NextSensorProviderRegistry().get(config["transition"]), - activity_provider=ActivitySelectionProviderRegistry() - .get(config=config["activity"]) - .get_activity_provider(), - )) - - return registry["classic"](config) diff --git a/src/distributed_event_factory/provider/eventselection/event_selection_provider_registry.py b/src/distributed_event_factory/provider/eventselection/event_selection_provider_registry.py deleted file mode 100644 index 31dd4a2..0000000 --- a/src/distributed_event_factory/provider/eventselection/event_selection_provider_registry.py +++ /dev/null @@ -1,41 +0,0 @@ -from typing import List - -from distributed_event_factory.provider.event.event_provider import EventDataProvider -from distributed_event_factory.provider.event.event_provider_registry import EventProviderRegistry -from distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider -from distributed_event_factory.provider.eventselection.generic_probability_event_selection_provider import \ - GenericProbabilityEventSelectionProvider -from distributed_event_factory.provider.eventselection.ordered_selection_provider import \ - OrderedEventSelectionProvider -from distributed_event_factory.provider.eventselection.uniform_selction_provider import \ - UniformEventSelectionProvider - - -class EventSelectionProviderRegistry: - - def _transform_list(self, config): - event_providers: List[EventDataProvider] = [] - events = config["events"] - for event in events: - event_providers.append(EventProviderRegistry().get(event)) - return event_providers - - def get(self, config) -> EventSelectionProvider: - registry = dict() - registry["uniform"] = lambda config: ( - UniformEventSelectionProvider( - potential_events=self._transform_list(config["from"]) - ) - ) - registry["ordered"] = lambda config: ( - OrderedEventSelectionProvider( - potential_events=self._transform_list(config["from"]) - ) - ) - registry["genericProbability"] = lambda config: ( - GenericProbabilityEventSelectionProvider( - probability_distribution=config["distribution"], - potential_events=self._transform_list(config["from"]) - ) - ) - return registry[config["selection"]](config) From 423e3d82df24522a5ae318a5a5c4f9d765889b16 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Wed, 16 Oct 2024 11:51:15 +0200 Subject: [PATCH 016/124] larger refactoring --- README.md | 2 +- .../assemblyline/d0-start.yaml | 0 .../assemblyline/d1-goods-delivery.yaml | 0 .../assemblyline/d2-material-preparation.yaml | 0 .../assemblyline/d3-assembly-line-setup.yaml | 0 .../assemblyline/d4-assembling.yaml | 0 .../assemblyline/d5-quality-control.yaml | 0 .../assemblyline/d6-packaging.yaml | 0 .../assemblyline/d7-shipping.yaml | 0 .../assemblyline/s1-console.yaml | 0 .../config => config}/assemblyline/s2-ui.yaml | 0 .../assemblyline/simulation.yaml | 0 .../event_factory.py | 3 ++ .../activity_generation_provider.py | 3 -- .../activity_generation_registry.py | 15 ---------- .../activity_selection_provider_registry.py | 29 ------------------- .../provider/data/case_provider.py | 17 ----------- .../provider/data/increasing_case.py | 10 +++++++ .../provider/sink/test/__init__.py | 0 .../provider/sink/test/test_sink.py | 14 +++++++++ .../provider/sink/test/test_sink_parser.py | 10 +++++++ test/distributed_event_factory/__init__.py | 0 .../integration_test.py | 19 ++++++++++++ test/test_files/d0-start.yaml | 11 +++++++ test/test_files/d1-goods-delivery.yaml | 25 ++++++++++++++++ test/test_files/d2-material-preparation.yaml | 23 +++++++++++++++ test/test_files/d3-assembly-line-setup.yaml | 29 +++++++++++++++++++ test/test_files/d4-assembling.yaml | 23 +++++++++++++++ test/test_files/d5-quality-control.yaml | 20 +++++++++++++ test/test_files/d6-packaging.yaml | 11 +++++++ test/test_files/d7-shipping.yaml | 14 +++++++++ 31 files changed, 213 insertions(+), 65 deletions(-) rename {src/distributed_event_factory/config => config}/assemblyline/d0-start.yaml (100%) rename {src/distributed_event_factory/config => config}/assemblyline/d1-goods-delivery.yaml (100%) rename {src/distributed_event_factory/config => config}/assemblyline/d2-material-preparation.yaml (100%) rename {src/distributed_event_factory/config => config}/assemblyline/d3-assembly-line-setup.yaml (100%) rename {src/distributed_event_factory/config => config}/assemblyline/d4-assembling.yaml (100%) rename {src/distributed_event_factory/config => config}/assemblyline/d5-quality-control.yaml (100%) rename {src/distributed_event_factory/config => config}/assemblyline/d6-packaging.yaml (100%) rename {src/distributed_event_factory/config => config}/assemblyline/d7-shipping.yaml (100%) rename {src/distributed_event_factory/config => config}/assemblyline/s1-console.yaml (100%) rename {src/distributed_event_factory/config => config}/assemblyline/s2-ui.yaml (100%) rename {src/distributed_event_factory/config => config}/assemblyline/simulation.yaml (100%) delete mode 100644 src/distributed_event_factory/provider/activity/generation/activity_generation_registry.py delete mode 100644 src/distributed_event_factory/provider/activity/selection/activity_selection_provider_registry.py create mode 100644 src/distributed_event_factory/provider/data/increasing_case.py create mode 100644 src/distributed_event_factory/provider/sink/test/__init__.py create mode 100644 src/distributed_event_factory/provider/sink/test/test_sink.py create mode 100644 src/distributed_event_factory/provider/sink/test/test_sink_parser.py create mode 100644 test/distributed_event_factory/__init__.py create mode 100644 test/distributed_event_factory/integration_test.py create mode 100644 test/test_files/d0-start.yaml create mode 100644 test/test_files/d1-goods-delivery.yaml create mode 100644 test/test_files/d2-material-preparation.yaml create mode 100644 test/test_files/d3-assembly-line-setup.yaml create mode 100644 test/test_files/d4-assembling.yaml create mode 100644 test/test_files/d5-quality-control.yaml create mode 100644 test/test_files/d6-packaging.yaml create mode 100644 test/test_files/d7-shipping.yaml diff --git a/README.md b/README.md index eeed0f5..507de79 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ Define the `Distribted Event Factory` and specify a config file like mentioned a ```python from simulation.distributed_event_factory import DistributedEventFactory -config_file = "src/distributed_event_factory/config/assembly_line.yml" +config_file = "config/assembly_line.yml" DistributedEventFactory(config_file).start() ``` diff --git a/src/distributed_event_factory/config/assemblyline/d0-start.yaml b/config/assemblyline/d0-start.yaml similarity index 100% rename from src/distributed_event_factory/config/assemblyline/d0-start.yaml rename to config/assemblyline/d0-start.yaml diff --git a/src/distributed_event_factory/config/assemblyline/d1-goods-delivery.yaml b/config/assemblyline/d1-goods-delivery.yaml similarity index 100% rename from src/distributed_event_factory/config/assemblyline/d1-goods-delivery.yaml rename to config/assemblyline/d1-goods-delivery.yaml diff --git a/src/distributed_event_factory/config/assemblyline/d2-material-preparation.yaml b/config/assemblyline/d2-material-preparation.yaml similarity index 100% rename from src/distributed_event_factory/config/assemblyline/d2-material-preparation.yaml rename to config/assemblyline/d2-material-preparation.yaml diff --git a/src/distributed_event_factory/config/assemblyline/d3-assembly-line-setup.yaml b/config/assemblyline/d3-assembly-line-setup.yaml similarity index 100% rename from src/distributed_event_factory/config/assemblyline/d3-assembly-line-setup.yaml rename to config/assemblyline/d3-assembly-line-setup.yaml diff --git a/src/distributed_event_factory/config/assemblyline/d4-assembling.yaml b/config/assemblyline/d4-assembling.yaml similarity index 100% rename from src/distributed_event_factory/config/assemblyline/d4-assembling.yaml rename to config/assemblyline/d4-assembling.yaml diff --git a/src/distributed_event_factory/config/assemblyline/d5-quality-control.yaml b/config/assemblyline/d5-quality-control.yaml similarity index 100% rename from src/distributed_event_factory/config/assemblyline/d5-quality-control.yaml rename to config/assemblyline/d5-quality-control.yaml diff --git a/src/distributed_event_factory/config/assemblyline/d6-packaging.yaml b/config/assemblyline/d6-packaging.yaml similarity index 100% rename from src/distributed_event_factory/config/assemblyline/d6-packaging.yaml rename to config/assemblyline/d6-packaging.yaml diff --git a/src/distributed_event_factory/config/assemblyline/d7-shipping.yaml b/config/assemblyline/d7-shipping.yaml similarity index 100% rename from src/distributed_event_factory/config/assemblyline/d7-shipping.yaml rename to config/assemblyline/d7-shipping.yaml diff --git a/src/distributed_event_factory/config/assemblyline/s1-console.yaml b/config/assemblyline/s1-console.yaml similarity index 100% rename from src/distributed_event_factory/config/assemblyline/s1-console.yaml rename to config/assemblyline/s1-console.yaml diff --git a/src/distributed_event_factory/config/assemblyline/s2-ui.yaml b/config/assemblyline/s2-ui.yaml similarity index 100% rename from src/distributed_event_factory/config/assemblyline/s2-ui.yaml rename to config/assemblyline/s2-ui.yaml diff --git a/src/distributed_event_factory/config/assemblyline/simulation.yaml b/config/assemblyline/simulation.yaml similarity index 100% rename from src/distributed_event_factory/config/assemblyline/simulation.yaml rename to config/assemblyline/simulation.yaml diff --git a/src/distributed_event_factory/event_factory.py b/src/distributed_event_factory/event_factory.py index b90ea67..0fa6320 100644 --- a/src/distributed_event_factory/event_factory.py +++ b/src/distributed_event_factory/event_factory.py @@ -36,6 +36,9 @@ def add_sink_parser(self, key: str, parser: SinkParser): def add_selection_parser(self, key: str, parser: SinkParser): self.parser.probability_selection_parser.add_dependency(key, parser) + def get_datasource(self, datasource_key): + return self.datasources[datasource_key] + def run(self, directory): for filename in os.listdir(directory): with open(directory + "/" + filename) as file: diff --git a/src/distributed_event_factory/provider/activity/generation/activity_generation_provider.py b/src/distributed_event_factory/provider/activity/generation/activity_generation_provider.py index a324687..2524a72 100644 --- a/src/distributed_event_factory/provider/activity/generation/activity_generation_provider.py +++ b/src/distributed_event_factory/provider/activity/generation/activity_generation_provider.py @@ -2,9 +2,6 @@ from string import ascii_uppercase as alphabet from typing import List -from distributed_event_factory.provider.generic.count_provider import CountProvider - - class ActivityGenerationProvider(abc.ABC): @abc.abstractmethod diff --git a/src/distributed_event_factory/provider/activity/generation/activity_generation_registry.py b/src/distributed_event_factory/provider/activity/generation/activity_generation_registry.py deleted file mode 100644 index 5b8955e..0000000 --- a/src/distributed_event_factory/provider/activity/generation/activity_generation_registry.py +++ /dev/null @@ -1,15 +0,0 @@ -from distributed_event_factory.provider.activity.generation.activity_generation_provider import \ - ActivityGenerationProvider, DistinctActivityGenerationProvider, ListBasedActivityGenerationProvider -from distributed_event_factory.provider.generic.count_provider_registry import CountProviderRegistry - - -class ActivityGenerationProviderRegistry: - def __init__(self): - self.count_provider_registry = CountProviderRegistry() - - def get(self, config) -> ActivityGenerationProvider: - registry = dict() - registry["distinct"] = lambda config: DistinctActivityGenerationProvider( - number_of_activities_provider=self.count_provider_registry.get(config["count"])) - registry["list"] = lambda config: ListBasedActivityGenerationProvider(sensor_id_activity_map=config["values"]) - return registry[config["type"]](config) diff --git a/src/distributed_event_factory/provider/activity/selection/activity_selection_provider_registry.py b/src/distributed_event_factory/provider/activity/selection/activity_selection_provider_registry.py deleted file mode 100644 index c625fd8..0000000 --- a/src/distributed_event_factory/provider/activity/selection/activity_selection_provider_registry.py +++ /dev/null @@ -1,29 +0,0 @@ -from distributed_event_factory.provider.activity.generation.activity_generation_registry import \ - ActivityGenerationProviderRegistry -from distributed_event_factory.provider.activity.selection.activity_selection_provider import \ - ActivitySelectionProviderFactory -from distributed_event_factory.provider.activity.selection.ordered.ordered_selection_provider import \ - OrderedActivitySelectionProviderFactory -from distributed_event_factory.provider.activity.selection.single.single_selection_provider import \ - SingleActivitySelectionProviderFactory -from distributed_event_factory.provider.activity.selection.uniform.uniform_selection_provider import \ - UniformActivitySelectionProviderFactory - - -class ActivitySelectionProviderRegistry: - def get(self, config) -> ActivitySelectionProviderFactory: - registry = dict() - registry["uniform"] = lambda config: ( - UniformActivitySelectionProviderFactory( - potential_activities_provider=ActivityGenerationProviderRegistry().get(config["from"]) - ) - ) - registry["ordered"] = lambda config: ( - OrderedActivitySelectionProviderFactory( - potential_activities_provider=ActivityGenerationProviderRegistry().get(config["from"]) - ) - ) - if "selection" not in config: - return SingleActivitySelectionProviderFactory(config) - - return registry[config["selection"]](config) diff --git a/src/distributed_event_factory/provider/data/case_provider.py b/src/distributed_event_factory/provider/data/case_provider.py index 88d5463..8a53ad2 100644 --- a/src/distributed_event_factory/provider/data/case_provider.py +++ b/src/distributed_event_factory/provider/data/case_provider.py @@ -7,20 +7,3 @@ class CaseIdProvider: @abc.abstractmethod def get(self): pass - - -class CaseIdProviderRegistry: - def get(self, type: str) -> CaseIdProvider: - registry = dict() - registry["increasing"] = IncreasingCaseIdProvider() - return registry[type] - - -class IncreasingCaseIdProvider(CaseIdProvider): - - def __init__(self): - self.current_case_id = 0 - - def get(self): - self.current_case_id += 1 - return f"case_{int(random()*1000000000)}_{str(self.current_case_id)}" diff --git a/src/distributed_event_factory/provider/data/increasing_case.py b/src/distributed_event_factory/provider/data/increasing_case.py new file mode 100644 index 0000000..bc9f09c --- /dev/null +++ b/src/distributed_event_factory/provider/data/increasing_case.py @@ -0,0 +1,10 @@ +from distributed_event_factory.provider.data.case_provider import CaseIdProvider + +class IncreasingCaseIdProvider(CaseIdProvider): + + def __init__(self): + self.current_case_id = 0 + + def get(self): + self.current_case_id += 1 + return f"case_{str(self.current_case_id)}" diff --git a/src/distributed_event_factory/provider/sink/test/__init__.py b/src/distributed_event_factory/provider/sink/test/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/distributed_event_factory/provider/sink/test/test_sink.py b/src/distributed_event_factory/provider/sink/test/test_sink.py new file mode 100644 index 0000000..9cd4a36 --- /dev/null +++ b/src/distributed_event_factory/provider/sink/test/test_sink.py @@ -0,0 +1,14 @@ +from typing import List + +from distributed_event_factory.core.event import Event +from distributed_event_factory.provider.sink.sink_provider import Sink + +class TestSink(Sink): + def __init__(self): + self.event_log: List[Event] = [] + + def send(self, event: Event) -> None: + self.event_log.append(event) + + def contains_event(self, event): + return event in self.event_log \ No newline at end of file diff --git a/src/distributed_event_factory/provider/sink/test/test_sink_parser.py b/src/distributed_event_factory/provider/sink/test/test_sink_parser.py new file mode 100644 index 0000000..7426bcb --- /dev/null +++ b/src/distributed_event_factory/provider/sink/test/test_sink_parser.py @@ -0,0 +1,10 @@ +from distributed_event_factory.parser.sink.sink_parser import SinkParser +from distributed_event_factory.provider.sink.test.test_sink import TestSink + + +class TestSinkParser(SinkParser): + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return TestSink() \ No newline at end of file diff --git a/test/distributed_event_factory/__init__.py b/test/distributed_event_factory/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/distributed_event_factory/integration_test.py b/test/distributed_event_factory/integration_test.py new file mode 100644 index 0000000..7bfc4cc --- /dev/null +++ b/test/distributed_event_factory/integration_test.py @@ -0,0 +1,19 @@ +import unittest + +from distributed_event_factory.event_factory import EventFactory +from distributed_event_factory.provider.sink.test.test_sink import TestSink +from distributed_event_factory.provider.sink.test.test_sink_parser import TestSinkParser + + +class IntegrationTest(unittest.TestCase): + + def test_integration(self): + event_factory = EventFactory() + event_factory.add_sink_parser("test", TestSinkParser()) + event_factory.run(directory="test_file") + sink_mock: TestSink = event_factory.get_datasource("test") + sink_mock.contains_event(None) + + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_files/d0-start.yaml b/test/test_files/d0-start.yaml new file mode 100644 index 0000000..cf4ecfb --- /dev/null +++ b/test/test_files/d0-start.yaml @@ -0,0 +1,11 @@ +kind: datasource +name: "" +spec: + name: "" + group: "factory" + selection: genericProbability + distribution: [1.0] + eventData: + - activity: "" + transition: "GoodsDelivery" + duration: 0 \ No newline at end of file diff --git a/test/test_files/d1-goods-delivery.yaml b/test/test_files/d1-goods-delivery.yaml new file mode 100644 index 0000000..72f6148 --- /dev/null +++ b/test/test_files/d1-goods-delivery.yaml @@ -0,0 +1,25 @@ +kind: datasource +name: "GoodsDelivery" +spec: + name: "GoodsDelivery" + group: "factory" + selection: driftingProbability + startDistribution: [0.1, 0.7, 0.2] + endDistribution: [0.1, 0.2, 0.7] + steps: 1000 + eventData: + - activity: "Reject" + transition: "" + duration: 1 + - activity: "Store" + transition: "GoodsDelivery" + duration: + type: gaussian + mu: 720 + sigma: 120 + - activity: "Pass To Production" + transition: "MaterialPreparation" + duration: + type: uniform + lowerBound: 3 + upperBound: 7 diff --git a/test/test_files/d2-material-preparation.yaml b/test/test_files/d2-material-preparation.yaml new file mode 100644 index 0000000..8d855ff --- /dev/null +++ b/test/test_files/d2-material-preparation.yaml @@ -0,0 +1,23 @@ +kind: datasource +name: "MaterialPreparation" +spec: + name: "MaterialPreparation" + group: "factory" + selection: genericProbability + distribution: [ 0.25, 0.7, 0.05 ] + eventData: + - activity: "MaterialPreparation - Finished" + duration: + type: uniform + lowerBound: 1 + upperBound: 2 + transition: "AssemblyLineSetup" + - activity: "Waiting for Material" + transition: "MaterialPreparation" + duration: 1 + - activity: "Internal Error" + transition: "MaterialPreparation" + duration: + type: gaussian + mu: 500 + sigma: 100 diff --git a/test/test_files/d3-assembly-line-setup.yaml b/test/test_files/d3-assembly-line-setup.yaml new file mode 100644 index 0000000..a74c939 --- /dev/null +++ b/test/test_files/d3-assembly-line-setup.yaml @@ -0,0 +1,29 @@ +kind: datasource +name: "AssemblyLineSetup" +spec: + name: "AssemblyLineSetup" + group: "factory" + selection: genericProbability + distribution: [ 0.3, 0.4, 0.15, 0.05, 0.1 ] + eventData: + - activity: "Material Not Set Up as expected" + transition: "MaterialPreparation" + duration: + type: uniform + lowerBound: 2 + upperBound: 5 + - activity: "Assembly Line Setup successfully" + transition: "Assembling" + duration: 3 + - activity: "Material in wrong order. Reordering.." + transition: "AssemblyLineSetup" + duration: 1 + - activity: "Maximum Material count exceeded. Remove item" + transition: "AssemblyLineSetup" + duration: 1 + - activity: "Internal Error" + transition: "Assembling" + duration: + type: gaussian + mu: 500 + sigma: 100 diff --git a/test/test_files/d4-assembling.yaml b/test/test_files/d4-assembling.yaml new file mode 100644 index 0000000..eac32a2 --- /dev/null +++ b/test/test_files/d4-assembling.yaml @@ -0,0 +1,23 @@ +kind: datasource +name: "Assembling" +spec: + name: "Assembling" + group: "factory" + selection: genericProbability + distribution: [ 0.8, 0.1, 0.08, 0.02 ] + eventData: + - activity: "Assembling completed" + duration: 10 + transition: "QualityControl" + - activity: "Overheating" + transition: "" + duration: 2 + - activity: "Item broke" + transition: "" + duration: 1 + - activity: "Internal Error" + transition: "Assembling" + duration: + type: gaussian + mu: 500 + sigma: 100 \ No newline at end of file diff --git a/test/test_files/d5-quality-control.yaml b/test/test_files/d5-quality-control.yaml new file mode 100644 index 0000000..c25d814 --- /dev/null +++ b/test/test_files/d5-quality-control.yaml @@ -0,0 +1,20 @@ +kind: datasource +name: "QualityControl" +spec: + name: "QualityControl" + group: "factory" + selection: genericProbability + distribution: [ 0.3, 0.1, 0.6 ] + eventData: + - activity: "Item Needs Corrections" + transition: "Assembling" + duration: 2 + - activity: "Quality Insufficient" + transition: "" + duration: 2 + - activity: "Quality check passed" + transition: "Packaging" + duration: + type: uniform + lowerBound: 5 + upperBound: 10 diff --git a/test/test_files/d6-packaging.yaml b/test/test_files/d6-packaging.yaml new file mode 100644 index 0000000..cd47264 --- /dev/null +++ b/test/test_files/d6-packaging.yaml @@ -0,0 +1,11 @@ +kind: datasource +name: "Packaging" +spec: + name: "Packaging" + group: "factory" + selection: genericProbability + distribution: [ 1.0 ] + eventData: + - activity: "Packaging completed" + transition: "Shipping" + duration: 3 diff --git a/test/test_files/d7-shipping.yaml b/test/test_files/d7-shipping.yaml new file mode 100644 index 0000000..ea1232d --- /dev/null +++ b/test/test_files/d7-shipping.yaml @@ -0,0 +1,14 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + selection: genericProbability + distribution: [ 0.8, 0.2 ] + eventData: + - activity: "Package waits for sending" + transition: "Shipping" + duration: 180 + - activity: "Package sent" + transition: "" + duration: 1 \ No newline at end of file From e948ac39fd35abffda53e0130bf09413291c5738 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Fri, 18 Oct 2024 19:45:28 +0200 Subject: [PATCH 017/124] finish integration_test --- .../event_factory.py | 7 +++- src/distributed_event_factory/main.py | 2 +- .../parser/parser_registry.py | 2 +- .../parser/simulation/simulation_parser.py | 10 +++--- .../provider/sink/http/http_sink.py | 12 +++---- .../provider/sink/kafka/kafka_sink.py | 5 +-- .../provider/sink/sink_provider.py | 5 +++ .../provider/sink/sink_provider_registry.py | 34 ------------------- .../provider/sink/test/test_sink.py | 3 +- .../provider/sink/test/test_sink_parser.py | 2 +- .../simulation/countbased_simulation.py | 29 ++++++++++++++++ ..._simulation.py => scheduled_simulation.py} | 0 .../__init__.py | 0 .../integration_test.py | 8 ++--- test/test_files/s1-test-sink.yaml | 13 +++++++ test/test_files/simulation.yaml | 10 ++++++ 16 files changed, 84 insertions(+), 58 deletions(-) delete mode 100644 src/distributed_event_factory/provider/sink/sink_provider_registry.py create mode 100644 src/distributed_event_factory/simulation/countbased_simulation.py rename src/distributed_event_factory/simulation/{new_simulation.py => scheduled_simulation.py} (100%) rename test/{distributed_event_factory => }/__init__.py (100%) rename test/{distributed_event_factory => }/integration_test.py (72%) create mode 100644 test/test_files/s1-test-sink.yaml create mode 100644 test/test_files/simulation.yaml diff --git a/src/distributed_event_factory/event_factory.py b/src/distributed_event_factory/event_factory.py index 0fa6320..28a24dc 100644 --- a/src/distributed_event_factory/event_factory.py +++ b/src/distributed_event_factory/event_factory.py @@ -39,7 +39,10 @@ def add_selection_parser(self, key: str, parser: SinkParser): def get_datasource(self, datasource_key): return self.datasources[datasource_key] - def run(self, directory): + def get_sink(self, sink_key): + return self.sinks[sink_key] + + def from_directory(self, directory): for filename in os.listdir(directory): with open(directory + "/" + filename) as file: configuration = yaml.safe_load(file) @@ -52,6 +55,8 @@ def run(self, directory): self.datasources[name] = parsed_object elif kind == "sink": self.sinks[name] = parsed_object + return self + def run(self): for simulation in self.simulations: self.simulations[simulation].run_simulation(self.datasources, self.sinks) diff --git a/src/distributed_event_factory/main.py b/src/distributed_event_factory/main.py index 4251e6b..997f343 100644 --- a/src/distributed_event_factory/main.py +++ b/src/distributed_event_factory/main.py @@ -26,4 +26,4 @@ def parse(self, config): if __name__ == '__main__': event_factory = EventFactory() event_factory.parser.load_parser.add_dependency("sinus", SinusLoadParser()) - event_factory.run("config/assemblyline") + event_factory.from_directory("config/assemblyline") diff --git a/src/distributed_event_factory/parser/parser_registry.py b/src/distributed_event_factory/parser/parser_registry.py index 0118ca7..d9d6718 100644 --- a/src/distributed_event_factory/parser/parser_registry.py +++ b/src/distributed_event_factory/parser/parser_registry.py @@ -32,7 +32,7 @@ from distributed_event_factory.parser.sink.print_console_sink_parser import PrintConsoleSinkParser from distributed_event_factory.parser.sink.sink_parser import SinkParser from distributed_event_factory.parser.sink.ui_sink_parser import UiSinkParser -from distributed_event_factory.provider.data.case_provider import IncreasingCaseIdProvider +from distributed_event_factory.provider.data.increasing_case import IncreasingCaseIdProvider class ParserRegistry: diff --git a/src/distributed_event_factory/parser/simulation/simulation_parser.py b/src/distributed_event_factory/parser/simulation/simulation_parser.py index fa0c0d7..bc026b1 100644 --- a/src/distributed_event_factory/parser/simulation/simulation_parser.py +++ b/src/distributed_event_factory/parser/simulation/simulation_parser.py @@ -1,4 +1,5 @@ -from distributed_event_factory.simulation.new_simulation import NewSimulation +from distributed_event_factory.simulation.countbased_simulation import CountBasedSimulation +from distributed_event_factory.simulation.scheduled_simulation import NewSimulation class SimulationParser: @@ -10,8 +11,9 @@ def add_dependency(self, key: str, dependency): return self def parse(self, config): - return NewSimulation( - load_provider=self.dependencies["load"].parse(config["load"]), - time_frame_duration=config["timeFrameDuration"], + return CountBasedSimulation( + #load_provider=self.dependencies["load"].parse(config["load"]), + #time_frame_duration=config["timeFrameDuration"], case_id_provider=self.dependencies["caseId"].parse(config["caseId"]), + simulation_steps=100 ) diff --git a/src/distributed_event_factory/provider/sink/http/http_sink.py b/src/distributed_event_factory/provider/sink/http/http_sink.py index 584d388..e2acdb4 100644 --- a/src/distributed_event_factory/provider/sink/http/http_sink.py +++ b/src/distributed_event_factory/provider/sink/http/http_sink.py @@ -1,7 +1,6 @@ import json -from queue import Queue -from distributed_event_factory.core.event import AbstractEvent +from distributed_event_factory.core.event import Event from distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider import requests @@ -22,7 +21,8 @@ def toJson(self): class HttpSink(Sink): - def __init__(self, url, frame_duration): + def __init__(self, url, frame_duration, data_source_ref): + super().__init__(data_source_ref) self.url = url self.frame_duration = frame_duration @@ -42,9 +42,5 @@ def end_timeframe(self): def start(self): requests.post(url=self.url + "/start") - def send(self, event: AbstractEvent) -> None: + def send(self, event: Event) -> None: self.timeframe.add_event(event) - -class HttpSinkProvider(SinkProvider): - def get_sender(self, id) -> Sink: - return HttpSink() \ No newline at end of file diff --git a/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py b/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py index 4d00c9e..33dad6d 100644 --- a/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py +++ b/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py @@ -5,9 +5,10 @@ from distributed_event_factory.provider.sink.kafka.partition.partition_provider import PartitionProvider from distributed_event_factory.provider.sink.sink_provider import Sink - class KafkaSink(Sink): - def __init__(self, bootstrap_server_url: string, client_id: string, topic: string, partition_provider: PartitionProvider): + def __init__(self, bootstrap_server_url: string, client_id: string, topic: string, + partition_provider: PartitionProvider, data_source_ref): + super().__init__(data_source_ref) from kafka import KafkaProducer self.producer = KafkaProducer( diff --git a/src/distributed_event_factory/provider/sink/sink_provider.py b/src/distributed_event_factory/provider/sink/sink_provider.py index 90e2680..ba3e0cf 100644 --- a/src/distributed_event_factory/provider/sink/sink_provider.py +++ b/src/distributed_event_factory/provider/sink/sink_provider.py @@ -4,11 +4,16 @@ class Sink: + def __init__(self, data_source_ref): + self.data_source_ref = data_source_ref @abc.abstractmethod def send(self, event: Event) -> None: pass + def get_datasource_ref(self): + return self.data_source_ref + class SinkProvider: diff --git a/src/distributed_event_factory/provider/sink/sink_provider_registry.py b/src/distributed_event_factory/provider/sink/sink_provider_registry.py deleted file mode 100644 index 93ea239..0000000 --- a/src/distributed_event_factory/provider/sink/sink_provider_registry.py +++ /dev/null @@ -1,34 +0,0 @@ -from distributed_event_factory.provider.sink.console.console_sink import PrintConsoleSinkProvider -from distributed_event_factory.provider.sink.http.http_sink import HttpSink, HttpSinkProvider -from distributed_event_factory.provider.sink.kafka.kafka_sink import KafkaSinkProvider -from distributed_event_factory.provider.sink.kafka.kafka_validation_sink import KafkaValidationSinkProvider -from distributed_event_factory.provider.sink.kafka.partition.partition_registry import PartitionProviderRegistry -from distributed_event_factory.provider.sink.sink_provider import SinkProvider - -class SinkProviderRegistry: - - def get_ui(self): - from distributed_event_factory.provider.sink.ui.terminal_ui_sink import TerminalGuiSinkProvider - return TerminalGuiSinkProvider() - - def get(self, config) -> SinkProvider: - registry = dict() - registry["kafka"] = lambda config: KafkaSinkProvider( - bootstrap_server=config["bootstrapServer"], - topic=config["topic"], - partition_provider=PartitionProviderRegistry().get(config["partition"]) - ) - registry["kafkaValidation"] = lambda config: KafkaValidationSinkProvider( - bootstrap_server=config["bootstrapServer"], - topic=config["topic"], - partition_provider=PartitionProviderRegistry().get(config["partition"]), - validation_topic=config["validationTopic"], - validation_split=config["validationSplit"] - ) - registry["ui"] = lambda config: self.get_ui() - registry["console"] = lambda config: PrintConsoleSinkProvider() - registry["console"] = lambda config: PrintConsoleSinkProvider() - registry["http"] = lambda config: HttpSinkProvider() - #registry["custom"] lambda config: CustomReceiver() - - return registry[config["type"]](config) \ No newline at end of file diff --git a/src/distributed_event_factory/provider/sink/test/test_sink.py b/src/distributed_event_factory/provider/sink/test/test_sink.py index 9cd4a36..3ceb807 100644 --- a/src/distributed_event_factory/provider/sink/test/test_sink.py +++ b/src/distributed_event_factory/provider/sink/test/test_sink.py @@ -4,7 +4,8 @@ from distributed_event_factory.provider.sink.sink_provider import Sink class TestSink(Sink): - def __init__(self): + def __init__(self, data_source_ref): + super().__init__(data_source_ref) self.event_log: List[Event] = [] def send(self, event: Event) -> None: diff --git a/src/distributed_event_factory/provider/sink/test/test_sink_parser.py b/src/distributed_event_factory/provider/sink/test/test_sink_parser.py index 7426bcb..312486d 100644 --- a/src/distributed_event_factory/provider/sink/test/test_sink_parser.py +++ b/src/distributed_event_factory/provider/sink/test/test_sink_parser.py @@ -7,4 +7,4 @@ def add_dependency(self, key: str, dependency): pass def parse(self, config): - return TestSink() \ No newline at end of file + return TestSink(config["dataSourceRefs"]) \ No newline at end of file diff --git a/src/distributed_event_factory/simulation/countbased_simulation.py b/src/distributed_event_factory/simulation/countbased_simulation.py new file mode 100644 index 0000000..05e81a5 --- /dev/null +++ b/src/distributed_event_factory/simulation/countbased_simulation.py @@ -0,0 +1,29 @@ +from distributed_event_factory.provider.data.case_provider import CaseIdProvider +from distributed_event_factory.simulation.new_process_simulation import NewProcessSimulator + + +class CountBasedSimulation: + + def __init__( + self, + simulation_steps: int, + case_id_provider: CaseIdProvider, + ): + self.case_id_provider = case_id_provider + self.simulation_steps = simulation_steps + self.sinks = dict() + + def send_event(self, event): + self.sinks[event.node].send(event) + + def run_simulation(self, datasources, sinks): + for sink in sinks: + for data_source in sinks[sink].data_source_ref: + self.sinks[data_source] = sinks[sink] + process_simulator = NewProcessSimulator( + case_id_provider=self.case_id_provider, + data_sources=datasources + ) + + for i in range(self.simulation_steps): + self.send_event(process_simulator.simulate()) diff --git a/src/distributed_event_factory/simulation/new_simulation.py b/src/distributed_event_factory/simulation/scheduled_simulation.py similarity index 100% rename from src/distributed_event_factory/simulation/new_simulation.py rename to src/distributed_event_factory/simulation/scheduled_simulation.py diff --git a/test/distributed_event_factory/__init__.py b/test/__init__.py similarity index 100% rename from test/distributed_event_factory/__init__.py rename to test/__init__.py diff --git a/test/distributed_event_factory/integration_test.py b/test/integration_test.py similarity index 72% rename from test/distributed_event_factory/integration_test.py rename to test/integration_test.py index 7bfc4cc..29bf422 100644 --- a/test/distributed_event_factory/integration_test.py +++ b/test/integration_test.py @@ -4,16 +4,14 @@ from distributed_event_factory.provider.sink.test.test_sink import TestSink from distributed_event_factory.provider.sink.test.test_sink_parser import TestSinkParser - class IntegrationTest(unittest.TestCase): def test_integration(self): event_factory = EventFactory() event_factory.add_sink_parser("test", TestSinkParser()) - event_factory.run(directory="test_file") - sink_mock: TestSink = event_factory.get_datasource("test") - sink_mock.contains_event(None) - + event_factory.from_directory(directory="test_files").run() + sink_mock: TestSink = event_factory.get_sink("test") + self.assertEqual(100, len(sink_mock.event_log)) if __name__ == '__main__': unittest.main() diff --git a/test/test_files/s1-test-sink.yaml b/test/test_files/s1-test-sink.yaml new file mode 100644 index 0000000..fae8af5 --- /dev/null +++ b/test/test_files/s1-test-sink.yaml @@ -0,0 +1,13 @@ +kind: sink +name: test +spec: + type: test + id: "test" + dataSourceRefs: + - "GoodsDelivery" + - "MaterialPreparation" + - "AssemblyLineSetup" + - "Assembling" + - "QualityControl" + - "Packaging" + - "Shipping" diff --git a/test/test_files/simulation.yaml b/test/test_files/simulation.yaml new file mode 100644 index 0000000..2a549f4 --- /dev/null +++ b/test/test_files/simulation.yaml @@ -0,0 +1,10 @@ +kind: simulation +name: test +spec: + caseId: increasing + timeFrameDuration: 10 + load: + loadBehavior: gradual + tickCount: 100 + minimalLoad: 5 + load: 10 \ No newline at end of file From d505c19ff1cfb74fb4974863e146e3ede457ab1d Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Fri, 18 Oct 2024 21:02:25 +0200 Subject: [PATCH 018/124] build unittest pipeline --- .github/workflows/test-pypi.yml | 11 ++++++- .idea/distributed-event-factory.iml | 1 + README.md | 2 +- .../__init__.py | 0 .../core/__init__.py | 0 .../core/abstract_datasource.py | 0 .../core/datasource.py | 0 .../core/datasource_id.py | 0 .../core/end_datasource.py | 0 .../core/event.py | 0 .../core/start_datasource.py | 0 .../event_factory.py | 0 .../main.py | 0 .../parser/__init__.py | 0 .../parser/datasource/__init__.py | 0 .../parser/datasource/data_source_parser.py | 0 .../parser/datasource/event/__init__.py | 0 .../datasource/event/activity/__init__.py | 0 .../event/activity/activity_parser.py | 0 .../datasource/event/distribution_parser.py | 0 .../datasource/event/duration/__init__.py | 0 .../duration/constant_duration_parser.py | 0 .../event/duration/duration_parser.py | 0 .../duration/gaussian_duration_parser.py | 0 .../event/duration/uniform_duration_parser.py | 0 .../event/event_data_list_parser.py | 0 .../event/event_selection_parser.py | 0 .../datasource/event/selection/__init__.py | 0 ...ting_probability_event_selection_parser.py | 0 ...eric_probability_event_selection_parser.py | 0 .../ordered_event_selection_parser.py | 0 .../selection/uniform_event_selection.py | 0 .../datasource/event/transition/__init__.py | 0 .../event/transition/transition_parser.py | 0 .../parser/kind_parser.py | 1 - .../parser/parser.py | 0 .../parser/parser_registry.py | 0 .../parser/simulation/__init__.py | 0 .../parser/simulation/case/__init__.py | 0 .../parser/simulation/case/case_id_parser.py | 0 .../case/increasing_case_id_parser.py | 0 .../parser/simulation/load/__init__.py | 0 .../simulation/load/constant_load_parser.py | 0 .../simulation/load/gradual_load_parser.py | 0 .../parser/simulation/load/load_parser.py | 0 .../parser/simulation/simulation_parser.py | 0 .../parser/sink/__init__.py | 0 .../parser/sink/kafka/__init__.py | 0 .../sink/kafka/case_partition_parser.py | 0 .../sink/kafka/constant_partition_parser.py | 0 .../parser/sink/kafka/kafka_sink_parser.py | 0 .../parser/sink/kafka/partition_parser.py | 0 .../parser/sink/print_console_sink_parser.py | 0 .../parser/sink/sink_parser.py | 0 .../parser/sink/ui_sink_parser.py | 0 .../provider/__init__.py | 0 .../provider/activity/README.md | 0 .../provider/activity/__init__.py | 0 .../provider/activity/activity_provider.py | 0 .../provider/activity/generation/__init__.py | 0 .../activity_generation_provider.py | 0 .../provider/activity/selection/__init__.py | 0 .../selection/activity_selection_provider.py | 0 .../activity/selection/ordered/__init__.py | 0 .../ordered/ordered_selection_provider.py | 0 .../activity/selection/single/__init__.py | 0 .../single/single_selection_provider.py | 0 .../activity/selection/uniform/__init__.py | 0 .../uniform/uniform_selection_provider.py | 0 .../provider/data/__init__.py | 0 .../provider/data/case_provider.py | 0 .../provider/data/increasing_case.py | 0 .../provider/datasource/__init__.py | 0 .../datasource/data_source_registry.py | 0 .../datasource/datasource_id_provider.py | 0 .../provider/datasource/sensor_topology.py | 0 .../provider/event/README.md | 0 .../provider/event/__init__.py | 0 .../provider/event/event_data.py | 0 .../provider/event/event_provider.py | 0 .../provider/eventselection/__init__.py | 0 ...ng_probability_event_selection_provider.py | 0 .../event_selection_provider.py | 0 ...ic_probability_event_selection_provider.py | 0 .../ordered_selection_provider.py | 0 .../uniform_selction_provider.py | 0 .../provider/load/README.md | 0 .../provider/load/__init__.py | 0 .../provider/load/load_provider.py | 0 .../provider/load/load_provider_registry.py | 0 .../provider/sink/README.md | 0 .../provider/sink/__init__.py | 0 .../provider/sink/console/__init__.py | 0 .../provider/sink/console/console_sink.py | 0 .../provider/sink/http/__init__.py | 0 .../provider/sink/http/http_sink.py | 0 .../provider/sink/kafka/README.md | 0 .../provider/sink/kafka/__init__.py | 0 .../provider/sink/kafka/kafka_sink.py | 0 .../sink/kafka/kafka_validation_sink.py | 0 .../provider/sink/kafka/partition/__init__.py | 0 .../sink/kafka/partition/case_partition.py | 0 .../kafka/partition/constant_partition.py | 0 .../kafka/partition/partition_provider.py | 0 .../provider/sink/newsink/__init__.py | 0 .../provider/sink/newsink/newsink.py | 0 .../provider/sink/newsink/sinkqueue.py | 0 .../provider/sink/sink_provider.py | 0 .../provider/sink/test/__init__.py | 0 .../provider/sink/test/test_sink.py | 0 .../provider/sink/test/test_sink_parser.py | 0 .../provider/sink/ui/__init__.py | 0 .../provider/sink/ui/terminal_ui_sink.py | 0 .../provider/transition/__init__.py | 0 .../provider/transition/duration/__init__.py | 0 .../transition/duration/constant_duration.py | 0 .../transition/duration/duration_provider.py | 0 .../transition/duration/gaussian_duration.py | 0 .../transition/duration/uniform_duration.py | 0 .../transition/transition/__init__.py | 0 .../transition/constant_transition.py | 0 .../transition/transition_provider.py | 0 .../transition/transition_provider.py | 0 .../transition/transition_provider_factory.py | 0 .../simulation/__init__.py | 0 .../simulation/countbased_simulation.py | 0 .../simulation/distributed_event_factory.py | 0 .../simulation/eventloop/README.md | 0 .../simulation/eventloop/__init__.py | 0 .../simulation/eventloop/event_loop.py | 0 .../eventloop/event_loop_registry.py | 0 .../simulation/new_process_simulation.py | 0 .../simulation/new_simulation2.py | 0 .../simulation/process_simulator.py | 0 .../simulation/scheduled_simulation.py | 0 .../simulation/simulation.py | 0 .../view/__init__.py | 0 .../view/terminal.py | 0 test/integration_test.py | 3 -- test/test_files/d0-start.yaml | 11 ------- test/test_files/d1-goods-delivery.yaml | 25 ---------------- test/test_files/d2-material-preparation.yaml | 23 --------------- test/test_files/d3-assembly-line-setup.yaml | 29 ------------------- test/test_files/d4-assembling.yaml | 23 --------------- test/test_files/d5-quality-control.yaml | 20 ------------- test/test_files/d6-packaging.yaml | 11 ------- test/test_files/d7-shipping.yaml | 14 --------- 147 files changed, 12 insertions(+), 162 deletions(-) rename {src/distributed_event_factory => distributed_event_factory}/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/core/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/core/abstract_datasource.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/core/datasource.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/core/datasource_id.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/core/end_datasource.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/core/event.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/core/start_datasource.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/event_factory.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/main.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/data_source_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/activity/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/activity/activity_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/distribution_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/duration/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/duration/constant_duration_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/duration/duration_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/duration/gaussian_duration_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/duration/uniform_duration_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/event_data_list_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/event_selection_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/selection/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/selection/drifting_probability_event_selection_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/selection/generic_probability_event_selection_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/selection/ordered_event_selection_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/selection/uniform_event_selection.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/transition/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/datasource/event/transition/transition_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/kind_parser.py (99%) rename {src/distributed_event_factory => distributed_event_factory}/parser/parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/parser_registry.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/simulation/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/simulation/case/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/simulation/case/case_id_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/simulation/case/increasing_case_id_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/simulation/load/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/simulation/load/constant_load_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/simulation/load/gradual_load_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/simulation/load/load_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/simulation/simulation_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/sink/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/sink/kafka/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/sink/kafka/case_partition_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/sink/kafka/constant_partition_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/sink/kafka/kafka_sink_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/sink/kafka/partition_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/sink/print_console_sink_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/sink/sink_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/parser/sink/ui_sink_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/activity/README.md (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/activity/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/activity/activity_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/activity/generation/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/activity/generation/activity_generation_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/activity/selection/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/activity/selection/activity_selection_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/activity/selection/ordered/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/activity/selection/ordered/ordered_selection_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/activity/selection/single/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/activity/selection/single/single_selection_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/activity/selection/uniform/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/activity/selection/uniform/uniform_selection_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/data/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/data/case_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/data/increasing_case.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/datasource/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/datasource/data_source_registry.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/datasource/datasource_id_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/datasource/sensor_topology.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/event/README.md (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/event/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/event/event_data.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/event/event_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/eventselection/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/eventselection/drifting_probability_event_selection_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/eventselection/event_selection_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/eventselection/generic_probability_event_selection_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/eventselection/ordered_selection_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/eventselection/uniform_selction_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/load/README.md (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/load/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/load/load_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/load/load_provider_registry.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/README.md (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/console/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/console/console_sink.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/http/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/http/http_sink.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/kafka/README.md (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/kafka/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/kafka/kafka_sink.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/kafka/kafka_validation_sink.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/kafka/partition/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/kafka/partition/case_partition.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/kafka/partition/constant_partition.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/kafka/partition/partition_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/newsink/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/newsink/newsink.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/newsink/sinkqueue.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/sink_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/test/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/test/test_sink.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/test/test_sink_parser.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/ui/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/sink/ui/terminal_ui_sink.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/transition/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/transition/duration/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/transition/duration/constant_duration.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/transition/duration/duration_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/transition/duration/gaussian_duration.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/transition/duration/uniform_duration.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/transition/transition/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/transition/transition/constant_transition.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/transition/transition/transition_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/transition/transition_provider.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/provider/transition/transition_provider_factory.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/simulation/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/simulation/countbased_simulation.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/simulation/distributed_event_factory.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/simulation/eventloop/README.md (100%) rename {src/distributed_event_factory => distributed_event_factory}/simulation/eventloop/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/simulation/eventloop/event_loop.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/simulation/eventloop/event_loop_registry.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/simulation/new_process_simulation.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/simulation/new_simulation2.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/simulation/process_simulator.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/simulation/scheduled_simulation.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/simulation/simulation.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/view/__init__.py (100%) rename {src/distributed_event_factory => distributed_event_factory}/view/terminal.py (100%) delete mode 100644 test/test_files/d0-start.yaml delete mode 100644 test/test_files/d1-goods-delivery.yaml delete mode 100644 test/test_files/d2-material-preparation.yaml delete mode 100644 test/test_files/d3-assembly-line-setup.yaml delete mode 100644 test/test_files/d4-assembling.yaml delete mode 100644 test/test_files/d5-quality-control.yaml delete mode 100644 test/test_files/d6-packaging.yaml delete mode 100644 test/test_files/d7-shipping.yaml diff --git a/.github/workflows/test-pypi.yml b/.github/workflows/test-pypi.yml index 4f41914..3edd5fd 100644 --- a/.github/workflows/test-pypi.yml +++ b/.github/workflows/test-pypi.yml @@ -6,13 +6,19 @@ jobs: build: name: Build distribution 📦 runs-on: ubuntu-latest - steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.10" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + - name: Test + run: | + python -m unittest test.integration_test.IntegrationTest.test_integration - name: Install pypa/build run: >- python3 -m @@ -27,6 +33,9 @@ jobs: name: python-package-distributions path: dist/ + + + publish-to-testpypi: name: Publish Python 🐍 distribution 📦 to TestPyPI needs: diff --git a/.idea/distributed-event-factory.iml b/.idea/distributed-event-factory.iml index 9e2328d..3882cbd 100644 --- a/.idea/distributed-event-factory.iml +++ b/.idea/distributed-event-factory.iml @@ -3,6 +3,7 @@ + diff --git a/README.md b/README.md index 507de79..3622384 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ The `debug` option should be used for development and produces more verbose stac The data sources are defined via a Markov chain. The Markov Chain is configured in a distributed fashion. Each data source knows its successor. On every edge a duration, a generated activity and the next invoked datasource is -defined. More details can be found [here](src/distributed_event_factory/provider/datasource/README.md) +defined. More details can be found [here](distributed_event_factory/provider/datasource/README.md) ## Installation diff --git a/src/distributed_event_factory/__init__.py b/distributed_event_factory/__init__.py similarity index 100% rename from src/distributed_event_factory/__init__.py rename to distributed_event_factory/__init__.py diff --git a/src/distributed_event_factory/core/__init__.py b/distributed_event_factory/core/__init__.py similarity index 100% rename from src/distributed_event_factory/core/__init__.py rename to distributed_event_factory/core/__init__.py diff --git a/src/distributed_event_factory/core/abstract_datasource.py b/distributed_event_factory/core/abstract_datasource.py similarity index 100% rename from src/distributed_event_factory/core/abstract_datasource.py rename to distributed_event_factory/core/abstract_datasource.py diff --git a/src/distributed_event_factory/core/datasource.py b/distributed_event_factory/core/datasource.py similarity index 100% rename from src/distributed_event_factory/core/datasource.py rename to distributed_event_factory/core/datasource.py diff --git a/src/distributed_event_factory/core/datasource_id.py b/distributed_event_factory/core/datasource_id.py similarity index 100% rename from src/distributed_event_factory/core/datasource_id.py rename to distributed_event_factory/core/datasource_id.py diff --git a/src/distributed_event_factory/core/end_datasource.py b/distributed_event_factory/core/end_datasource.py similarity index 100% rename from src/distributed_event_factory/core/end_datasource.py rename to distributed_event_factory/core/end_datasource.py diff --git a/src/distributed_event_factory/core/event.py b/distributed_event_factory/core/event.py similarity index 100% rename from src/distributed_event_factory/core/event.py rename to distributed_event_factory/core/event.py diff --git a/src/distributed_event_factory/core/start_datasource.py b/distributed_event_factory/core/start_datasource.py similarity index 100% rename from src/distributed_event_factory/core/start_datasource.py rename to distributed_event_factory/core/start_datasource.py diff --git a/src/distributed_event_factory/event_factory.py b/distributed_event_factory/event_factory.py similarity index 100% rename from src/distributed_event_factory/event_factory.py rename to distributed_event_factory/event_factory.py diff --git a/src/distributed_event_factory/main.py b/distributed_event_factory/main.py similarity index 100% rename from src/distributed_event_factory/main.py rename to distributed_event_factory/main.py diff --git a/src/distributed_event_factory/parser/__init__.py b/distributed_event_factory/parser/__init__.py similarity index 100% rename from src/distributed_event_factory/parser/__init__.py rename to distributed_event_factory/parser/__init__.py diff --git a/src/distributed_event_factory/parser/datasource/__init__.py b/distributed_event_factory/parser/datasource/__init__.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/__init__.py rename to distributed_event_factory/parser/datasource/__init__.py diff --git a/src/distributed_event_factory/parser/datasource/data_source_parser.py b/distributed_event_factory/parser/datasource/data_source_parser.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/data_source_parser.py rename to distributed_event_factory/parser/datasource/data_source_parser.py diff --git a/src/distributed_event_factory/parser/datasource/event/__init__.py b/distributed_event_factory/parser/datasource/event/__init__.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/__init__.py rename to distributed_event_factory/parser/datasource/event/__init__.py diff --git a/src/distributed_event_factory/parser/datasource/event/activity/__init__.py b/distributed_event_factory/parser/datasource/event/activity/__init__.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/activity/__init__.py rename to distributed_event_factory/parser/datasource/event/activity/__init__.py diff --git a/src/distributed_event_factory/parser/datasource/event/activity/activity_parser.py b/distributed_event_factory/parser/datasource/event/activity/activity_parser.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/activity/activity_parser.py rename to distributed_event_factory/parser/datasource/event/activity/activity_parser.py diff --git a/src/distributed_event_factory/parser/datasource/event/distribution_parser.py b/distributed_event_factory/parser/datasource/event/distribution_parser.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/distribution_parser.py rename to distributed_event_factory/parser/datasource/event/distribution_parser.py diff --git a/src/distributed_event_factory/parser/datasource/event/duration/__init__.py b/distributed_event_factory/parser/datasource/event/duration/__init__.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/duration/__init__.py rename to distributed_event_factory/parser/datasource/event/duration/__init__.py diff --git a/src/distributed_event_factory/parser/datasource/event/duration/constant_duration_parser.py b/distributed_event_factory/parser/datasource/event/duration/constant_duration_parser.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/duration/constant_duration_parser.py rename to distributed_event_factory/parser/datasource/event/duration/constant_duration_parser.py diff --git a/src/distributed_event_factory/parser/datasource/event/duration/duration_parser.py b/distributed_event_factory/parser/datasource/event/duration/duration_parser.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/duration/duration_parser.py rename to distributed_event_factory/parser/datasource/event/duration/duration_parser.py diff --git a/src/distributed_event_factory/parser/datasource/event/duration/gaussian_duration_parser.py b/distributed_event_factory/parser/datasource/event/duration/gaussian_duration_parser.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/duration/gaussian_duration_parser.py rename to distributed_event_factory/parser/datasource/event/duration/gaussian_duration_parser.py diff --git a/src/distributed_event_factory/parser/datasource/event/duration/uniform_duration_parser.py b/distributed_event_factory/parser/datasource/event/duration/uniform_duration_parser.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/duration/uniform_duration_parser.py rename to distributed_event_factory/parser/datasource/event/duration/uniform_duration_parser.py diff --git a/src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py b/distributed_event_factory/parser/datasource/event/event_data_list_parser.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/event_data_list_parser.py rename to distributed_event_factory/parser/datasource/event/event_data_list_parser.py diff --git a/src/distributed_event_factory/parser/datasource/event/event_selection_parser.py b/distributed_event_factory/parser/datasource/event/event_selection_parser.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/event_selection_parser.py rename to distributed_event_factory/parser/datasource/event/event_selection_parser.py diff --git a/src/distributed_event_factory/parser/datasource/event/selection/__init__.py b/distributed_event_factory/parser/datasource/event/selection/__init__.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/selection/__init__.py rename to distributed_event_factory/parser/datasource/event/selection/__init__.py diff --git a/src/distributed_event_factory/parser/datasource/event/selection/drifting_probability_event_selection_parser.py b/distributed_event_factory/parser/datasource/event/selection/drifting_probability_event_selection_parser.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/selection/drifting_probability_event_selection_parser.py rename to distributed_event_factory/parser/datasource/event/selection/drifting_probability_event_selection_parser.py diff --git a/src/distributed_event_factory/parser/datasource/event/selection/generic_probability_event_selection_parser.py b/distributed_event_factory/parser/datasource/event/selection/generic_probability_event_selection_parser.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/selection/generic_probability_event_selection_parser.py rename to distributed_event_factory/parser/datasource/event/selection/generic_probability_event_selection_parser.py diff --git a/src/distributed_event_factory/parser/datasource/event/selection/ordered_event_selection_parser.py b/distributed_event_factory/parser/datasource/event/selection/ordered_event_selection_parser.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/selection/ordered_event_selection_parser.py rename to distributed_event_factory/parser/datasource/event/selection/ordered_event_selection_parser.py diff --git a/src/distributed_event_factory/parser/datasource/event/selection/uniform_event_selection.py b/distributed_event_factory/parser/datasource/event/selection/uniform_event_selection.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/selection/uniform_event_selection.py rename to distributed_event_factory/parser/datasource/event/selection/uniform_event_selection.py diff --git a/src/distributed_event_factory/parser/datasource/event/transition/__init__.py b/distributed_event_factory/parser/datasource/event/transition/__init__.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/transition/__init__.py rename to distributed_event_factory/parser/datasource/event/transition/__init__.py diff --git a/src/distributed_event_factory/parser/datasource/event/transition/transition_parser.py b/distributed_event_factory/parser/datasource/event/transition/transition_parser.py similarity index 100% rename from src/distributed_event_factory/parser/datasource/event/transition/transition_parser.py rename to distributed_event_factory/parser/datasource/event/transition/transition_parser.py diff --git a/src/distributed_event_factory/parser/kind_parser.py b/distributed_event_factory/parser/kind_parser.py similarity index 99% rename from src/distributed_event_factory/parser/kind_parser.py rename to distributed_event_factory/parser/kind_parser.py index 9ff3090..9983c12 100644 --- a/src/distributed_event_factory/parser/kind_parser.py +++ b/distributed_event_factory/parser/kind_parser.py @@ -1,6 +1,5 @@ from distributed_event_factory.parser.parser import Parser - class KindParser(Parser): def __init__(self): diff --git a/src/distributed_event_factory/parser/parser.py b/distributed_event_factory/parser/parser.py similarity index 100% rename from src/distributed_event_factory/parser/parser.py rename to distributed_event_factory/parser/parser.py diff --git a/src/distributed_event_factory/parser/parser_registry.py b/distributed_event_factory/parser/parser_registry.py similarity index 100% rename from src/distributed_event_factory/parser/parser_registry.py rename to distributed_event_factory/parser/parser_registry.py diff --git a/src/distributed_event_factory/parser/simulation/__init__.py b/distributed_event_factory/parser/simulation/__init__.py similarity index 100% rename from src/distributed_event_factory/parser/simulation/__init__.py rename to distributed_event_factory/parser/simulation/__init__.py diff --git a/src/distributed_event_factory/parser/simulation/case/__init__.py b/distributed_event_factory/parser/simulation/case/__init__.py similarity index 100% rename from src/distributed_event_factory/parser/simulation/case/__init__.py rename to distributed_event_factory/parser/simulation/case/__init__.py diff --git a/src/distributed_event_factory/parser/simulation/case/case_id_parser.py b/distributed_event_factory/parser/simulation/case/case_id_parser.py similarity index 100% rename from src/distributed_event_factory/parser/simulation/case/case_id_parser.py rename to distributed_event_factory/parser/simulation/case/case_id_parser.py diff --git a/src/distributed_event_factory/parser/simulation/case/increasing_case_id_parser.py b/distributed_event_factory/parser/simulation/case/increasing_case_id_parser.py similarity index 100% rename from src/distributed_event_factory/parser/simulation/case/increasing_case_id_parser.py rename to distributed_event_factory/parser/simulation/case/increasing_case_id_parser.py diff --git a/src/distributed_event_factory/parser/simulation/load/__init__.py b/distributed_event_factory/parser/simulation/load/__init__.py similarity index 100% rename from src/distributed_event_factory/parser/simulation/load/__init__.py rename to distributed_event_factory/parser/simulation/load/__init__.py diff --git a/src/distributed_event_factory/parser/simulation/load/constant_load_parser.py b/distributed_event_factory/parser/simulation/load/constant_load_parser.py similarity index 100% rename from src/distributed_event_factory/parser/simulation/load/constant_load_parser.py rename to distributed_event_factory/parser/simulation/load/constant_load_parser.py diff --git a/src/distributed_event_factory/parser/simulation/load/gradual_load_parser.py b/distributed_event_factory/parser/simulation/load/gradual_load_parser.py similarity index 100% rename from src/distributed_event_factory/parser/simulation/load/gradual_load_parser.py rename to distributed_event_factory/parser/simulation/load/gradual_load_parser.py diff --git a/src/distributed_event_factory/parser/simulation/load/load_parser.py b/distributed_event_factory/parser/simulation/load/load_parser.py similarity index 100% rename from src/distributed_event_factory/parser/simulation/load/load_parser.py rename to distributed_event_factory/parser/simulation/load/load_parser.py diff --git a/src/distributed_event_factory/parser/simulation/simulation_parser.py b/distributed_event_factory/parser/simulation/simulation_parser.py similarity index 100% rename from src/distributed_event_factory/parser/simulation/simulation_parser.py rename to distributed_event_factory/parser/simulation/simulation_parser.py diff --git a/src/distributed_event_factory/parser/sink/__init__.py b/distributed_event_factory/parser/sink/__init__.py similarity index 100% rename from src/distributed_event_factory/parser/sink/__init__.py rename to distributed_event_factory/parser/sink/__init__.py diff --git a/src/distributed_event_factory/parser/sink/kafka/__init__.py b/distributed_event_factory/parser/sink/kafka/__init__.py similarity index 100% rename from src/distributed_event_factory/parser/sink/kafka/__init__.py rename to distributed_event_factory/parser/sink/kafka/__init__.py diff --git a/src/distributed_event_factory/parser/sink/kafka/case_partition_parser.py b/distributed_event_factory/parser/sink/kafka/case_partition_parser.py similarity index 100% rename from src/distributed_event_factory/parser/sink/kafka/case_partition_parser.py rename to distributed_event_factory/parser/sink/kafka/case_partition_parser.py diff --git a/src/distributed_event_factory/parser/sink/kafka/constant_partition_parser.py b/distributed_event_factory/parser/sink/kafka/constant_partition_parser.py similarity index 100% rename from src/distributed_event_factory/parser/sink/kafka/constant_partition_parser.py rename to distributed_event_factory/parser/sink/kafka/constant_partition_parser.py diff --git a/src/distributed_event_factory/parser/sink/kafka/kafka_sink_parser.py b/distributed_event_factory/parser/sink/kafka/kafka_sink_parser.py similarity index 100% rename from src/distributed_event_factory/parser/sink/kafka/kafka_sink_parser.py rename to distributed_event_factory/parser/sink/kafka/kafka_sink_parser.py diff --git a/src/distributed_event_factory/parser/sink/kafka/partition_parser.py b/distributed_event_factory/parser/sink/kafka/partition_parser.py similarity index 100% rename from src/distributed_event_factory/parser/sink/kafka/partition_parser.py rename to distributed_event_factory/parser/sink/kafka/partition_parser.py diff --git a/src/distributed_event_factory/parser/sink/print_console_sink_parser.py b/distributed_event_factory/parser/sink/print_console_sink_parser.py similarity index 100% rename from src/distributed_event_factory/parser/sink/print_console_sink_parser.py rename to distributed_event_factory/parser/sink/print_console_sink_parser.py diff --git a/src/distributed_event_factory/parser/sink/sink_parser.py b/distributed_event_factory/parser/sink/sink_parser.py similarity index 100% rename from src/distributed_event_factory/parser/sink/sink_parser.py rename to distributed_event_factory/parser/sink/sink_parser.py diff --git a/src/distributed_event_factory/parser/sink/ui_sink_parser.py b/distributed_event_factory/parser/sink/ui_sink_parser.py similarity index 100% rename from src/distributed_event_factory/parser/sink/ui_sink_parser.py rename to distributed_event_factory/parser/sink/ui_sink_parser.py diff --git a/src/distributed_event_factory/provider/__init__.py b/distributed_event_factory/provider/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/__init__.py rename to distributed_event_factory/provider/__init__.py diff --git a/src/distributed_event_factory/provider/activity/README.md b/distributed_event_factory/provider/activity/README.md similarity index 100% rename from src/distributed_event_factory/provider/activity/README.md rename to distributed_event_factory/provider/activity/README.md diff --git a/src/distributed_event_factory/provider/activity/__init__.py b/distributed_event_factory/provider/activity/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/activity/__init__.py rename to distributed_event_factory/provider/activity/__init__.py diff --git a/src/distributed_event_factory/provider/activity/activity_provider.py b/distributed_event_factory/provider/activity/activity_provider.py similarity index 100% rename from src/distributed_event_factory/provider/activity/activity_provider.py rename to distributed_event_factory/provider/activity/activity_provider.py diff --git a/src/distributed_event_factory/provider/activity/generation/__init__.py b/distributed_event_factory/provider/activity/generation/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/activity/generation/__init__.py rename to distributed_event_factory/provider/activity/generation/__init__.py diff --git a/src/distributed_event_factory/provider/activity/generation/activity_generation_provider.py b/distributed_event_factory/provider/activity/generation/activity_generation_provider.py similarity index 100% rename from src/distributed_event_factory/provider/activity/generation/activity_generation_provider.py rename to distributed_event_factory/provider/activity/generation/activity_generation_provider.py diff --git a/src/distributed_event_factory/provider/activity/selection/__init__.py b/distributed_event_factory/provider/activity/selection/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/activity/selection/__init__.py rename to distributed_event_factory/provider/activity/selection/__init__.py diff --git a/src/distributed_event_factory/provider/activity/selection/activity_selection_provider.py b/distributed_event_factory/provider/activity/selection/activity_selection_provider.py similarity index 100% rename from src/distributed_event_factory/provider/activity/selection/activity_selection_provider.py rename to distributed_event_factory/provider/activity/selection/activity_selection_provider.py diff --git a/src/distributed_event_factory/provider/activity/selection/ordered/__init__.py b/distributed_event_factory/provider/activity/selection/ordered/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/activity/selection/ordered/__init__.py rename to distributed_event_factory/provider/activity/selection/ordered/__init__.py diff --git a/src/distributed_event_factory/provider/activity/selection/ordered/ordered_selection_provider.py b/distributed_event_factory/provider/activity/selection/ordered/ordered_selection_provider.py similarity index 100% rename from src/distributed_event_factory/provider/activity/selection/ordered/ordered_selection_provider.py rename to distributed_event_factory/provider/activity/selection/ordered/ordered_selection_provider.py diff --git a/src/distributed_event_factory/provider/activity/selection/single/__init__.py b/distributed_event_factory/provider/activity/selection/single/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/activity/selection/single/__init__.py rename to distributed_event_factory/provider/activity/selection/single/__init__.py diff --git a/src/distributed_event_factory/provider/activity/selection/single/single_selection_provider.py b/distributed_event_factory/provider/activity/selection/single/single_selection_provider.py similarity index 100% rename from src/distributed_event_factory/provider/activity/selection/single/single_selection_provider.py rename to distributed_event_factory/provider/activity/selection/single/single_selection_provider.py diff --git a/src/distributed_event_factory/provider/activity/selection/uniform/__init__.py b/distributed_event_factory/provider/activity/selection/uniform/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/activity/selection/uniform/__init__.py rename to distributed_event_factory/provider/activity/selection/uniform/__init__.py diff --git a/src/distributed_event_factory/provider/activity/selection/uniform/uniform_selection_provider.py b/distributed_event_factory/provider/activity/selection/uniform/uniform_selection_provider.py similarity index 100% rename from src/distributed_event_factory/provider/activity/selection/uniform/uniform_selection_provider.py rename to distributed_event_factory/provider/activity/selection/uniform/uniform_selection_provider.py diff --git a/src/distributed_event_factory/provider/data/__init__.py b/distributed_event_factory/provider/data/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/data/__init__.py rename to distributed_event_factory/provider/data/__init__.py diff --git a/src/distributed_event_factory/provider/data/case_provider.py b/distributed_event_factory/provider/data/case_provider.py similarity index 100% rename from src/distributed_event_factory/provider/data/case_provider.py rename to distributed_event_factory/provider/data/case_provider.py diff --git a/src/distributed_event_factory/provider/data/increasing_case.py b/distributed_event_factory/provider/data/increasing_case.py similarity index 100% rename from src/distributed_event_factory/provider/data/increasing_case.py rename to distributed_event_factory/provider/data/increasing_case.py diff --git a/src/distributed_event_factory/provider/datasource/__init__.py b/distributed_event_factory/provider/datasource/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/datasource/__init__.py rename to distributed_event_factory/provider/datasource/__init__.py diff --git a/src/distributed_event_factory/provider/datasource/data_source_registry.py b/distributed_event_factory/provider/datasource/data_source_registry.py similarity index 100% rename from src/distributed_event_factory/provider/datasource/data_source_registry.py rename to distributed_event_factory/provider/datasource/data_source_registry.py diff --git a/src/distributed_event_factory/provider/datasource/datasource_id_provider.py b/distributed_event_factory/provider/datasource/datasource_id_provider.py similarity index 100% rename from src/distributed_event_factory/provider/datasource/datasource_id_provider.py rename to distributed_event_factory/provider/datasource/datasource_id_provider.py diff --git a/src/distributed_event_factory/provider/datasource/sensor_topology.py b/distributed_event_factory/provider/datasource/sensor_topology.py similarity index 100% rename from src/distributed_event_factory/provider/datasource/sensor_topology.py rename to distributed_event_factory/provider/datasource/sensor_topology.py diff --git a/src/distributed_event_factory/provider/event/README.md b/distributed_event_factory/provider/event/README.md similarity index 100% rename from src/distributed_event_factory/provider/event/README.md rename to distributed_event_factory/provider/event/README.md diff --git a/src/distributed_event_factory/provider/event/__init__.py b/distributed_event_factory/provider/event/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/event/__init__.py rename to distributed_event_factory/provider/event/__init__.py diff --git a/src/distributed_event_factory/provider/event/event_data.py b/distributed_event_factory/provider/event/event_data.py similarity index 100% rename from src/distributed_event_factory/provider/event/event_data.py rename to distributed_event_factory/provider/event/event_data.py diff --git a/src/distributed_event_factory/provider/event/event_provider.py b/distributed_event_factory/provider/event/event_provider.py similarity index 100% rename from src/distributed_event_factory/provider/event/event_provider.py rename to distributed_event_factory/provider/event/event_provider.py diff --git a/src/distributed_event_factory/provider/eventselection/__init__.py b/distributed_event_factory/provider/eventselection/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/eventselection/__init__.py rename to distributed_event_factory/provider/eventselection/__init__.py diff --git a/src/distributed_event_factory/provider/eventselection/drifting_probability_event_selection_provider.py b/distributed_event_factory/provider/eventselection/drifting_probability_event_selection_provider.py similarity index 100% rename from src/distributed_event_factory/provider/eventselection/drifting_probability_event_selection_provider.py rename to distributed_event_factory/provider/eventselection/drifting_probability_event_selection_provider.py diff --git a/src/distributed_event_factory/provider/eventselection/event_selection_provider.py b/distributed_event_factory/provider/eventselection/event_selection_provider.py similarity index 100% rename from src/distributed_event_factory/provider/eventselection/event_selection_provider.py rename to distributed_event_factory/provider/eventselection/event_selection_provider.py diff --git a/src/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py b/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py similarity index 100% rename from src/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py rename to distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py diff --git a/src/distributed_event_factory/provider/eventselection/ordered_selection_provider.py b/distributed_event_factory/provider/eventselection/ordered_selection_provider.py similarity index 100% rename from src/distributed_event_factory/provider/eventselection/ordered_selection_provider.py rename to distributed_event_factory/provider/eventselection/ordered_selection_provider.py diff --git a/src/distributed_event_factory/provider/eventselection/uniform_selction_provider.py b/distributed_event_factory/provider/eventselection/uniform_selction_provider.py similarity index 100% rename from src/distributed_event_factory/provider/eventselection/uniform_selction_provider.py rename to distributed_event_factory/provider/eventselection/uniform_selction_provider.py diff --git a/src/distributed_event_factory/provider/load/README.md b/distributed_event_factory/provider/load/README.md similarity index 100% rename from src/distributed_event_factory/provider/load/README.md rename to distributed_event_factory/provider/load/README.md diff --git a/src/distributed_event_factory/provider/load/__init__.py b/distributed_event_factory/provider/load/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/load/__init__.py rename to distributed_event_factory/provider/load/__init__.py diff --git a/src/distributed_event_factory/provider/load/load_provider.py b/distributed_event_factory/provider/load/load_provider.py similarity index 100% rename from src/distributed_event_factory/provider/load/load_provider.py rename to distributed_event_factory/provider/load/load_provider.py diff --git a/src/distributed_event_factory/provider/load/load_provider_registry.py b/distributed_event_factory/provider/load/load_provider_registry.py similarity index 100% rename from src/distributed_event_factory/provider/load/load_provider_registry.py rename to distributed_event_factory/provider/load/load_provider_registry.py diff --git a/src/distributed_event_factory/provider/sink/README.md b/distributed_event_factory/provider/sink/README.md similarity index 100% rename from src/distributed_event_factory/provider/sink/README.md rename to distributed_event_factory/provider/sink/README.md diff --git a/src/distributed_event_factory/provider/sink/__init__.py b/distributed_event_factory/provider/sink/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/sink/__init__.py rename to distributed_event_factory/provider/sink/__init__.py diff --git a/src/distributed_event_factory/provider/sink/console/__init__.py b/distributed_event_factory/provider/sink/console/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/sink/console/__init__.py rename to distributed_event_factory/provider/sink/console/__init__.py diff --git a/src/distributed_event_factory/provider/sink/console/console_sink.py b/distributed_event_factory/provider/sink/console/console_sink.py similarity index 100% rename from src/distributed_event_factory/provider/sink/console/console_sink.py rename to distributed_event_factory/provider/sink/console/console_sink.py diff --git a/src/distributed_event_factory/provider/sink/http/__init__.py b/distributed_event_factory/provider/sink/http/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/sink/http/__init__.py rename to distributed_event_factory/provider/sink/http/__init__.py diff --git a/src/distributed_event_factory/provider/sink/http/http_sink.py b/distributed_event_factory/provider/sink/http/http_sink.py similarity index 100% rename from src/distributed_event_factory/provider/sink/http/http_sink.py rename to distributed_event_factory/provider/sink/http/http_sink.py diff --git a/src/distributed_event_factory/provider/sink/kafka/README.md b/distributed_event_factory/provider/sink/kafka/README.md similarity index 100% rename from src/distributed_event_factory/provider/sink/kafka/README.md rename to distributed_event_factory/provider/sink/kafka/README.md diff --git a/src/distributed_event_factory/provider/sink/kafka/__init__.py b/distributed_event_factory/provider/sink/kafka/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/sink/kafka/__init__.py rename to distributed_event_factory/provider/sink/kafka/__init__.py diff --git a/src/distributed_event_factory/provider/sink/kafka/kafka_sink.py b/distributed_event_factory/provider/sink/kafka/kafka_sink.py similarity index 100% rename from src/distributed_event_factory/provider/sink/kafka/kafka_sink.py rename to distributed_event_factory/provider/sink/kafka/kafka_sink.py diff --git a/src/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py b/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py similarity index 100% rename from src/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py rename to distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py diff --git a/src/distributed_event_factory/provider/sink/kafka/partition/__init__.py b/distributed_event_factory/provider/sink/kafka/partition/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/sink/kafka/partition/__init__.py rename to distributed_event_factory/provider/sink/kafka/partition/__init__.py diff --git a/src/distributed_event_factory/provider/sink/kafka/partition/case_partition.py b/distributed_event_factory/provider/sink/kafka/partition/case_partition.py similarity index 100% rename from src/distributed_event_factory/provider/sink/kafka/partition/case_partition.py rename to distributed_event_factory/provider/sink/kafka/partition/case_partition.py diff --git a/src/distributed_event_factory/provider/sink/kafka/partition/constant_partition.py b/distributed_event_factory/provider/sink/kafka/partition/constant_partition.py similarity index 100% rename from src/distributed_event_factory/provider/sink/kafka/partition/constant_partition.py rename to distributed_event_factory/provider/sink/kafka/partition/constant_partition.py diff --git a/src/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py b/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py similarity index 100% rename from src/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py rename to distributed_event_factory/provider/sink/kafka/partition/partition_provider.py diff --git a/src/distributed_event_factory/provider/sink/newsink/__init__.py b/distributed_event_factory/provider/sink/newsink/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/sink/newsink/__init__.py rename to distributed_event_factory/provider/sink/newsink/__init__.py diff --git a/src/distributed_event_factory/provider/sink/newsink/newsink.py b/distributed_event_factory/provider/sink/newsink/newsink.py similarity index 100% rename from src/distributed_event_factory/provider/sink/newsink/newsink.py rename to distributed_event_factory/provider/sink/newsink/newsink.py diff --git a/src/distributed_event_factory/provider/sink/newsink/sinkqueue.py b/distributed_event_factory/provider/sink/newsink/sinkqueue.py similarity index 100% rename from src/distributed_event_factory/provider/sink/newsink/sinkqueue.py rename to distributed_event_factory/provider/sink/newsink/sinkqueue.py diff --git a/src/distributed_event_factory/provider/sink/sink_provider.py b/distributed_event_factory/provider/sink/sink_provider.py similarity index 100% rename from src/distributed_event_factory/provider/sink/sink_provider.py rename to distributed_event_factory/provider/sink/sink_provider.py diff --git a/src/distributed_event_factory/provider/sink/test/__init__.py b/distributed_event_factory/provider/sink/test/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/sink/test/__init__.py rename to distributed_event_factory/provider/sink/test/__init__.py diff --git a/src/distributed_event_factory/provider/sink/test/test_sink.py b/distributed_event_factory/provider/sink/test/test_sink.py similarity index 100% rename from src/distributed_event_factory/provider/sink/test/test_sink.py rename to distributed_event_factory/provider/sink/test/test_sink.py diff --git a/src/distributed_event_factory/provider/sink/test/test_sink_parser.py b/distributed_event_factory/provider/sink/test/test_sink_parser.py similarity index 100% rename from src/distributed_event_factory/provider/sink/test/test_sink_parser.py rename to distributed_event_factory/provider/sink/test/test_sink_parser.py diff --git a/src/distributed_event_factory/provider/sink/ui/__init__.py b/distributed_event_factory/provider/sink/ui/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/sink/ui/__init__.py rename to distributed_event_factory/provider/sink/ui/__init__.py diff --git a/src/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py b/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py similarity index 100% rename from src/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py rename to distributed_event_factory/provider/sink/ui/terminal_ui_sink.py diff --git a/src/distributed_event_factory/provider/transition/__init__.py b/distributed_event_factory/provider/transition/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/transition/__init__.py rename to distributed_event_factory/provider/transition/__init__.py diff --git a/src/distributed_event_factory/provider/transition/duration/__init__.py b/distributed_event_factory/provider/transition/duration/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/transition/duration/__init__.py rename to distributed_event_factory/provider/transition/duration/__init__.py diff --git a/src/distributed_event_factory/provider/transition/duration/constant_duration.py b/distributed_event_factory/provider/transition/duration/constant_duration.py similarity index 100% rename from src/distributed_event_factory/provider/transition/duration/constant_duration.py rename to distributed_event_factory/provider/transition/duration/constant_duration.py diff --git a/src/distributed_event_factory/provider/transition/duration/duration_provider.py b/distributed_event_factory/provider/transition/duration/duration_provider.py similarity index 100% rename from src/distributed_event_factory/provider/transition/duration/duration_provider.py rename to distributed_event_factory/provider/transition/duration/duration_provider.py diff --git a/src/distributed_event_factory/provider/transition/duration/gaussian_duration.py b/distributed_event_factory/provider/transition/duration/gaussian_duration.py similarity index 100% rename from src/distributed_event_factory/provider/transition/duration/gaussian_duration.py rename to distributed_event_factory/provider/transition/duration/gaussian_duration.py diff --git a/src/distributed_event_factory/provider/transition/duration/uniform_duration.py b/distributed_event_factory/provider/transition/duration/uniform_duration.py similarity index 100% rename from src/distributed_event_factory/provider/transition/duration/uniform_duration.py rename to distributed_event_factory/provider/transition/duration/uniform_duration.py diff --git a/src/distributed_event_factory/provider/transition/transition/__init__.py b/distributed_event_factory/provider/transition/transition/__init__.py similarity index 100% rename from src/distributed_event_factory/provider/transition/transition/__init__.py rename to distributed_event_factory/provider/transition/transition/__init__.py diff --git a/src/distributed_event_factory/provider/transition/transition/constant_transition.py b/distributed_event_factory/provider/transition/transition/constant_transition.py similarity index 100% rename from src/distributed_event_factory/provider/transition/transition/constant_transition.py rename to distributed_event_factory/provider/transition/transition/constant_transition.py diff --git a/src/distributed_event_factory/provider/transition/transition/transition_provider.py b/distributed_event_factory/provider/transition/transition/transition_provider.py similarity index 100% rename from src/distributed_event_factory/provider/transition/transition/transition_provider.py rename to distributed_event_factory/provider/transition/transition/transition_provider.py diff --git a/src/distributed_event_factory/provider/transition/transition_provider.py b/distributed_event_factory/provider/transition/transition_provider.py similarity index 100% rename from src/distributed_event_factory/provider/transition/transition_provider.py rename to distributed_event_factory/provider/transition/transition_provider.py diff --git a/src/distributed_event_factory/provider/transition/transition_provider_factory.py b/distributed_event_factory/provider/transition/transition_provider_factory.py similarity index 100% rename from src/distributed_event_factory/provider/transition/transition_provider_factory.py rename to distributed_event_factory/provider/transition/transition_provider_factory.py diff --git a/src/distributed_event_factory/simulation/__init__.py b/distributed_event_factory/simulation/__init__.py similarity index 100% rename from src/distributed_event_factory/simulation/__init__.py rename to distributed_event_factory/simulation/__init__.py diff --git a/src/distributed_event_factory/simulation/countbased_simulation.py b/distributed_event_factory/simulation/countbased_simulation.py similarity index 100% rename from src/distributed_event_factory/simulation/countbased_simulation.py rename to distributed_event_factory/simulation/countbased_simulation.py diff --git a/src/distributed_event_factory/simulation/distributed_event_factory.py b/distributed_event_factory/simulation/distributed_event_factory.py similarity index 100% rename from src/distributed_event_factory/simulation/distributed_event_factory.py rename to distributed_event_factory/simulation/distributed_event_factory.py diff --git a/src/distributed_event_factory/simulation/eventloop/README.md b/distributed_event_factory/simulation/eventloop/README.md similarity index 100% rename from src/distributed_event_factory/simulation/eventloop/README.md rename to distributed_event_factory/simulation/eventloop/README.md diff --git a/src/distributed_event_factory/simulation/eventloop/__init__.py b/distributed_event_factory/simulation/eventloop/__init__.py similarity index 100% rename from src/distributed_event_factory/simulation/eventloop/__init__.py rename to distributed_event_factory/simulation/eventloop/__init__.py diff --git a/src/distributed_event_factory/simulation/eventloop/event_loop.py b/distributed_event_factory/simulation/eventloop/event_loop.py similarity index 100% rename from src/distributed_event_factory/simulation/eventloop/event_loop.py rename to distributed_event_factory/simulation/eventloop/event_loop.py diff --git a/src/distributed_event_factory/simulation/eventloop/event_loop_registry.py b/distributed_event_factory/simulation/eventloop/event_loop_registry.py similarity index 100% rename from src/distributed_event_factory/simulation/eventloop/event_loop_registry.py rename to distributed_event_factory/simulation/eventloop/event_loop_registry.py diff --git a/src/distributed_event_factory/simulation/new_process_simulation.py b/distributed_event_factory/simulation/new_process_simulation.py similarity index 100% rename from src/distributed_event_factory/simulation/new_process_simulation.py rename to distributed_event_factory/simulation/new_process_simulation.py diff --git a/src/distributed_event_factory/simulation/new_simulation2.py b/distributed_event_factory/simulation/new_simulation2.py similarity index 100% rename from src/distributed_event_factory/simulation/new_simulation2.py rename to distributed_event_factory/simulation/new_simulation2.py diff --git a/src/distributed_event_factory/simulation/process_simulator.py b/distributed_event_factory/simulation/process_simulator.py similarity index 100% rename from src/distributed_event_factory/simulation/process_simulator.py rename to distributed_event_factory/simulation/process_simulator.py diff --git a/src/distributed_event_factory/simulation/scheduled_simulation.py b/distributed_event_factory/simulation/scheduled_simulation.py similarity index 100% rename from src/distributed_event_factory/simulation/scheduled_simulation.py rename to distributed_event_factory/simulation/scheduled_simulation.py diff --git a/src/distributed_event_factory/simulation/simulation.py b/distributed_event_factory/simulation/simulation.py similarity index 100% rename from src/distributed_event_factory/simulation/simulation.py rename to distributed_event_factory/simulation/simulation.py diff --git a/src/distributed_event_factory/view/__init__.py b/distributed_event_factory/view/__init__.py similarity index 100% rename from src/distributed_event_factory/view/__init__.py rename to distributed_event_factory/view/__init__.py diff --git a/src/distributed_event_factory/view/terminal.py b/distributed_event_factory/view/terminal.py similarity index 100% rename from src/distributed_event_factory/view/terminal.py rename to distributed_event_factory/view/terminal.py diff --git a/test/integration_test.py b/test/integration_test.py index 29bf422..d4094b9 100644 --- a/test/integration_test.py +++ b/test/integration_test.py @@ -12,6 +12,3 @@ def test_integration(self): event_factory.from_directory(directory="test_files").run() sink_mock: TestSink = event_factory.get_sink("test") self.assertEqual(100, len(sink_mock.event_log)) - -if __name__ == '__main__': - unittest.main() diff --git a/test/test_files/d0-start.yaml b/test/test_files/d0-start.yaml deleted file mode 100644 index cf4ecfb..0000000 --- a/test/test_files/d0-start.yaml +++ /dev/null @@ -1,11 +0,0 @@ -kind: datasource -name: "" -spec: - name: "" - group: "factory" - selection: genericProbability - distribution: [1.0] - eventData: - - activity: "" - transition: "GoodsDelivery" - duration: 0 \ No newline at end of file diff --git a/test/test_files/d1-goods-delivery.yaml b/test/test_files/d1-goods-delivery.yaml deleted file mode 100644 index 72f6148..0000000 --- a/test/test_files/d1-goods-delivery.yaml +++ /dev/null @@ -1,25 +0,0 @@ -kind: datasource -name: "GoodsDelivery" -spec: - name: "GoodsDelivery" - group: "factory" - selection: driftingProbability - startDistribution: [0.1, 0.7, 0.2] - endDistribution: [0.1, 0.2, 0.7] - steps: 1000 - eventData: - - activity: "Reject" - transition: "" - duration: 1 - - activity: "Store" - transition: "GoodsDelivery" - duration: - type: gaussian - mu: 720 - sigma: 120 - - activity: "Pass To Production" - transition: "MaterialPreparation" - duration: - type: uniform - lowerBound: 3 - upperBound: 7 diff --git a/test/test_files/d2-material-preparation.yaml b/test/test_files/d2-material-preparation.yaml deleted file mode 100644 index 8d855ff..0000000 --- a/test/test_files/d2-material-preparation.yaml +++ /dev/null @@ -1,23 +0,0 @@ -kind: datasource -name: "MaterialPreparation" -spec: - name: "MaterialPreparation" - group: "factory" - selection: genericProbability - distribution: [ 0.25, 0.7, 0.05 ] - eventData: - - activity: "MaterialPreparation - Finished" - duration: - type: uniform - lowerBound: 1 - upperBound: 2 - transition: "AssemblyLineSetup" - - activity: "Waiting for Material" - transition: "MaterialPreparation" - duration: 1 - - activity: "Internal Error" - transition: "MaterialPreparation" - duration: - type: gaussian - mu: 500 - sigma: 100 diff --git a/test/test_files/d3-assembly-line-setup.yaml b/test/test_files/d3-assembly-line-setup.yaml deleted file mode 100644 index a74c939..0000000 --- a/test/test_files/d3-assembly-line-setup.yaml +++ /dev/null @@ -1,29 +0,0 @@ -kind: datasource -name: "AssemblyLineSetup" -spec: - name: "AssemblyLineSetup" - group: "factory" - selection: genericProbability - distribution: [ 0.3, 0.4, 0.15, 0.05, 0.1 ] - eventData: - - activity: "Material Not Set Up as expected" - transition: "MaterialPreparation" - duration: - type: uniform - lowerBound: 2 - upperBound: 5 - - activity: "Assembly Line Setup successfully" - transition: "Assembling" - duration: 3 - - activity: "Material in wrong order. Reordering.." - transition: "AssemblyLineSetup" - duration: 1 - - activity: "Maximum Material count exceeded. Remove item" - transition: "AssemblyLineSetup" - duration: 1 - - activity: "Internal Error" - transition: "Assembling" - duration: - type: gaussian - mu: 500 - sigma: 100 diff --git a/test/test_files/d4-assembling.yaml b/test/test_files/d4-assembling.yaml deleted file mode 100644 index eac32a2..0000000 --- a/test/test_files/d4-assembling.yaml +++ /dev/null @@ -1,23 +0,0 @@ -kind: datasource -name: "Assembling" -spec: - name: "Assembling" - group: "factory" - selection: genericProbability - distribution: [ 0.8, 0.1, 0.08, 0.02 ] - eventData: - - activity: "Assembling completed" - duration: 10 - transition: "QualityControl" - - activity: "Overheating" - transition: "" - duration: 2 - - activity: "Item broke" - transition: "" - duration: 1 - - activity: "Internal Error" - transition: "Assembling" - duration: - type: gaussian - mu: 500 - sigma: 100 \ No newline at end of file diff --git a/test/test_files/d5-quality-control.yaml b/test/test_files/d5-quality-control.yaml deleted file mode 100644 index c25d814..0000000 --- a/test/test_files/d5-quality-control.yaml +++ /dev/null @@ -1,20 +0,0 @@ -kind: datasource -name: "QualityControl" -spec: - name: "QualityControl" - group: "factory" - selection: genericProbability - distribution: [ 0.3, 0.1, 0.6 ] - eventData: - - activity: "Item Needs Corrections" - transition: "Assembling" - duration: 2 - - activity: "Quality Insufficient" - transition: "" - duration: 2 - - activity: "Quality check passed" - transition: "Packaging" - duration: - type: uniform - lowerBound: 5 - upperBound: 10 diff --git a/test/test_files/d6-packaging.yaml b/test/test_files/d6-packaging.yaml deleted file mode 100644 index cd47264..0000000 --- a/test/test_files/d6-packaging.yaml +++ /dev/null @@ -1,11 +0,0 @@ -kind: datasource -name: "Packaging" -spec: - name: "Packaging" - group: "factory" - selection: genericProbability - distribution: [ 1.0 ] - eventData: - - activity: "Packaging completed" - transition: "Shipping" - duration: 3 diff --git a/test/test_files/d7-shipping.yaml b/test/test_files/d7-shipping.yaml deleted file mode 100644 index ea1232d..0000000 --- a/test/test_files/d7-shipping.yaml +++ /dev/null @@ -1,14 +0,0 @@ -kind: datasource -name: "Shipping" -spec: - name: "Shipping" - group: "factory" - selection: genericProbability - distribution: [ 0.8, 0.2 ] - eventData: - - activity: "Package waits for sending" - transition: "Shipping" - duration: 180 - - activity: "Package sent" - transition: "" - duration: 1 \ No newline at end of file From c7b8c72cbfde62e8aff5bc1be0aea56b552e5c06 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Fri, 18 Oct 2024 21:04:13 +0200 Subject: [PATCH 019/124] build unittest pipeline --- test/integration_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration_test.py b/test/integration_test.py index d4094b9..d493b51 100644 --- a/test/integration_test.py +++ b/test/integration_test.py @@ -9,6 +9,6 @@ class IntegrationTest(unittest.TestCase): def test_integration(self): event_factory = EventFactory() event_factory.add_sink_parser("test", TestSinkParser()) - event_factory.from_directory(directory="test_files").run() + event_factory.from_directory(directory="test/test_files").run() sink_mock: TestSink = event_factory.get_sink("test") self.assertEqual(100, len(sink_mock.event_log)) From 79e01675bd08358bd0e51f07e2c61e409fe44bae Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Mon, 21 Oct 2024 14:44:50 +0200 Subject: [PATCH 020/124] fix the integration test --- .github/workflows/test-pypi.yml | 3 --- config/assemblyline/{ => datasource}/d0-start.yaml | 0 .../assemblyline/{ => datasource}/d1-goods-delivery.yaml | 0 .../{ => datasource}/d2-material-preparation.yaml | 0 .../{ => datasource}/d3-assembly-line-setup.yaml | 0 config/assemblyline/{ => datasource}/d4-assembling.yaml | 0 .../assemblyline/{ => datasource}/d5-quality-control.yaml | 0 config/assemblyline/{ => datasource}/d6-packaging.yaml | 0 config/assemblyline/{ => datasource}/d7-shipping.yaml | 0 config/assemblyline/{ => sink}/s1-console.yaml | 0 config/assemblyline/{ => sink}/s2-ui.yaml | 0 distributed_event_factory/event_factory.py | 2 +- distributed_event_factory/main.py | 2 +- pyproject.toml | 2 +- test/integration_test.py | 7 +++++-- 15 files changed, 8 insertions(+), 8 deletions(-) rename config/assemblyline/{ => datasource}/d0-start.yaml (100%) rename config/assemblyline/{ => datasource}/d1-goods-delivery.yaml (100%) rename config/assemblyline/{ => datasource}/d2-material-preparation.yaml (100%) rename config/assemblyline/{ => datasource}/d3-assembly-line-setup.yaml (100%) rename config/assemblyline/{ => datasource}/d4-assembling.yaml (100%) rename config/assemblyline/{ => datasource}/d5-quality-control.yaml (100%) rename config/assemblyline/{ => datasource}/d6-packaging.yaml (100%) rename config/assemblyline/{ => datasource}/d7-shipping.yaml (100%) rename config/assemblyline/{ => sink}/s1-console.yaml (100%) rename config/assemblyline/{ => sink}/s2-ui.yaml (100%) diff --git a/.github/workflows/test-pypi.yml b/.github/workflows/test-pypi.yml index 3edd5fd..d7ddc3c 100644 --- a/.github/workflows/test-pypi.yml +++ b/.github/workflows/test-pypi.yml @@ -33,9 +33,6 @@ jobs: name: python-package-distributions path: dist/ - - - publish-to-testpypi: name: Publish Python 🐍 distribution 📦 to TestPyPI needs: diff --git a/config/assemblyline/d0-start.yaml b/config/assemblyline/datasource/d0-start.yaml similarity index 100% rename from config/assemblyline/d0-start.yaml rename to config/assemblyline/datasource/d0-start.yaml diff --git a/config/assemblyline/d1-goods-delivery.yaml b/config/assemblyline/datasource/d1-goods-delivery.yaml similarity index 100% rename from config/assemblyline/d1-goods-delivery.yaml rename to config/assemblyline/datasource/d1-goods-delivery.yaml diff --git a/config/assemblyline/d2-material-preparation.yaml b/config/assemblyline/datasource/d2-material-preparation.yaml similarity index 100% rename from config/assemblyline/d2-material-preparation.yaml rename to config/assemblyline/datasource/d2-material-preparation.yaml diff --git a/config/assemblyline/d3-assembly-line-setup.yaml b/config/assemblyline/datasource/d3-assembly-line-setup.yaml similarity index 100% rename from config/assemblyline/d3-assembly-line-setup.yaml rename to config/assemblyline/datasource/d3-assembly-line-setup.yaml diff --git a/config/assemblyline/d4-assembling.yaml b/config/assemblyline/datasource/d4-assembling.yaml similarity index 100% rename from config/assemblyline/d4-assembling.yaml rename to config/assemblyline/datasource/d4-assembling.yaml diff --git a/config/assemblyline/d5-quality-control.yaml b/config/assemblyline/datasource/d5-quality-control.yaml similarity index 100% rename from config/assemblyline/d5-quality-control.yaml rename to config/assemblyline/datasource/d5-quality-control.yaml diff --git a/config/assemblyline/d6-packaging.yaml b/config/assemblyline/datasource/d6-packaging.yaml similarity index 100% rename from config/assemblyline/d6-packaging.yaml rename to config/assemblyline/datasource/d6-packaging.yaml diff --git a/config/assemblyline/d7-shipping.yaml b/config/assemblyline/datasource/d7-shipping.yaml similarity index 100% rename from config/assemblyline/d7-shipping.yaml rename to config/assemblyline/datasource/d7-shipping.yaml diff --git a/config/assemblyline/s1-console.yaml b/config/assemblyline/sink/s1-console.yaml similarity index 100% rename from config/assemblyline/s1-console.yaml rename to config/assemblyline/sink/s1-console.yaml diff --git a/config/assemblyline/s2-ui.yaml b/config/assemblyline/sink/s2-ui.yaml similarity index 100% rename from config/assemblyline/s2-ui.yaml rename to config/assemblyline/sink/s2-ui.yaml diff --git a/distributed_event_factory/event_factory.py b/distributed_event_factory/event_factory.py index 28a24dc..aa94ec8 100644 --- a/distributed_event_factory/event_factory.py +++ b/distributed_event_factory/event_factory.py @@ -42,7 +42,7 @@ def get_datasource(self, datasource_key): def get_sink(self, sink_key): return self.sinks[sink_key] - def from_directory(self, directory): + def add_directory(self, directory): for filename in os.listdir(directory): with open(directory + "/" + filename) as file: configuration = yaml.safe_load(file) diff --git a/distributed_event_factory/main.py b/distributed_event_factory/main.py index 997f343..dcc9f68 100644 --- a/distributed_event_factory/main.py +++ b/distributed_event_factory/main.py @@ -26,4 +26,4 @@ def parse(self, config): if __name__ == '__main__': event_factory = EventFactory() event_factory.parser.load_parser.add_dependency("sinus", SinusLoadParser()) - event_factory.from_directory("config/assemblyline") + event_factory.add_directory("config/assemblyline") diff --git a/pyproject.toml b/pyproject.toml index ec5c132..780c720 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "distributed-event-factory" -version = "0.2.0.dev5" +version = "0.2.0.dev6" authors = [ { name="Hendrik Reiter", email="hendrik.reiter@email.uni-kiel.de" }, ] diff --git a/test/integration_test.py b/test/integration_test.py index d493b51..dd3fd5a 100644 --- a/test/integration_test.py +++ b/test/integration_test.py @@ -4,11 +4,14 @@ from distributed_event_factory.provider.sink.test.test_sink import TestSink from distributed_event_factory.provider.sink.test.test_sink_parser import TestSinkParser -class IntegrationTest(unittest.TestCase): +class IntegrationTest(unittest.TestCase): def test_integration(self): event_factory = EventFactory() event_factory.add_sink_parser("test", TestSinkParser()) - event_factory.from_directory(directory="test/test_files").run() + (event_factory + .add_directory(directory="config/assemblyline/datasource") + .add_directory(directory="test/test_files") + .run()) sink_mock: TestSink = event_factory.get_sink("test") self.assertEqual(100, len(sink_mock.event_log)) From 448a2aecb12dfffd88d60b9d02face67edac0d55 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Mon, 21 Oct 2024 15:59:34 +0200 Subject: [PATCH 021/124] refactor to three types of process simulators --- .../{ => simulation}/simulation.yaml | 4 +- distributed_event_factory/main.py | 6 +- .../parser/parser_registry.py | 33 ++++++--- .../parser/simulation/simulation_parser.py | 10 +-- .../variant/countbased_simulation_parser.py | 17 +++++ .../variant/loadtest_simulation_parser.py | 18 +++++ .../variant/stream_simulation_parser.py | 17 +++++ .../provider/sink/sink_provider.py | 1 - ...countbased_simulation.py => countbased.py} | 4 +- .../simulation/distributed_event_factory.py | 35 ---------- .../simulation/eventloop/README.md | 7 -- .../eventloop/event_loop_registry.py | 11 --- .../simulation/load_test.py | 39 +++++++++++ .../simulation/new_simulation2.py | 48 ------------- ...ss_simulation.py => process_simulation.py} | 2 +- .../simulation/process_simulator.py | 67 ------------------- .../simulation/simulation.py | 32 --------- ...led_simulation.py => stream_simulation.py} | 32 +++------ test/test_files/simulation.yaml | 10 +-- 19 files changed, 137 insertions(+), 256 deletions(-) rename config/assemblyline/{ => simulation}/simulation.yaml (78%) create mode 100644 distributed_event_factory/parser/simulation/variant/countbased_simulation_parser.py create mode 100644 distributed_event_factory/parser/simulation/variant/loadtest_simulation_parser.py create mode 100644 distributed_event_factory/parser/simulation/variant/stream_simulation_parser.py rename distributed_event_factory/simulation/{countbased_simulation.py => countbased.py} (85%) delete mode 100644 distributed_event_factory/simulation/distributed_event_factory.py delete mode 100644 distributed_event_factory/simulation/eventloop/README.md delete mode 100644 distributed_event_factory/simulation/eventloop/event_loop_registry.py create mode 100644 distributed_event_factory/simulation/load_test.py delete mode 100644 distributed_event_factory/simulation/new_simulation2.py rename distributed_event_factory/simulation/{new_process_simulation.py => process_simulation.py} (99%) delete mode 100644 distributed_event_factory/simulation/process_simulator.py delete mode 100644 distributed_event_factory/simulation/simulation.py rename distributed_event_factory/simulation/{scheduled_simulation.py => stream_simulation.py} (54%) diff --git a/config/assemblyline/simulation.yaml b/config/assemblyline/simulation/simulation.yaml similarity index 78% rename from config/assemblyline/simulation.yaml rename to config/assemblyline/simulation/simulation.yaml index a085bea..7bbc8f0 100644 --- a/config/assemblyline/simulation.yaml +++ b/config/assemblyline/simulation/simulation.yaml @@ -1,8 +1,10 @@ kind: simulation name: assembly-line-simulation spec: + type: stream + steps: 100 caseId: increasing - timeFrameDuration: 10 + timeframe: 10 load: loadBehavior: gradual tickCount: 100 diff --git a/distributed_event_factory/main.py b/distributed_event_factory/main.py index dcc9f68..9407647 100644 --- a/distributed_event_factory/main.py +++ b/distributed_event_factory/main.py @@ -26,4 +26,8 @@ def parse(self, config): if __name__ == '__main__': event_factory = EventFactory() event_factory.parser.load_parser.add_dependency("sinus", SinusLoadParser()) - event_factory.add_directory("config/assemblyline") + (event_factory + .add_directory("../config/assemblyline/simulation") + .add_directory("../config/assemblyline/datasource") + .add_directory("../config/assemblyline/sink") + ).run() diff --git a/distributed_event_factory/parser/parser_registry.py b/distributed_event_factory/parser/parser_registry.py index d9d6718..872d1f5 100644 --- a/distributed_event_factory/parser/parser_registry.py +++ b/distributed_event_factory/parser/parser_registry.py @@ -25,6 +25,9 @@ from distributed_event_factory.parser.simulation.load.gradual_load_parser import GradualLoadParser from distributed_event_factory.parser.simulation.load.load_parser import LoadParser from distributed_event_factory.parser.simulation.simulation_parser import SimulationParser +from distributed_event_factory.parser.simulation.variant.countbased_simulation_parser import CountBasedSimulationParser +from distributed_event_factory.parser.simulation.variant.loadtest_simulation_parser import LoadTestSimulationParser +from distributed_event_factory.parser.simulation.variant.stream_simulation_parser import StreamSimulationParser from distributed_event_factory.parser.sink.kafka.case_partition_parser import CasePartitionParser from distributed_event_factory.parser.sink.kafka.constant_partition_parser import ConstantPartitionParser from distributed_event_factory.parser.sink.kafka.kafka_sink_parser import KafkaSinkParser @@ -45,7 +48,6 @@ def __init__(self): .add_dependency("constant", self.constant_partition_parser) .add_dependency("case", self.case_partition_parser)) - # Sinks self.console_sink_parser = (PrintConsoleSinkParser()) self.ui_sink_parser = (UiSinkParser()) @@ -79,19 +81,17 @@ def __init__(self): # Distribution self.distribution_parser = (DistributionParser()) - self.uniform_event_selection_parser = (UniformEventSelectionParser()) self.ordered_event_selection_parser = (OrderedEventSelectionParser()) self.drifting_selection_parser = (DriftingProbabilityEventSelectionParser() - .add_dependency("distribution", self.distribution_parser) - .add_dependency("eventData", self.event_data_list_parser)) + .add_dependency("distribution", self.distribution_parser) + .add_dependency("eventData", self.event_data_list_parser)) self.probability_selection_parser = (GenericProbabilityEventSelectionParser() .add_dependency("distribution", self.distribution_parser) .add_dependency("eventData", self.event_data_list_parser)) - # Event Selection self.event_selection_parser = (EventSelectionParser() .add_dependency("ordered", self.ordered_event_selection_parser) @@ -118,13 +118,24 @@ def __init__(self): .add_dependency("gradual", self.gradual_load_parser)) # Simulation + self.count_based_simulation: CountBasedSimulationParser = (CountBasedSimulationParser() + .add_dependency("caseId", self.case_id_parser)) + + self.load_test_simulation: LoadTestSimulationParser = (LoadTestSimulationParser() + .add_dependency("load", self.load_parser) + .add_dependency("caseId", self.case_id_parser)) + + self.stream_simulation: StreamSimulationParser = (StreamSimulationParser() + .add_dependency("load", self.load_parser) + .add_dependency("caseId", self.case_id_parser)) + self.simulation_parser: SimulationParser = (SimulationParser() - .add_dependency("load", self.load_parser) - .add_dependency("caseId", self.case_id_parser)) + .add_dependency("stream", self.stream_simulation) + .add_dependency("countBased", self.count_based_simulation) + .add_dependency("loadTest", self.load_test_simulation)) # Kind self.kind_parser: KindParser = (KindParser() - .add_dependency("sink", self.sink_parser) - .add_dependency("datasource", self.datasource_parser) - .add_dependency("simulation", self.simulation_parser)) - + .add_dependency("sink", self.sink_parser) + .add_dependency("datasource", self.datasource_parser) + .add_dependency("simulation", self.simulation_parser)) diff --git a/distributed_event_factory/parser/simulation/simulation_parser.py b/distributed_event_factory/parser/simulation/simulation_parser.py index bc026b1..d224dd7 100644 --- a/distributed_event_factory/parser/simulation/simulation_parser.py +++ b/distributed_event_factory/parser/simulation/simulation_parser.py @@ -1,6 +1,3 @@ -from distributed_event_factory.simulation.countbased_simulation import CountBasedSimulation -from distributed_event_factory.simulation.scheduled_simulation import NewSimulation - class SimulationParser: def __init__(self): @@ -11,9 +8,4 @@ def add_dependency(self, key: str, dependency): return self def parse(self, config): - return CountBasedSimulation( - #load_provider=self.dependencies["load"].parse(config["load"]), - #time_frame_duration=config["timeFrameDuration"], - case_id_provider=self.dependencies["caseId"].parse(config["caseId"]), - simulation_steps=100 - ) + return self.dependencies[config["type"]].parse(config) \ No newline at end of file diff --git a/distributed_event_factory/parser/simulation/variant/countbased_simulation_parser.py b/distributed_event_factory/parser/simulation/variant/countbased_simulation_parser.py new file mode 100644 index 0000000..d42f55e --- /dev/null +++ b/distributed_event_factory/parser/simulation/variant/countbased_simulation_parser.py @@ -0,0 +1,17 @@ +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.simulation.countbased import CountBasedSimulation + + +class CountBasedSimulationParser(Parser): + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + return CountBasedSimulation( + simulation_steps=config["steps"], + case_id_provider=self.dependencies["caseId"].parse(config["caseId"]) + ) \ No newline at end of file diff --git a/distributed_event_factory/parser/simulation/variant/loadtest_simulation_parser.py b/distributed_event_factory/parser/simulation/variant/loadtest_simulation_parser.py new file mode 100644 index 0000000..d7389aa --- /dev/null +++ b/distributed_event_factory/parser/simulation/variant/loadtest_simulation_parser.py @@ -0,0 +1,18 @@ +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.simulation.load_test import LoadTestSimulation + + +class LoadTestSimulationParser(Parser): + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + return LoadTestSimulation( + case_id_provider=self.dependencies["caseId"].parse(config["caseId"]), + load_provider=self.dependencies["load"].parse(config["load"]), + time_frame_duration=config["timeframe"] + ) \ No newline at end of file diff --git a/distributed_event_factory/parser/simulation/variant/stream_simulation_parser.py b/distributed_event_factory/parser/simulation/variant/stream_simulation_parser.py new file mode 100644 index 0000000..c692433 --- /dev/null +++ b/distributed_event_factory/parser/simulation/variant/stream_simulation_parser.py @@ -0,0 +1,17 @@ +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.simulation.stream_simulation import StreamSimulation + + +class StreamSimulationParser(Parser): + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + return StreamSimulation( + case_id_provider=self.dependencies["caseId"].parse(config["caseId"]), + load_provider=self.dependencies["load"].parse(config["load"]) + ) \ No newline at end of file diff --git a/distributed_event_factory/provider/sink/sink_provider.py b/distributed_event_factory/provider/sink/sink_provider.py index ba3e0cf..a93c241 100644 --- a/distributed_event_factory/provider/sink/sink_provider.py +++ b/distributed_event_factory/provider/sink/sink_provider.py @@ -2,7 +2,6 @@ from distributed_event_factory.core.event import Event - class Sink: def __init__(self, data_source_ref): self.data_source_ref = data_source_ref diff --git a/distributed_event_factory/simulation/countbased_simulation.py b/distributed_event_factory/simulation/countbased.py similarity index 85% rename from distributed_event_factory/simulation/countbased_simulation.py rename to distributed_event_factory/simulation/countbased.py index 05e81a5..8653250 100644 --- a/distributed_event_factory/simulation/countbased_simulation.py +++ b/distributed_event_factory/simulation/countbased.py @@ -1,5 +1,5 @@ from distributed_event_factory.provider.data.case_provider import CaseIdProvider -from distributed_event_factory.simulation.new_process_simulation import NewProcessSimulator +from distributed_event_factory.simulation.process_simulation import ProcessSimulator class CountBasedSimulation: @@ -20,7 +20,7 @@ def run_simulation(self, datasources, sinks): for sink in sinks: for data_source in sinks[sink].data_source_ref: self.sinks[data_source] = sinks[sink] - process_simulator = NewProcessSimulator( + process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=datasources ) diff --git a/distributed_event_factory/simulation/distributed_event_factory.py b/distributed_event_factory/simulation/distributed_event_factory.py deleted file mode 100644 index 2249666..0000000 --- a/distributed_event_factory/simulation/distributed_event_factory.py +++ /dev/null @@ -1,35 +0,0 @@ -import yaml - -from distributed_event_factory.provider.provider_registry import ProviderRegistry -from distributed_event_factory.simulation.simulation import Simulation - -class DistributedEventFactory: - - def __init__( - self, - number_of_data_sources_provider, - case_id_provider, - event_loop, - data_source_topology_provider - ): - self.simulation = Simulation( - number_of_data_sources_provider=number_of_data_sources_provider, - event_loop=event_loop, - case_id_provider=case_id_provider, - data_source_topology_provider=data_source_topology_provider - ) - - @classmethod - def from_config_file(cls, configuration_file): - with open(configuration_file) as file: - configuration = yaml.safe_load(file) - registry = ProviderRegistry(configuration) - return cls( - number_of_data_sources_provider=registry.get("numberOfDataSources"), - case_id_provider=registry.get("caseId"), - event_loop=registry.get("eventLoop"), - data_source_topology_provider=registry.get("dataSourceTopology"), - ) - - def start(self): - self.simulation.start() diff --git a/distributed_event_factory/simulation/eventloop/README.md b/distributed_event_factory/simulation/eventloop/README.md deleted file mode 100644 index 84945c1..0000000 --- a/distributed_event_factory/simulation/eventloop/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Event Loop - -Currently, two types of event loops are supported - -`type: load` creates an event loop where the speed of the simulation can be controlled. This should normally be used. - -`type: debug` addresses the issue that the load type does not give stack trace during development \ No newline at end of file diff --git a/distributed_event_factory/simulation/eventloop/event_loop_registry.py b/distributed_event_factory/simulation/eventloop/event_loop_registry.py deleted file mode 100644 index a283926..0000000 --- a/distributed_event_factory/simulation/eventloop/event_loop_registry.py +++ /dev/null @@ -1,11 +0,0 @@ -from distributed_event_factory.provider.load.load_provider_registry import LoadProviderRegistry -from distributed_event_factory.simulation.eventloop.event_loop import DebugEventLoop, LoadEventLoop - - -class EventLoopRegistry: - - def get(self, config): - registry = dict() - registry["debug"] = lambda config: DebugEventLoop() - registry["load"] = lambda config: LoadEventLoop(LoadProviderRegistry().get(config)) - return registry[config["type"]](config) diff --git a/distributed_event_factory/simulation/load_test.py b/distributed_event_factory/simulation/load_test.py new file mode 100644 index 0000000..a90932e --- /dev/null +++ b/distributed_event_factory/simulation/load_test.py @@ -0,0 +1,39 @@ +from typing import Dict +from distributed_event_factory.core.datasource import DataSource +from distributed_event_factory.provider.data.case_provider import CaseIdProvider +from distributed_event_factory.provider.load.load_provider import LoadProvider +from distributed_event_factory.provider.sink.http.http_sink import HttpSink +from distributed_event_factory.provider.sink.sink_provider import Sink +from distributed_event_factory.simulation.process_simulation import ProcessSimulator + +class LoadTestSimulation: + def __init__( + self, + load_provider: LoadProvider, + time_frame_duration: int, + case_id_provider: CaseIdProvider, + ): + self.case_id_provider = case_id_provider + self.load_provider = load_provider + self.time_frame_duration = time_frame_duration + + def start(self, sinks): + for sink in sinks: + sinks[sink].start_timeframe() + + def end(self, sinks): + for sink in sinks: + sinks[sink].end_timeframe() + + def run_simulation(self, sinks: Dict[str, HttpSink], data_sources: Dict[str, DataSource]): + process_simulator = ProcessSimulator( + case_id_provider=self.case_id_provider, + data_sources=data_sources + ) + while True: + self.start(sinks) + for i in range(self.load_provider.get_load_value()): + event = process_simulator.simulate() + if event: + sinks[event.node].send(event) + self.end(sinks) diff --git a/distributed_event_factory/simulation/new_simulation2.py b/distributed_event_factory/simulation/new_simulation2.py deleted file mode 100644 index a56543f..0000000 --- a/distributed_event_factory/simulation/new_simulation2.py +++ /dev/null @@ -1,48 +0,0 @@ -from typing import Dict -from distributed_event_factory.core.datasource import DataSource -from distributed_event_factory.provider.data.case_provider import CaseIdProvider -from distributed_event_factory.provider.load.load_provider import LoadProvider -from distributed_event_factory.provider.sink.sink_provider import Sink -from distributed_event_factory.simulation.new_process_simulation import NewProcessSimulator - - -class NewSimulation2: - def __init__( - self, - load_provider: LoadProvider, - time_frame_duration: int, - case_id_provider: CaseIdProvider, - sinks: Dict[str, Sink], - data_sources: Dict[str, DataSource], - ): - self.case_id_provider = case_id_provider - self.data_sources = data_sources - self.sinks = sinks - self.load_provider = load_provider - self.time_frame_duration = time_frame_duration - - def send_event(self, event): - self.sinks[event.node].send(event) - - def start(self): - for sink in self.sinks: - self.sinks[sink].start_timeframe() - - def end(self): - for sink in self.sinks: - self.sinks[sink].end_timeframe() - - def send_event(self, event): - if event: - self.sinks[event.node].send(event) - - def run_simulation(self): - process_simulator = NewProcessSimulator( - case_id_provider=self.case_id_provider, - data_sources=self.data_sources - ) - while True: - self.start() - for i in range(self.load_provider.get_load_value()): - self.send_event(process_simulator.simulate()), - self.end() diff --git a/distributed_event_factory/simulation/new_process_simulation.py b/distributed_event_factory/simulation/process_simulation.py similarity index 99% rename from distributed_event_factory/simulation/new_process_simulation.py rename to distributed_event_factory/simulation/process_simulation.py index dd08695..b4e6dad 100644 --- a/distributed_event_factory/simulation/new_process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -8,7 +8,7 @@ from distributed_event_factory.core.event import Event from distributed_event_factory.provider.data.case_provider import CaseIdProvider -class NewProcessSimulator: +class ProcessSimulator: def __init__( self, data_sources: Dict[str, DataSource], diff --git a/distributed_event_factory/simulation/process_simulator.py b/distributed_event_factory/simulation/process_simulator.py deleted file mode 100644 index 14d5375..0000000 --- a/distributed_event_factory/simulation/process_simulator.py +++ /dev/null @@ -1,67 +0,0 @@ -import random -import string -from datetime import datetime, timedelta -from typing import List - -from distributed_event_factory.core.datasource import DataSource -from distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID, DataSourceId -from distributed_event_factory.core.event import Event -from distributed_event_factory.provider.data.case_provider import CaseIdProvider - -class ProcessSimulator: - def __init__( - self, - data_sources: List[DataSource], - case_id_provider: CaseIdProvider): - self.tokens: List[Token] = [] - self.sensors: List[DataSource] = data_sources - self.case_id_provider = case_id_provider - self.last_time = datetime.now() - self.i = 0 - - def simulate(self) -> Event: - if not self.tokens: - case_id = self.case_id_provider.get() - self.tokens.append(Token(case_id, START_SENSOR_ID, self.last_time)) - - token = self.tokens[int(random.uniform(0, len(self.tokens)))] - current_data_source = self._get_sensor_with_id(token.data_source_id) - event = current_data_source.get_event_provider().get_event_data() - next_datasource = event.get_transition() - - if token.data_source_id == END_DATA_SOURCE_ID: - event=current_data_source.emit_event(token.case, event.get_activity(), token.last_timestamp) - self.tokens.remove(token) - return event - else: - activity = event.get_activity() - token.add_to_last_timestamp(duration=event.get_duration()) - last_timestamp = token.last_timestamp - event = current_data_source.emit_event(token.case, activity, last_timestamp) - self.last_time = last_timestamp - token.set_data_source_id(self.sensors[next_datasource + 1].get_id()) - return event - - def _get_sensor_with_id(self, sensor_id) -> DataSource: - for sensor in self.sensors: - if sensor.get_id() == sensor_id: - return sensor - raise ValueError("Sensor not found") - - -class Token: - def __init__( - self, - case: string, - data_source_id: DataSourceId, - last_timestamp: datetime - ): - self.case = case - self.data_source_id = data_source_id - self.last_timestamp = last_timestamp - - def set_data_source_id(self, data_source_id): - self.data_source_id = data_source_id - - def add_to_last_timestamp(self, duration): - self.last_timestamp += timedelta(minutes=duration) diff --git a/distributed_event_factory/simulation/simulation.py b/distributed_event_factory/simulation/simulation.py deleted file mode 100644 index b451ee6..0000000 --- a/distributed_event_factory/simulation/simulation.py +++ /dev/null @@ -1,32 +0,0 @@ -from distributed_event_factory.provider.data.case_provider import CaseIdProvider -from distributed_event_factory.provider.datasource.sensor_topology import DataSourceTopologyProvider -from distributed_event_factory.provider.generic.count_provider import CountProvider -from distributed_event_factory.simulation.eventloop.event_loop import EventLoop -from distributed_event_factory.simulation.process_simulator import ProcessSimulator - - -class Simulation: - - def __init__( - self, - number_of_data_sources_provider: CountProvider, - data_source_topology_provider: DataSourceTopologyProvider, - case_id_provider: CaseIdProvider, - event_loop: EventLoop - ): - self.number_of_data_sources_provider: CountProvider = number_of_data_sources_provider - self.data_source_topology_provider: DataSourceTopologyProvider = data_source_topology_provider - self.case_id_provider: CaseIdProvider = case_id_provider - self.event_loop = event_loop - - def start(self): - number_of_data_sources = self.number_of_data_sources_provider.get() - data_sources = self.data_source_topology_provider.get_sensor_topology(number_of_data_sources) - process_simulator = ProcessSimulator( - data_sources=data_sources, - case_id_provider=self.case_id_provider, - ) - try: - self.event_loop.run(process_simulator) - except KeyboardInterrupt: - print("Simulation ended by user") \ No newline at end of file diff --git a/distributed_event_factory/simulation/scheduled_simulation.py b/distributed_event_factory/simulation/stream_simulation.py similarity index 54% rename from distributed_event_factory/simulation/scheduled_simulation.py rename to distributed_event_factory/simulation/stream_simulation.py index b27acf1..f861178 100644 --- a/distributed_event_factory/simulation/scheduled_simulation.py +++ b/distributed_event_factory/simulation/stream_simulation.py @@ -3,50 +3,36 @@ from scheduled_futures import ScheduledThreadPoolExecutor from distributed_event_factory.provider.data.case_provider import CaseIdProvider from distributed_event_factory.provider.load.load_provider import LoadProvider -from distributed_event_factory.simulation.new_process_simulation import NewProcessSimulator - -class NewSimulation: - def send_event(self, event): - self.sinks[event.node].send(event) +from distributed_event_factory.simulation.process_simulation import ProcessSimulator +class StreamSimulation: def __init__( self, load_provider: LoadProvider, - time_frame_duration: int, case_id_provider: CaseIdProvider, ): self.case_id_provider = case_id_provider self.load_provider = load_provider - self.time_frame_duration = time_frame_duration self.sinks = dict() - def start(self): - for sink in self.sinks: - self.sinks[sink].start_timeframe() - - def end(self): - for sink in self.sinks: - self.sinks[sink].end_timeframe() - - def send_event(self, event): - self.sinks[event.node].send(event) + def send_event(self, sinks, event): + sinks[event.node].send(event) def run_simulation(self, datasources, sinks): + mapped_sinks = dict() for sink in sinks: for data_source in sinks[sink].data_source_ref: - self.sinks[data_source] = sinks[sink] - process_simulator = NewProcessSimulator( + mapped_sinks[data_source] = sinks[sink] + + process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=datasources ) - process_simulator.simulate() while True: with ScheduledThreadPoolExecutor() as executor: - #self.start() scheduler = executor.schedule( - lambda: self.send_event(process_simulator.simulate()), + lambda: self.send_event(mapped_sinks, process_simulator.simulate()), period=1/self.load_provider.get_load_value() ) time.sleep(1) - #self.end() scheduler.cancel() diff --git a/test/test_files/simulation.yaml b/test/test_files/simulation.yaml index 2a549f4..742277a 100644 --- a/test/test_files/simulation.yaml +++ b/test/test_files/simulation.yaml @@ -1,10 +1,6 @@ kind: simulation name: test spec: - caseId: increasing - timeFrameDuration: 10 - load: - loadBehavior: gradual - tickCount: 100 - minimalLoad: 5 - load: 10 \ No newline at end of file + type: countBased + steps: 100 + caseId: increasing \ No newline at end of file From 4fb83c1b5fa54b3a6f637a04ecac611888ed5353 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Mon, 21 Oct 2024 16:40:20 +0200 Subject: [PATCH 022/124] build in loadtest module --- .../assemblyline/simulation/simulation.yaml | 2 +- .../sink/loadtest/loadtest-sink.yaml | 15 ++++++ distributed_event_factory/main.py | 2 +- .../parser/parser_registry.py | 3 ++ .../variant/loadtest_simulation_parser.py | 3 +- .../parser/sink/http_sink_parser.py | 15 ++++++ .../provider/sink/http/http_sink.py | 1 + .../simulation/eventloop/__init__.py | 0 .../simulation/eventloop/event_loop.py | 49 ------------------- .../simulation/load_test.py | 16 +++--- requirements.txt | 8 +-- 11 files changed, 51 insertions(+), 63 deletions(-) create mode 100644 config/assemblyline/sink/loadtest/loadtest-sink.yaml create mode 100644 distributed_event_factory/parser/sink/http_sink_parser.py delete mode 100644 distributed_event_factory/simulation/eventloop/__init__.py delete mode 100644 distributed_event_factory/simulation/eventloop/event_loop.py diff --git a/config/assemblyline/simulation/simulation.yaml b/config/assemblyline/simulation/simulation.yaml index 7bbc8f0..f4389e2 100644 --- a/config/assemblyline/simulation/simulation.yaml +++ b/config/assemblyline/simulation/simulation.yaml @@ -1,7 +1,7 @@ kind: simulation name: assembly-line-simulation spec: - type: stream + type: loadTest steps: 100 caseId: increasing timeframe: 10 diff --git a/config/assemblyline/sink/loadtest/loadtest-sink.yaml b/config/assemblyline/sink/loadtest/loadtest-sink.yaml new file mode 100644 index 0000000..2ddc8c0 --- /dev/null +++ b/config/assemblyline/sink/loadtest/loadtest-sink.yaml @@ -0,0 +1,15 @@ +kind: sink +name: http-sink +spec: + type: http + id: "Sensor" + timeframe: 1000 + url: "http://localhost:8080/loadgenerator" + dataSourceRefs: + - "GoodsDelivery" + - "MaterialPreparation" + - "AssemblyLineSetup" + - "Assembling" + - "QualityControl" + - "Packaging" + - "Shipping" diff --git a/distributed_event_factory/main.py b/distributed_event_factory/main.py index 9407647..be75182 100644 --- a/distributed_event_factory/main.py +++ b/distributed_event_factory/main.py @@ -29,5 +29,5 @@ def parse(self, config): (event_factory .add_directory("../config/assemblyline/simulation") .add_directory("../config/assemblyline/datasource") - .add_directory("../config/assemblyline/sink") + .add_directory("../config/assemblyline/sink/loadtest") ).run() diff --git a/distributed_event_factory/parser/parser_registry.py b/distributed_event_factory/parser/parser_registry.py index 872d1f5..1d9b380 100644 --- a/distributed_event_factory/parser/parser_registry.py +++ b/distributed_event_factory/parser/parser_registry.py @@ -28,6 +28,7 @@ from distributed_event_factory.parser.simulation.variant.countbased_simulation_parser import CountBasedSimulationParser from distributed_event_factory.parser.simulation.variant.loadtest_simulation_parser import LoadTestSimulationParser from distributed_event_factory.parser.simulation.variant.stream_simulation_parser import StreamSimulationParser +from distributed_event_factory.parser.sink.http_sink_parser import HttpSinkParser from distributed_event_factory.parser.sink.kafka.case_partition_parser import CasePartitionParser from distributed_event_factory.parser.sink.kafka.constant_partition_parser import ConstantPartitionParser from distributed_event_factory.parser.sink.kafka.kafka_sink_parser import KafkaSinkParser @@ -52,9 +53,11 @@ def __init__(self): self.console_sink_parser = (PrintConsoleSinkParser()) self.ui_sink_parser = (UiSinkParser()) self.kafka_sink_parser = (KafkaSinkParser()) + self.http_sink_parser = (HttpSinkParser()) self.sink_parser = (SinkParser() .add_dependency("console", self.console_sink_parser) .add_dependency("ui", self.ui_sink_parser) + .add_dependency("http", self.http_sink_parser) .add_dependency("kafka", self.kafka_sink_parser)) ########## # Activity diff --git a/distributed_event_factory/parser/simulation/variant/loadtest_simulation_parser.py b/distributed_event_factory/parser/simulation/variant/loadtest_simulation_parser.py index d7389aa..182bc50 100644 --- a/distributed_event_factory/parser/simulation/variant/loadtest_simulation_parser.py +++ b/distributed_event_factory/parser/simulation/variant/loadtest_simulation_parser.py @@ -13,6 +13,5 @@ def add_dependency(self, key: str, dependency): def parse(self, config): return LoadTestSimulation( case_id_provider=self.dependencies["caseId"].parse(config["caseId"]), - load_provider=self.dependencies["load"].parse(config["load"]), - time_frame_duration=config["timeframe"] + load_provider=self.dependencies["load"].parse(config["load"]) ) \ No newline at end of file diff --git a/distributed_event_factory/parser/sink/http_sink_parser.py b/distributed_event_factory/parser/sink/http_sink_parser.py new file mode 100644 index 0000000..d68cdcc --- /dev/null +++ b/distributed_event_factory/parser/sink/http_sink_parser.py @@ -0,0 +1,15 @@ +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.sink.http.http_sink import HttpSink +from distributed_event_factory.provider.sink.ui.terminal_ui_sink import UiSink + + +class HttpSinkParser(Parser): + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return HttpSink( + url=config["url"], + data_source_ref=config["dataSourceRefs"], + frame_duration=config["timeframe"] + ) \ No newline at end of file diff --git a/distributed_event_factory/provider/sink/http/http_sink.py b/distributed_event_factory/provider/sink/http/http_sink.py index e2acdb4..8950d2e 100644 --- a/distributed_event_factory/provider/sink/http/http_sink.py +++ b/distributed_event_factory/provider/sink/http/http_sink.py @@ -23,6 +23,7 @@ class HttpSink(Sink): def __init__(self, url, frame_duration, data_source_ref): super().__init__(data_source_ref) + self.timeframe = None self.url = url self.frame_duration = frame_duration diff --git a/distributed_event_factory/simulation/eventloop/__init__.py b/distributed_event_factory/simulation/eventloop/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/distributed_event_factory/simulation/eventloop/event_loop.py b/distributed_event_factory/simulation/eventloop/event_loop.py deleted file mode 100644 index eaffb62..0000000 --- a/distributed_event_factory/simulation/eventloop/event_loop.py +++ /dev/null @@ -1,49 +0,0 @@ -from abc import abstractmethod, ABC -import time -from scheduled_futures import ScheduledThreadPoolExecutor - -from distributed_event_factory.provider.sink.http.http_sink import TimeFrame, HttpSink - - -class EventLoop(ABC): - @abstractmethod - def run(self, process_simulator): - pass - - -class DebugEventLoop(EventLoop): - def run(self, process_simulator): - while True: - process_simulator.simulate() - -class AsyncEventLoop(EventLoop): - - def __init__(self, load_provider, time_frame_duration): - self.load_provider = load_provider - self.time_frame_duration = time_frame_duration - self.sink = HttpSink() - - def run(self, process_simulator): - while True: - self.sink.begin_timeframe(self.time_frame_duration) - event_count = self.load_provider.get_load_value() - for i in range(event_count): - self.sink.add_event(process_simulator.simulate()) - self.sink.end_timeframe() - - - -class LoadEventLoop(EventLoop): - def __init__(self, load_provider): - self.load_provider = load_provider - - def run(self, process_simulator): - with ScheduledThreadPoolExecutor() as executor: - while True: - scheduler = executor.schedule( - lambda: process_simulator.simulate()(), - period=1/self.load_provider.get_load_value() - ) - time.sleep(1) - scheduler.cancel() - diff --git a/distributed_event_factory/simulation/load_test.py b/distributed_event_factory/simulation/load_test.py index a90932e..b830cc1 100644 --- a/distributed_event_factory/simulation/load_test.py +++ b/distributed_event_factory/simulation/load_test.py @@ -10,12 +10,10 @@ class LoadTestSimulation: def __init__( self, load_provider: LoadProvider, - time_frame_duration: int, case_id_provider: CaseIdProvider, ): self.case_id_provider = case_id_provider self.load_provider = load_provider - self.time_frame_duration = time_frame_duration def start(self, sinks): for sink in sinks: @@ -25,15 +23,19 @@ def end(self, sinks): for sink in sinks: sinks[sink].end_timeframe() - def run_simulation(self, sinks: Dict[str, HttpSink], data_sources: Dict[str, DataSource]): + def run_simulation(self, data_sources: Dict[str, DataSource], sinks: Dict[str, HttpSink]): + mapped_sinks = dict() + for sink in sinks: + for data_source in sinks[sink].data_source_ref: + mapped_sinks[data_source] = sinks[sink] process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=data_sources ) while True: - self.start(sinks) - for i in range(self.load_provider.get_load_value()): + self.start(mapped_sinks) + for i in range(int(self.load_provider.get_load_value())): event = process_simulator.simulate() if event: - sinks[event.node].send(event) - self.end(sinks) + mapped_sinks[event.node].send(event) + self.end(mapped_sinks) diff --git a/requirements.txt b/requirements.txt index f64f6e9..f3eb9a5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,9 @@ -numpy~=1.24.1 +numpy~=2.1.1 matplotlib~=3.6.2 networkx~=3.0 kafka-python==2.0.2 scheduled-futures==1.1.0 -PyYAML~=6.0.1 -python-dotenv~=1.0.1 \ No newline at end of file +PyYAML~=5.4.1 +python-dotenv~=1.0.1 +future~=0.18.2 +requests~=2.25.1 \ No newline at end of file From bc2b6e81b85f41020fa63c5eb05e089a8b80f854 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Mon, 21 Oct 2024 17:18:05 +0200 Subject: [PATCH 023/124] clean up --- distributed_event_factory/main.py | 24 --------------- .../parser/parser_registry.py | 5 +++- .../simulation/load/sinus_load_parser.py | 10 +++++++ .../provider/datasource/sensor_topology.py | 29 ------------------- .../provider/event/README.md | 12 -------- .../provider/load/README.md | 1 - .../provider/load/load_provider_registry.py | 11 ------- .../provider/load/sinus_load_provider.py | 15 ++++++++++ requirements.txt | 3 +- 9 files changed, 30 insertions(+), 80 deletions(-) create mode 100644 distributed_event_factory/parser/simulation/load/sinus_load_parser.py delete mode 100644 distributed_event_factory/provider/datasource/sensor_topology.py delete mode 100644 distributed_event_factory/provider/event/README.md delete mode 100644 distributed_event_factory/provider/load/README.md delete mode 100644 distributed_event_factory/provider/load/load_provider_registry.py create mode 100644 distributed_event_factory/provider/load/sinus_load_provider.py diff --git a/distributed_event_factory/main.py b/distributed_event_factory/main.py index be75182..09e5aa0 100644 --- a/distributed_event_factory/main.py +++ b/distributed_event_factory/main.py @@ -1,31 +1,7 @@ from distributed_event_factory.event_factory import EventFactory -from distributed_event_factory.parser.parser import Parser -from distributed_event_factory.provider.load.load_provider import LoadProvider -import math - -class SinusLoadProvider(LoadProvider): - def __init__(self, mean, amplitude, phase): - self.i = 0 - self.mean = mean - self.amplitude = amplitude - self.phase = phase - - def get_load_value(self): - self.i = self.i + 1 - return self.amplitude * math.sin(self.i*(math.pi/self.phase)) + self.mean - - -class SinusLoadParser(Parser): - def add_dependency(self, key: str, dependency): - pass - - def parse(self, config): - return SinusLoadProvider(config["mean"], config["amplitude"], config["phase"]) - if __name__ == '__main__': event_factory = EventFactory() - event_factory.parser.load_parser.add_dependency("sinus", SinusLoadParser()) (event_factory .add_directory("../config/assemblyline/simulation") .add_directory("../config/assemblyline/datasource") diff --git a/distributed_event_factory/parser/parser_registry.py b/distributed_event_factory/parser/parser_registry.py index 1d9b380..27f0544 100644 --- a/distributed_event_factory/parser/parser_registry.py +++ b/distributed_event_factory/parser/parser_registry.py @@ -24,6 +24,7 @@ from distributed_event_factory.parser.simulation.load.constant_load_parser import ConstantLoadParser from distributed_event_factory.parser.simulation.load.gradual_load_parser import GradualLoadParser from distributed_event_factory.parser.simulation.load.load_parser import LoadParser +from distributed_event_factory.parser.simulation.load.sinus_load_parser import SinusLoadParser from distributed_event_factory.parser.simulation.simulation_parser import SimulationParser from distributed_event_factory.parser.simulation.variant.countbased_simulation_parser import CountBasedSimulationParser from distributed_event_factory.parser.simulation.variant.loadtest_simulation_parser import LoadTestSimulationParser @@ -116,9 +117,11 @@ def __init__(self): self.constant_load_parser = ConstantLoadParser() self.gradual_load_parser = GradualLoadParser() self.gaussian_load_parser = GradualLoadParser() + self.sinus_load_parser = SinusLoadParser() self.load_parser: LoadParser = (LoadParser() .add_dependency("constant", self.constant_load_parser) - .add_dependency("gradual", self.gradual_load_parser)) + .add_dependency("gradual", self.gradual_load_parser) + .add_dependency("sinus", self.sinus_load_parser)) # Simulation self.count_based_simulation: CountBasedSimulationParser = (CountBasedSimulationParser() diff --git a/distributed_event_factory/parser/simulation/load/sinus_load_parser.py b/distributed_event_factory/parser/simulation/load/sinus_load_parser.py new file mode 100644 index 0000000..780e7c3 --- /dev/null +++ b/distributed_event_factory/parser/simulation/load/sinus_load_parser.py @@ -0,0 +1,10 @@ +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.load.sinus_load_provider import SinusLoadProvider + + +class SinusLoadParser(Parser): + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return SinusLoadProvider(config["mean"], config["amplitude"], config["phase"]) \ No newline at end of file diff --git a/distributed_event_factory/provider/datasource/sensor_topology.py b/distributed_event_factory/provider/datasource/sensor_topology.py deleted file mode 100644 index c4b85fd..0000000 --- a/distributed_event_factory/provider/datasource/sensor_topology.py +++ /dev/null @@ -1,29 +0,0 @@ -from abc import abstractmethod -from typing import List - -from distributed_event_factory.core.datasource import DataSource -from distributed_event_factory.core.end_datasource import EndDataSource -from distributed_event_factory.core.start_datasource import StartDataSource -from distributed_event_factory.provider.transition.transition.transition_provider import ChoiceTransitionProvider - - -class DataSourceTopologyProvider: - @abstractmethod - def get_sensor_topology(self, number_of_sensors) -> List[DataSource]: - pass - - -class ConcreteDataSourceTopologyProvider(DataSourceTopologyProvider): - def __init__(self, data_source_list: List[DataSource]): - self.data_source_list = data_source_list - - def get_sensor_topology(self, number_of_sensors): - data_sources = [] - transitions = [0.0] * number_of_sensors - transitions[0] = 1.0 - data_sources.append(StartDataSource(transition_provider=ChoiceTransitionProvider(transitions))) - for data_source in self.data_source_list: - data_sources.append(data_source) - - data_sources.append(EndDataSource()) - return data_sources diff --git a/distributed_event_factory/provider/event/README.md b/distributed_event_factory/provider/event/README.md deleted file mode 100644 index beb00b2..0000000 --- a/distributed_event_factory/provider/event/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Event Generator - -An event is generated in DEF when a transition on the Markov chain has been taken. -Hence, it has the following properties: - -- [Activity]() -- [Next Data Source]() -- [Duration]() - -Each data source can define multiple possibly generated events. -Which of these events is selected is examined by the [event selection function](../eventselection/README.md) - diff --git a/distributed_event_factory/provider/load/README.md b/distributed_event_factory/provider/load/README.md deleted file mode 100644 index a759420..0000000 --- a/distributed_event_factory/provider/load/README.md +++ /dev/null @@ -1 +0,0 @@ -## Load \ No newline at end of file diff --git a/distributed_event_factory/provider/load/load_provider_registry.py b/distributed_event_factory/provider/load/load_provider_registry.py deleted file mode 100644 index 41305e1..0000000 --- a/distributed_event_factory/provider/load/load_provider_registry.py +++ /dev/null @@ -1,11 +0,0 @@ -from distributed_event_factory.provider.load.load_provider import LoadProvider, ConstantLoadProvider, \ - GradualIncreasingLoadProvider - - -class LoadProviderRegistry: - def get(self, config) -> LoadProvider: - registry = dict() - registry["constant"] = lambda config: ConstantLoadProvider(config["load"]) - registry["gradual"] = lambda config: GradualIncreasingLoadProvider(config["tickCount"], config["minimalLoad"], - config["load"]) - return registry[config["loadType"]](config) diff --git a/distributed_event_factory/provider/load/sinus_load_provider.py b/distributed_event_factory/provider/load/sinus_load_provider.py new file mode 100644 index 0000000..ac78aa9 --- /dev/null +++ b/distributed_event_factory/provider/load/sinus_load_provider.py @@ -0,0 +1,15 @@ +import math + +from distributed_event_factory.provider.load.load_provider import LoadProvider + + +class SinusLoadProvider(LoadProvider): + def __init__(self, mean, amplitude, phase): + self.i = 0 + self.mean = mean + self.amplitude = amplitude + self.phase = phase + + def get_load_value(self): + self.i = self.i + 1 + return self.amplitude * math.sin(self.i * (math.pi / self.phase)) + self.mean diff --git a/requirements.txt b/requirements.txt index f3eb9a5..b4975d3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,5 +5,4 @@ kafka-python==2.0.2 scheduled-futures==1.1.0 PyYAML~=5.4.1 python-dotenv~=1.0.1 -future~=0.18.2 -requests~=2.25.1 \ No newline at end of file +future~=0.18.2 \ No newline at end of file From 7b5a606a3241a105aae6c2735a6388eb08e8efcf Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Mon, 21 Oct 2024 17:23:46 +0200 Subject: [PATCH 024/124] clean up --- .github/workflows/test-pypi.yml | 2 +- Dockerfile | 2 +- requirements.txt | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-pypi.yml b/.github/workflows/test-pypi.yml index d7ddc3c..e185053 100644 --- a/.github/workflows/test-pypi.yml +++ b/.github/workflows/test-pypi.yml @@ -14,7 +14,7 @@ jobs: python-version: "3.10" - name: Install dependencies run: | - python -m pip install --upgrade pip + python3 -m pip install --upgrade pip pip install -r requirements.txt - name: Test run: | diff --git a/Dockerfile b/Dockerfile index 8ad1520..774700a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -ARG PYTHON_VERSION=3.11.4 +ARG PYTHON_VERSION=3.10.12 FROM python:${PYTHON_VERSION}-slim AS base ENV PYTHONDONTWRITEBYTECODE=1 diff --git a/requirements.txt b/requirements.txt index b4975d3..eca07e6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,6 +3,7 @@ matplotlib~=3.6.2 networkx~=3.0 kafka-python==2.0.2 scheduled-futures==1.1.0 -PyYAML~=5.4.1 +PyYAML~=6.0.1 python-dotenv~=1.0.1 -future~=0.18.2 \ No newline at end of file +future~=0.18.2 +requests~=2.25.1 \ No newline at end of file From 34b25cbe4187136a89c4c77bfba41696658208ba Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Mon, 21 Oct 2024 17:55:59 +0200 Subject: [PATCH 025/124] build pipeline only runs on release branch --- .github/workflows/docker-image.yml | 4 +--- .github/workflows/test-pypi.yml | 4 +++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index d56d5fe..82db9c6 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -2,9 +2,7 @@ name: Docker Image CI on: push: - branches: [ "feature/github-actions-docker-build" ] - pull_request: - branches: [ "main" ] + branches: [ "release/*" ] jobs: build: diff --git a/.github/workflows/test-pypi.yml b/.github/workflows/test-pypi.yml index e185053..eb6aa5d 100644 --- a/.github/workflows/test-pypi.yml +++ b/.github/workflows/test-pypi.yml @@ -1,6 +1,8 @@ name: Publish to TestPyPI -on: push +on: + push: + branches: [ "release/*" ] jobs: build: From 2d9848fba2a609e51d137568a462778187ae4570 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Tue, 22 Oct 2024 14:13:39 +0200 Subject: [PATCH 026/124] replace event notion to process mining core package --- .idea/distributed-event-factory.iml | 16 -------- .idea/inspectionProfiles/Project_Default.xml | 16 +------- .idea/misc.xml | 4 +- .idea/modules.xml | 8 ---- .idea/other.xml | 7 ---- .../core/abstract_datasource.py | 3 +- distributed_event_factory/core/datasource.py | 12 ++---- .../core/end_datasource.py | 4 +- distributed_event_factory/core/event.py | 41 +++++++++---------- .../provider/sink/console/console_sink.py | 3 +- .../provider/sink/http/http_sink.py | 3 +- .../provider/sink/kafka/kafka_sink.py | 2 +- .../sink/kafka/kafka_validation_sink.py | 3 +- .../sink/kafka/partition/case_partition.py | 3 +- .../kafka/partition/partition_provider.py | 3 +- .../provider/sink/sink_provider.py | 3 +- .../provider/sink/test/test_sink.py | 3 +- .../provider/sink/ui/terminal_ui_sink.py | 3 +- .../simulation/process_simulation.py | 3 +- install-requirements.sh | 3 ++ requirements.txt | 3 +- 21 files changed, 55 insertions(+), 91 deletions(-) delete mode 100644 .idea/distributed-event-factory.iml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/other.xml create mode 100644 install-requirements.sh diff --git a/.idea/distributed-event-factory.iml b/.idea/distributed-event-factory.iml deleted file mode 100644 index 3882cbd..0000000 --- a/.idea/distributed-event-factory.iml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index 7304429..718aae1 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -5,24 +5,10 @@ - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 63d7d47..cefd9a2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,7 +1,7 @@ - - + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index cf79f7e..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/other.xml b/.idea/other.xml deleted file mode 100644 index 640fd80..0000000 --- a/.idea/other.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/distributed_event_factory/core/abstract_datasource.py b/distributed_event_factory/core/abstract_datasource.py index 792fb19..b0d24da 100644 --- a/distributed_event_factory/core/abstract_datasource.py +++ b/distributed_event_factory/core/abstract_datasource.py @@ -1,8 +1,9 @@ from abc import ABC, abstractmethod from typing import List +from process_mining_core.datastructure.core.event import Event + from distributed_event_factory.core.datasource_id import DataSourceId -from distributed_event_factory.core.event import Event from distributed_event_factory.provider.event.event_data import EventData class DataSource(ABC): diff --git a/distributed_event_factory/core/datasource.py b/distributed_event_factory/core/datasource.py index dc4e6de..90e4493 100644 --- a/distributed_event_factory/core/datasource.py +++ b/distributed_event_factory/core/datasource.py @@ -1,16 +1,10 @@ -from abc import abstractmethod, ABC from typing import List +from process_mining_core.datastructure.core.event import Event + from distributed_event_factory.core.abstract_datasource import DataSource -from distributed_event_factory.core.datasource_id import DataSourceId, START_SENSOR_ID, END_DATA_SOURCE_ID -from distributed_event_factory.core.event import StartEvent, EndEvent, Event -from distributed_event_factory.provider.event.event_data import EventData -from distributed_event_factory.provider.event.event_provider import EventDataProvider, EndEventProvider, \ - StartEventProvider +from distributed_event_factory.core.datasource_id import DataSourceId from distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider -from distributed_event_factory.provider.transition.transition.transition_provider import ChoiceTransitionProvider, \ - TransitionProvider - class GenericDataSource(DataSource): def __init__( diff --git a/distributed_event_factory/core/end_datasource.py b/distributed_event_factory/core/end_datasource.py index 2c7ce76..3258220 100644 --- a/distributed_event_factory/core/end_datasource.py +++ b/distributed_event_factory/core/end_datasource.py @@ -1,8 +1,10 @@ from typing import List +from process_mining_core.datastructure.core.event import Event + from distributed_event_factory.core.abstract_datasource import DataSource from distributed_event_factory.core.datasource_id import END_DATA_SOURCE_ID, DataSourceId -from distributed_event_factory.core.event import Event, EndEvent +from distributed_event_factory.core.event import EndEvent from distributed_event_factory.provider.event.event_provider import EventDataProvider, EndEventProvider class EndDataSource(DataSource): diff --git a/distributed_event_factory/core/event.py b/distributed_event_factory/core/event.py index 59b70bb..3b5ad74 100644 --- a/distributed_event_factory/core/event.py +++ b/distributed_event_factory/core/event.py @@ -1,5 +1,4 @@ -from distributed_event_factory.provider.transition.transition.transition_provider import ChoiceTransitionProvider, \ - TransitionProvider +from distributed_event_factory.provider.transition.transition.transition_provider import TransitionProvider class CaseId: def __init__(self, case_id: str): @@ -9,25 +8,25 @@ class Activity: def __init__(self, activity: str): self.activity = activity -class Event: - def __init__(self, timestamp, sensor_value, case_id: CaseId, sensor_name, group_id): - self.timestamp = timestamp - self.activity: any = sensor_value - self.caseId: CaseId = case_id - self.node: str = sensor_name - self.group: str = group_id - - def get_case(self): - return self.caseId - - def get_activity(self): - return self.activity - - def get_timestamp(self): - return self.timestamp - - def __str__(self): - return str(self.__dict__) +#class Event: +# def __init__(self, timestamp, sensor_value, case_id: CaseId, sensor_name, group_id): +# self.timestamp = timestamp +# self.activity: any = sensor_value +# self.caseId: CaseId = case_id +# self.node: str = sensor_name +# self.group: str = group_id +# +# def get_case(self): +# return self.caseId +# +# def get_activity(self): +# return self.activity +# +# def get_timestamp(self): +# return self.timestamp +# +# def __str__(self): +# return str(self.__dict__) class StartEvent: diff --git a/distributed_event_factory/provider/sink/console/console_sink.py b/distributed_event_factory/provider/sink/console/console_sink.py index f63c210..4803de9 100644 --- a/distributed_event_factory/provider/sink/console/console_sink.py +++ b/distributed_event_factory/provider/sink/console/console_sink.py @@ -1,4 +1,5 @@ -from distributed_event_factory.core.event import Event +from process_mining_core.datastructure.core.event import Event + from distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider diff --git a/distributed_event_factory/provider/sink/http/http_sink.py b/distributed_event_factory/provider/sink/http/http_sink.py index 8950d2e..ee1e81a 100644 --- a/distributed_event_factory/provider/sink/http/http_sink.py +++ b/distributed_event_factory/provider/sink/http/http_sink.py @@ -1,6 +1,7 @@ import json -from distributed_event_factory.core.event import Event +from process_mining_core.datastructure.core.event import Event + from distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider import requests diff --git a/distributed_event_factory/provider/sink/kafka/kafka_sink.py b/distributed_event_factory/provider/sink/kafka/kafka_sink.py index 33dad6d..db5fc25 100644 --- a/distributed_event_factory/provider/sink/kafka/kafka_sink.py +++ b/distributed_event_factory/provider/sink/kafka/kafka_sink.py @@ -1,7 +1,7 @@ import json import string -from distributed_event_factory.core.event import Event +from process_mining_core.datastructure.core.event import Event from distributed_event_factory.provider.sink.kafka.partition.partition_provider import PartitionProvider from distributed_event_factory.provider.sink.sink_provider import Sink diff --git a/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py b/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py index 3d7a868..23b27f0 100644 --- a/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py +++ b/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py @@ -1,6 +1,7 @@ import json -from distributed_event_factory.core.event import Event +from process_mining_core.datastructure.core.event import Event + from distributed_event_factory.provider.sink.kafka.partition.partition_provider import ConstantPartitionProvider from distributed_event_factory.provider.sink.sink_provider import Sink diff --git a/distributed_event_factory/provider/sink/kafka/partition/case_partition.py b/distributed_event_factory/provider/sink/kafka/partition/case_partition.py index 030a2ba..c7cac71 100644 --- a/distributed_event_factory/provider/sink/kafka/partition/case_partition.py +++ b/distributed_event_factory/provider/sink/kafka/partition/case_partition.py @@ -1,4 +1,5 @@ -from distributed_event_factory.core.event import Event +from process_mining_core.datastructure.core.event import Event + from distributed_event_factory.provider.sink.kafka.partition.partition_provider import PartitionProvider diff --git a/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py b/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py index 1e50eda..db6908d 100644 --- a/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py +++ b/distributed_event_factory/provider/sink/kafka/partition/partition_provider.py @@ -1,5 +1,6 @@ from abc import ABC, abstractmethod -from distributed_event_factory.core.event import Event + +from process_mining_core.datastructure.core.event import Event class PartitionProvider(ABC): diff --git a/distributed_event_factory/provider/sink/sink_provider.py b/distributed_event_factory/provider/sink/sink_provider.py index a93c241..6e37f0a 100644 --- a/distributed_event_factory/provider/sink/sink_provider.py +++ b/distributed_event_factory/provider/sink/sink_provider.py @@ -1,6 +1,7 @@ import abc -from distributed_event_factory.core.event import Event +from process_mining_core.datastructure.core.event import Event + class Sink: def __init__(self, data_source_ref): diff --git a/distributed_event_factory/provider/sink/test/test_sink.py b/distributed_event_factory/provider/sink/test/test_sink.py index 3ceb807..4d85693 100644 --- a/distributed_event_factory/provider/sink/test/test_sink.py +++ b/distributed_event_factory/provider/sink/test/test_sink.py @@ -1,6 +1,7 @@ from typing import List -from distributed_event_factory.core.event import Event +from process_mining_core.datastructure.core.event import Event + from distributed_event_factory.provider.sink.sink_provider import Sink class TestSink(Sink): diff --git a/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py b/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py index a1d2221..6c6f582 100644 --- a/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py +++ b/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py @@ -1,4 +1,5 @@ -from distributed_event_factory.core.event import Event +from process_mining_core.datastructure.core.event import Event + from distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider from distributed_event_factory.view.terminal import Terminal diff --git a/distributed_event_factory/simulation/process_simulation.py b/distributed_event_factory/simulation/process_simulation.py index b4e6dad..3003a95 100644 --- a/distributed_event_factory/simulation/process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -3,9 +3,10 @@ from datetime import datetime, timedelta from typing import List, Dict +from process_mining_core.datastructure.core.event import Event + from distributed_event_factory.core.datasource import DataSource from distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID, DataSourceId -from distributed_event_factory.core.event import Event from distributed_event_factory.provider.data.case_provider import CaseIdProvider class ProcessSimulator: diff --git a/install-requirements.sh b/install-requirements.sh new file mode 100644 index 0000000..fd499dd --- /dev/null +++ b/install-requirements.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +python3 -m pip install --upgrade pip --extra-index-url https://test.pypi.org/simple -r requirements.txt \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index eca07e6..bf0167f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,4 +6,5 @@ scheduled-futures==1.1.0 PyYAML~=6.0.1 python-dotenv~=1.0.1 future~=0.18.2 -requests~=2.25.1 \ No newline at end of file +requests~=2.25.1 +process-mining-core~=0.1.0 \ No newline at end of file From 5c4c28a66ee43e857057ca69174217202a26a8f7 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Wed, 23 Oct 2024 09:53:50 +0200 Subject: [PATCH 027/124] refactor the test config files --- .../simulation/simulation_countbased.yaml | 2 +- ...mulation.yaml => simulation_loadtest.yaml} | 0 .../simulation/simulation_stream.yaml | 0 .../sink/{s1-console.yaml => console.yaml} | 0 config/assemblyline/sink/kafka-sink.yaml | 18 +++++++++++++ .../sink/{loadtest => }/loadtest-sink.yaml | 0 .../assemblyline/sink/test-sink.yaml | 0 .../assemblyline/sink/{s2-ui.yaml => ui.yaml} | 0 distributed_event_factory/event_factory.py | 26 +++++++++++-------- distributed_event_factory/main.py | 7 +++-- .../parser/parser_registry.py | 2 +- .../parser/sink/kafka/kafka_sink_parser.py | 7 ++++- .../provider/sink/kafka/kafka_sink.py | 2 +- test/integration_test.py | 3 ++- 14 files changed, 49 insertions(+), 18 deletions(-) rename test/test_files/simulation.yaml => config/assemblyline/simulation/simulation_countbased.yaml (73%) rename config/assemblyline/simulation/{simulation.yaml => simulation_loadtest.yaml} (100%) create mode 100644 config/assemblyline/simulation/simulation_stream.yaml rename config/assemblyline/sink/{s1-console.yaml => console.yaml} (100%) create mode 100644 config/assemblyline/sink/kafka-sink.yaml rename config/assemblyline/sink/{loadtest => }/loadtest-sink.yaml (100%) rename test/test_files/s1-test-sink.yaml => config/assemblyline/sink/test-sink.yaml (100%) rename config/assemblyline/sink/{s2-ui.yaml => ui.yaml} (100%) diff --git a/test/test_files/simulation.yaml b/config/assemblyline/simulation/simulation_countbased.yaml similarity index 73% rename from test/test_files/simulation.yaml rename to config/assemblyline/simulation/simulation_countbased.yaml index 742277a..d22e8b5 100644 --- a/test/test_files/simulation.yaml +++ b/config/assemblyline/simulation/simulation_countbased.yaml @@ -1,5 +1,5 @@ kind: simulation -name: test +name: countBasedSimulation spec: type: countBased steps: 100 diff --git a/config/assemblyline/simulation/simulation.yaml b/config/assemblyline/simulation/simulation_loadtest.yaml similarity index 100% rename from config/assemblyline/simulation/simulation.yaml rename to config/assemblyline/simulation/simulation_loadtest.yaml diff --git a/config/assemblyline/simulation/simulation_stream.yaml b/config/assemblyline/simulation/simulation_stream.yaml new file mode 100644 index 0000000..e69de29 diff --git a/config/assemblyline/sink/s1-console.yaml b/config/assemblyline/sink/console.yaml similarity index 100% rename from config/assemblyline/sink/s1-console.yaml rename to config/assemblyline/sink/console.yaml diff --git a/config/assemblyline/sink/kafka-sink.yaml b/config/assemblyline/sink/kafka-sink.yaml new file mode 100644 index 0000000..9dbce76 --- /dev/null +++ b/config/assemblyline/sink/kafka-sink.yaml @@ -0,0 +1,18 @@ +kind: sink +name: kafka-sink +spec: + type: kafka + bootstrapServer: "kube1-1:30376" + clientId: "client1" + topic: "assemblyLine" + partition: + type: "constant" + partition: 0 + dataSourceRefs: + - "GoodsDelivery" + - "MaterialPreparation" + - "AssemblyLineSetup" + - "Assembling" + - "QualityControl" + - "Packaging" + - "Shipping" \ No newline at end of file diff --git a/config/assemblyline/sink/loadtest/loadtest-sink.yaml b/config/assemblyline/sink/loadtest-sink.yaml similarity index 100% rename from config/assemblyline/sink/loadtest/loadtest-sink.yaml rename to config/assemblyline/sink/loadtest-sink.yaml diff --git a/test/test_files/s1-test-sink.yaml b/config/assemblyline/sink/test-sink.yaml similarity index 100% rename from test/test_files/s1-test-sink.yaml rename to config/assemblyline/sink/test-sink.yaml diff --git a/config/assemblyline/sink/s2-ui.yaml b/config/assemblyline/sink/ui.yaml similarity index 100% rename from config/assemblyline/sink/s2-ui.yaml rename to config/assemblyline/sink/ui.yaml diff --git a/distributed_event_factory/event_factory.py b/distributed_event_factory/event_factory.py index aa94ec8..f839c09 100644 --- a/distributed_event_factory/event_factory.py +++ b/distributed_event_factory/event_factory.py @@ -44,17 +44,21 @@ def get_sink(self, sink_key): def add_directory(self, directory): for filename in os.listdir(directory): - with open(directory + "/" + filename) as file: - configuration = yaml.safe_load(file) - kind = configuration['kind'] - name = configuration['name'] - parsed_object = self.parser.kind_parser.parse(configuration) - if kind == "simulation": - self.simulations[name] = parsed_object - elif kind == "datasource": - self.datasources[name] = parsed_object - elif kind == "sink": - self.sinks[name] = parsed_object + self.add_file(directory + "/" + filename) + return self + + def add_file(self, filename): + with open(filename) as file: + configuration = yaml.safe_load(file) + kind = configuration['kind'] + name = configuration['name'] + parsed_object = self.parser.kind_parser.parse(configuration) + if kind == "simulation": + self.simulations[name] = parsed_object + elif kind == "datasource": + self.datasources[name] = parsed_object + elif kind == "sink": + self.sinks[name] = parsed_object return self def run(self): diff --git a/distributed_event_factory/main.py b/distributed_event_factory/main.py index 09e5aa0..b73d2cc 100644 --- a/distributed_event_factory/main.py +++ b/distributed_event_factory/main.py @@ -1,9 +1,12 @@ +from time import sleep + from distributed_event_factory.event_factory import EventFactory if __name__ == '__main__': event_factory = EventFactory() (event_factory - .add_directory("../config/assemblyline/simulation") + .add_file("../config/assemblyline/simulation/simulation_countbased.yaml") .add_directory("../config/assemblyline/datasource") - .add_directory("../config/assemblyline/sink/loadtest") + .add_file("../config/assemblyline/sink/kafka-sink.yaml") ).run() + sleep(1) \ No newline at end of file diff --git a/distributed_event_factory/parser/parser_registry.py b/distributed_event_factory/parser/parser_registry.py index 27f0544..4ebded0 100644 --- a/distributed_event_factory/parser/parser_registry.py +++ b/distributed_event_factory/parser/parser_registry.py @@ -51,9 +51,9 @@ def __init__(self): .add_dependency("case", self.case_partition_parser)) # Sinks + self.kafka_sink_parser = (KafkaSinkParser()).add_dependency("partition", self.partition_parser) self.console_sink_parser = (PrintConsoleSinkParser()) self.ui_sink_parser = (UiSinkParser()) - self.kafka_sink_parser = (KafkaSinkParser()) self.http_sink_parser = (HttpSinkParser()) self.sink_parser = (SinkParser() .add_dependency("console", self.console_sink_parser) diff --git a/distributed_event_factory/parser/sink/kafka/kafka_sink_parser.py b/distributed_event_factory/parser/sink/kafka/kafka_sink_parser.py index af93066..c4ca05f 100644 --- a/distributed_event_factory/parser/sink/kafka/kafka_sink_parser.py +++ b/distributed_event_factory/parser/sink/kafka/kafka_sink_parser.py @@ -1,10 +1,14 @@ +from select import select + from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.parser.sink.sink_parser import SinkParser from distributed_event_factory.provider.sink.kafka.kafka_sink import KafkaSink class KafkaSinkParser(Parser): def __init__(self): + super().__init__() self.dependencies = dict() def add_dependency(self, key: str, dependency): @@ -16,5 +20,6 @@ def parse(self, config): config["bootstrapServer"], config["clientId"], config["topic"], - self.dependencies["partition"].parse(config["partition"]) + self.dependencies["partition"].parse(config["partition"]), + config["dataSourceRefs"] ) \ No newline at end of file diff --git a/distributed_event_factory/provider/sink/kafka/kafka_sink.py b/distributed_event_factory/provider/sink/kafka/kafka_sink.py index db5fc25..ade0c5d 100644 --- a/distributed_event_factory/provider/sink/kafka/kafka_sink.py +++ b/distributed_event_factory/provider/sink/kafka/kafka_sink.py @@ -25,4 +25,4 @@ def send(self, event: Event) -> None: self.topic, value=json.dumps(event.__dict__), key=event.get_case(), - partition=self.partition_provider.get_partition(event)) + partition=self.partition_provider.get_partition(event)).add_callback(lambda data: print(data)) diff --git a/test/integration_test.py b/test/integration_test.py index dd3fd5a..64570a3 100644 --- a/test/integration_test.py +++ b/test/integration_test.py @@ -11,7 +11,8 @@ def test_integration(self): event_factory.add_sink_parser("test", TestSinkParser()) (event_factory .add_directory(directory="config/assemblyline/datasource") - .add_directory(directory="test/test_files") + .add_file("config/assemblyline/simulation/simulation_countbased.yaml") + .add_file("config/assemblyline/sink/test-sink.yaml") .run()) sink_mock: TestSink = event_factory.get_sink("test") self.assertEqual(100, len(sink_mock.event_log)) From c8f9c6ac3d10fa88f1c6565f200f4c9e21b763a9 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Wed, 23 Oct 2024 16:22:01 +0200 Subject: [PATCH 028/124] Add kafka sink yaml --- config/assemblyline/sink/kafka-sink.yaml | 2 +- distributed_event_factory/simulation/countbased.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/config/assemblyline/sink/kafka-sink.yaml b/config/assemblyline/sink/kafka-sink.yaml index 9dbce76..b919bb7 100644 --- a/config/assemblyline/sink/kafka-sink.yaml +++ b/config/assemblyline/sink/kafka-sink.yaml @@ -2,7 +2,7 @@ kind: sink name: kafka-sink spec: type: kafka - bootstrapServer: "kube1-1:30376" + bootstrapServer: "minikube:32389" clientId: "client1" topic: "assemblyLine" partition: diff --git a/distributed_event_factory/simulation/countbased.py b/distributed_event_factory/simulation/countbased.py index 8653250..c301500 100644 --- a/distributed_event_factory/simulation/countbased.py +++ b/distributed_event_factory/simulation/countbased.py @@ -14,7 +14,10 @@ def __init__( self.sinks = dict() def send_event(self, event): - self.sinks[event.node].send(event) + if event.node in self.sinks: + self.sinks[event.node].send(event) + else: + print("Skip event. No sink configured") def run_simulation(self, datasources, sinks): for sink in sinks: From 99e813be37a8efd9ec14720df0937a508bf4c54d Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Fri, 25 Oct 2024 14:26:32 +0200 Subject: [PATCH 029/124] fix the dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 774700a..7ebe960 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,4 +23,4 @@ RUN --mount=type=cache,target=/root/.cache/pip \ USER appuser COPY . . -CMD python3 src/distributed_event_factory/main.py \ No newline at end of file +CMD python3 distributed_event_factory/main.py \ No newline at end of file From d566162304e3c9c58c3a2b4d017c80f1b3c9f0f4 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Fri, 25 Oct 2024 14:28:12 +0200 Subject: [PATCH 030/124] add k8s build --- __init__.py | 0 k8s/build.sh | 1 + k8s/load.jsonnet | 54 ++++++++++++++++++++++++++++++++++++++++++++++++ k8s/main.jsonnet | 13 ++++++++++++ 4 files changed, 68 insertions(+) create mode 100644 __init__.py create mode 100755 k8s/build.sh create mode 100644 k8s/load.jsonnet create mode 100644 k8s/main.jsonnet diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/k8s/build.sh b/k8s/build.sh new file mode 100755 index 0000000..8f30403 --- /dev/null +++ b/k8s/build.sh @@ -0,0 +1 @@ +jsonnet -y main.jsonnet | kubectl apply -f - diff --git a/k8s/load.jsonnet b/k8s/load.jsonnet new file mode 100644 index 0000000..ed87682 --- /dev/null +++ b/k8s/load.jsonnet @@ -0,0 +1,54 @@ +{ + loadDeployment(topic, bootstrapServer):: { + apiVersion: "apps/v1", + kind: "Deployment", + metadata: { + name: "distributed-event-factory", + labels: { + app: "distributed-event-factory" + } + }, + spec: { + replicas: 1, + selector: { + matchLabels: { + app: "distributed-event-factory" + } + }, + template: { + metadata: { + labels: { + app: "distributed-event-factory" + } + }, + spec: { + containers: [ + { + name: "distributed-event-factory", + image: "hendrikreiter/distributed_event_factory:0.2.0-SNAPSHOT", + env: [ + { + name: "TOPIC", + value: topic + }, + { + name: "BOOTSTRAP_SERVER", + value: bootstrapServer + } + ], + ports: [ + { + containerPort: 8080 + } + ] + } + ] + } + } + } + }, + + loadService():: { + + }, +} \ No newline at end of file diff --git a/k8s/main.jsonnet b/k8s/main.jsonnet new file mode 100644 index 0000000..75ca781 --- /dev/null +++ b/k8s/main.jsonnet @@ -0,0 +1,13 @@ +local load = import 'load.jsonnet'; + +local a = load.loadDeployment( + topic="testi", + bootstrapServer="minikube:1234" +); + +local b = load.loadDeployment( + topic="testi", + bootstrapServer="minikube:1234" +); + +[a] \ No newline at end of file From 85e46fb32443594a002943aa39b11d6b08eb3f03 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Fri, 25 Oct 2024 14:35:12 +0200 Subject: [PATCH 031/124] add k8s build --- distributed_event_factory/view/terminal.py | 6 +++--- k8s/load.jsonnet | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/distributed_event_factory/view/terminal.py b/distributed_event_factory/view/terminal.py index a156b40..2fc5d09 100644 --- a/distributed_event_factory/view/terminal.py +++ b/distributed_event_factory/view/terminal.py @@ -1,10 +1,8 @@ -import tkinter as tk -from tkinter.scrolledtext import ScrolledText import threading - class Terminal(threading.Thread): def __init__(self, title="Terminal", start_position=0): + self.start_position = start_position self.title = title self.root = None @@ -20,6 +18,8 @@ def close(self): self.scrolled_text = None def run(self): + import tkinter as tk + from tkinter.scrolledtext import ScrolledText self.root = tk.Tk() self.root.protocol("WM_DELETE_WINDOW", self.close) self.root.title(self.title) diff --git a/k8s/load.jsonnet b/k8s/load.jsonnet index ed87682..6c7654d 100644 --- a/k8s/load.jsonnet +++ b/k8s/load.jsonnet @@ -26,6 +26,7 @@ { name: "distributed-event-factory", image: "hendrikreiter/distributed_event_factory:0.2.0-SNAPSHOT", + imagePullPolicy: "Always", env: [ { name: "TOPIC", From 3a07fabf9ada1593fb61ac24834b35dbdb9a295e Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Fri, 25 Oct 2024 14:42:11 +0200 Subject: [PATCH 032/124] refactoring of the project structure --- .github/workflows/test-pypi.yml | 2 +- config/assemblyline/sink/console.yaml | 9 ------- config/assemblyline/sink/kafka-sink.yaml | 18 ------------- .../assemblyline}/d0-start.yaml | 0 .../assemblyline}/d1-goods-delivery.yaml | 0 .../d2-material-preparation.yaml | 0 .../assemblyline}/d3-assembly-line-setup.yaml | 0 .../assemblyline}/d4-assembling.yaml | 0 .../assemblyline}/d5-quality-control.yaml | 0 .../assemblyline}/d6-packaging.yaml | 0 .../assemblyline}/d7-shipping.yaml | 0 config/datasource/line/line-a.yaml | 11 ++++++++ config/datasource/line/line-b.yaml | 11 ++++++++ config/datasource/line/line-c.yaml | 11 ++++++++ config/datasource/line/line-d.yaml | 11 ++++++++ config/datasource/line/line-start.yaml | 11 ++++++++ .../countbased.yaml} | 0 .../loadtest.yaml} | 0 .../stream.yaml} | 0 config/sink/console-sink.yaml | 13 +++++++++ config/sink/kafka-sink.yaml | 22 +++++++++++++++ .../sink/loadtest-sink.yaml | 0 .../sink/ui.yaml => sink/sink-ui.yaml} | 0 config/{assemblyline => }/sink/test-sink.yaml | 0 distributed_event_factory/main.py | 6 ++--- .../parser/sink/http_sink_parser.py | 4 +-- .../provider/sink/http/http_sink.py | 4 +-- .../simulation/abstract_simulation.py | 20 ++++++++++++++ .../simulation/countbased.py | 20 ++++---------- .../simulation/load_test.py | 27 +++++++++---------- .../simulation/stream_simulation.py | 15 ++++------- test/integration_test.py | 4 +-- 32 files changed, 143 insertions(+), 76 deletions(-) delete mode 100644 config/assemblyline/sink/console.yaml delete mode 100644 config/assemblyline/sink/kafka-sink.yaml rename config/{assemblyline/datasource => datasource/assemblyline}/d0-start.yaml (100%) rename config/{assemblyline/datasource => datasource/assemblyline}/d1-goods-delivery.yaml (100%) rename config/{assemblyline/datasource => datasource/assemblyline}/d2-material-preparation.yaml (100%) rename config/{assemblyline/datasource => datasource/assemblyline}/d3-assembly-line-setup.yaml (100%) rename config/{assemblyline/datasource => datasource/assemblyline}/d4-assembling.yaml (100%) rename config/{assemblyline/datasource => datasource/assemblyline}/d5-quality-control.yaml (100%) rename config/{assemblyline/datasource => datasource/assemblyline}/d6-packaging.yaml (100%) rename config/{assemblyline/datasource => datasource/assemblyline}/d7-shipping.yaml (100%) create mode 100644 config/datasource/line/line-a.yaml create mode 100644 config/datasource/line/line-b.yaml create mode 100644 config/datasource/line/line-c.yaml create mode 100644 config/datasource/line/line-d.yaml create mode 100644 config/datasource/line/line-start.yaml rename config/{assemblyline/simulation/simulation_countbased.yaml => simulation/countbased.yaml} (100%) rename config/{assemblyline/simulation/simulation_loadtest.yaml => simulation/loadtest.yaml} (100%) rename config/{assemblyline/simulation/simulation_stream.yaml => simulation/stream.yaml} (100%) create mode 100644 config/sink/console-sink.yaml create mode 100644 config/sink/kafka-sink.yaml rename config/{assemblyline => }/sink/loadtest-sink.yaml (100%) rename config/{assemblyline/sink/ui.yaml => sink/sink-ui.yaml} (100%) rename config/{assemblyline => }/sink/test-sink.yaml (100%) create mode 100644 distributed_event_factory/simulation/abstract_simulation.py diff --git a/.github/workflows/test-pypi.yml b/.github/workflows/test-pypi.yml index eb6aa5d..ac3be27 100644 --- a/.github/workflows/test-pypi.yml +++ b/.github/workflows/test-pypi.yml @@ -20,7 +20,7 @@ jobs: pip install -r requirements.txt - name: Test run: | - python -m unittest test.integration_test.IntegrationTest.test_integration + python3 -m unittest test.integration_test.IntegrationTest.test_integration - name: Install pypa/build run: >- python3 -m diff --git a/config/assemblyline/sink/console.yaml b/config/assemblyline/sink/console.yaml deleted file mode 100644 index 46f3db3..0000000 --- a/config/assemblyline/sink/console.yaml +++ /dev/null @@ -1,9 +0,0 @@ -kind: sink -name: console-sink -spec: - type: console - id: "Sensor" - dataSourceRefs: - - "GoodsDelivery" - - "MaterialPreparation" - - "AssemblyLineSetup" diff --git a/config/assemblyline/sink/kafka-sink.yaml b/config/assemblyline/sink/kafka-sink.yaml deleted file mode 100644 index b919bb7..0000000 --- a/config/assemblyline/sink/kafka-sink.yaml +++ /dev/null @@ -1,18 +0,0 @@ -kind: sink -name: kafka-sink -spec: - type: kafka - bootstrapServer: "minikube:32389" - clientId: "client1" - topic: "assemblyLine" - partition: - type: "constant" - partition: 0 - dataSourceRefs: - - "GoodsDelivery" - - "MaterialPreparation" - - "AssemblyLineSetup" - - "Assembling" - - "QualityControl" - - "Packaging" - - "Shipping" \ No newline at end of file diff --git a/config/assemblyline/datasource/d0-start.yaml b/config/datasource/assemblyline/d0-start.yaml similarity index 100% rename from config/assemblyline/datasource/d0-start.yaml rename to config/datasource/assemblyline/d0-start.yaml diff --git a/config/assemblyline/datasource/d1-goods-delivery.yaml b/config/datasource/assemblyline/d1-goods-delivery.yaml similarity index 100% rename from config/assemblyline/datasource/d1-goods-delivery.yaml rename to config/datasource/assemblyline/d1-goods-delivery.yaml diff --git a/config/assemblyline/datasource/d2-material-preparation.yaml b/config/datasource/assemblyline/d2-material-preparation.yaml similarity index 100% rename from config/assemblyline/datasource/d2-material-preparation.yaml rename to config/datasource/assemblyline/d2-material-preparation.yaml diff --git a/config/assemblyline/datasource/d3-assembly-line-setup.yaml b/config/datasource/assemblyline/d3-assembly-line-setup.yaml similarity index 100% rename from config/assemblyline/datasource/d3-assembly-line-setup.yaml rename to config/datasource/assemblyline/d3-assembly-line-setup.yaml diff --git a/config/assemblyline/datasource/d4-assembling.yaml b/config/datasource/assemblyline/d4-assembling.yaml similarity index 100% rename from config/assemblyline/datasource/d4-assembling.yaml rename to config/datasource/assemblyline/d4-assembling.yaml diff --git a/config/assemblyline/datasource/d5-quality-control.yaml b/config/datasource/assemblyline/d5-quality-control.yaml similarity index 100% rename from config/assemblyline/datasource/d5-quality-control.yaml rename to config/datasource/assemblyline/d5-quality-control.yaml diff --git a/config/assemblyline/datasource/d6-packaging.yaml b/config/datasource/assemblyline/d6-packaging.yaml similarity index 100% rename from config/assemblyline/datasource/d6-packaging.yaml rename to config/datasource/assemblyline/d6-packaging.yaml diff --git a/config/assemblyline/datasource/d7-shipping.yaml b/config/datasource/assemblyline/d7-shipping.yaml similarity index 100% rename from config/assemblyline/datasource/d7-shipping.yaml rename to config/datasource/assemblyline/d7-shipping.yaml diff --git a/config/datasource/line/line-a.yaml b/config/datasource/line/line-a.yaml new file mode 100644 index 0000000..5bc1696 --- /dev/null +++ b/config/datasource/line/line-a.yaml @@ -0,0 +1,11 @@ +kind: datasource +name: "A" +spec: + name: "A" + group: "line" + selection: genericProbability + distribution: [1.0] + eventData: + - activity: "A" + transition: "B" + duration: 1 \ No newline at end of file diff --git a/config/datasource/line/line-b.yaml b/config/datasource/line/line-b.yaml new file mode 100644 index 0000000..fe9dfd7 --- /dev/null +++ b/config/datasource/line/line-b.yaml @@ -0,0 +1,11 @@ +kind: datasource +name: "B" +spec: + name: "B" + group: "line" + selection: genericProbability + distribution: [1.0] + eventData: + - activity: "B" + transition: "C" + duration: 1 \ No newline at end of file diff --git a/config/datasource/line/line-c.yaml b/config/datasource/line/line-c.yaml new file mode 100644 index 0000000..153f104 --- /dev/null +++ b/config/datasource/line/line-c.yaml @@ -0,0 +1,11 @@ +kind: datasource +name: "C" +spec: + name: "C" + group: "line" + selection: genericProbability + distribution: [1.0] + eventData: + - activity: "C" + transition: "D" + duration: 1 \ No newline at end of file diff --git a/config/datasource/line/line-d.yaml b/config/datasource/line/line-d.yaml new file mode 100644 index 0000000..b54c7e6 --- /dev/null +++ b/config/datasource/line/line-d.yaml @@ -0,0 +1,11 @@ +kind: datasource +name: "D" +spec: + name: "D" + group: "line" + selection: genericProbability + distribution: [1.0] + eventData: + - activity: "D" + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/line/line-start.yaml b/config/datasource/line/line-start.yaml new file mode 100644 index 0000000..8a36837 --- /dev/null +++ b/config/datasource/line/line-start.yaml @@ -0,0 +1,11 @@ +kind: datasource +name: "" +spec: + name: "" + group: "line" + selection: genericProbability + distribution: [1.0] + eventData: + - activity: "" + transition: "A" + duration: 0 \ No newline at end of file diff --git a/config/assemblyline/simulation/simulation_countbased.yaml b/config/simulation/countbased.yaml similarity index 100% rename from config/assemblyline/simulation/simulation_countbased.yaml rename to config/simulation/countbased.yaml diff --git a/config/assemblyline/simulation/simulation_loadtest.yaml b/config/simulation/loadtest.yaml similarity index 100% rename from config/assemblyline/simulation/simulation_loadtest.yaml rename to config/simulation/loadtest.yaml diff --git a/config/assemblyline/simulation/simulation_stream.yaml b/config/simulation/stream.yaml similarity index 100% rename from config/assemblyline/simulation/simulation_stream.yaml rename to config/simulation/stream.yaml diff --git a/config/sink/console-sink.yaml b/config/sink/console-sink.yaml new file mode 100644 index 0000000..e3a4b14 --- /dev/null +++ b/config/sink/console-sink.yaml @@ -0,0 +1,13 @@ +kind: sink +name: console-sink +spec: + type: console + id: "Sensor" + dataSourceRefs: + - "A" + - "B" + - "C" + - "D" + #- "GoodsDelivery" + #- "MaterialPreparation" + #- "AssemblyLineSetup" diff --git a/config/sink/kafka-sink.yaml b/config/sink/kafka-sink.yaml new file mode 100644 index 0000000..1213ec4 --- /dev/null +++ b/config/sink/kafka-sink.yaml @@ -0,0 +1,22 @@ +kind: sink +name: kafka-sink +spec: + type: kafka + bootstrapServer: "minikube:32389" + clientId: "client1" + topic: "line" + partition: + type: "constant" + partition: 0 + dataSourceRefs: + - "A" + - "B" + - "C" + - "D" + #- "GoodsDelivery" + #- "MaterialPreparation" + #- "AssemblyLineSetup" + #- "Assembling" + #- "QualityControl" + #- "Packaging" + #- "Shipping" \ No newline at end of file diff --git a/config/assemblyline/sink/loadtest-sink.yaml b/config/sink/loadtest-sink.yaml similarity index 100% rename from config/assemblyline/sink/loadtest-sink.yaml rename to config/sink/loadtest-sink.yaml diff --git a/config/assemblyline/sink/ui.yaml b/config/sink/sink-ui.yaml similarity index 100% rename from config/assemblyline/sink/ui.yaml rename to config/sink/sink-ui.yaml diff --git a/config/assemblyline/sink/test-sink.yaml b/config/sink/test-sink.yaml similarity index 100% rename from config/assemblyline/sink/test-sink.yaml rename to config/sink/test-sink.yaml diff --git a/distributed_event_factory/main.py b/distributed_event_factory/main.py index b73d2cc..7a4ae8e 100644 --- a/distributed_event_factory/main.py +++ b/distributed_event_factory/main.py @@ -5,8 +5,8 @@ if __name__ == '__main__': event_factory = EventFactory() (event_factory - .add_file("../config/assemblyline/simulation/simulation_countbased.yaml") - .add_directory("../config/assemblyline/datasource") - .add_file("../config/assemblyline/sink/kafka-sink.yaml") + .add_directory("../config/datasource/assemblyline") + .add_file("../config/simulation/loadtest.yaml") + .add_file("../config/sink/loadtest-sink.yaml") ).run() sleep(1) \ No newline at end of file diff --git a/distributed_event_factory/parser/sink/http_sink_parser.py b/distributed_event_factory/parser/sink/http_sink_parser.py index d68cdcc..1d31963 100644 --- a/distributed_event_factory/parser/sink/http_sink_parser.py +++ b/distributed_event_factory/parser/sink/http_sink_parser.py @@ -1,5 +1,5 @@ from distributed_event_factory.parser.parser import Parser -from distributed_event_factory.provider.sink.http.http_sink import HttpSink +from distributed_event_factory.provider.sink.http.http_sink import LoadTestHttpSink from distributed_event_factory.provider.sink.ui.terminal_ui_sink import UiSink @@ -8,7 +8,7 @@ def add_dependency(self, key: str, dependency): pass def parse(self, config): - return HttpSink( + return LoadTestHttpSink( url=config["url"], data_source_ref=config["dataSourceRefs"], frame_duration=config["timeframe"] diff --git a/distributed_event_factory/provider/sink/http/http_sink.py b/distributed_event_factory/provider/sink/http/http_sink.py index ee1e81a..26537ab 100644 --- a/distributed_event_factory/provider/sink/http/http_sink.py +++ b/distributed_event_factory/provider/sink/http/http_sink.py @@ -20,7 +20,7 @@ def toJson(self): sort_keys=True, indent=4) -class HttpSink(Sink): +class LoadTestHttpSink(Sink): def __init__(self, url, frame_duration, data_source_ref): super().__init__(data_source_ref) @@ -29,7 +29,7 @@ def __init__(self, url, frame_duration, data_source_ref): self.frame_duration = frame_duration def start_timeframe(self): - self.timeframe = TimeFrame(duration=self.frame_duration) + self.timeframe = TimeFrame(duration=self.frame_duration*1000) # conversion microseconds to milliseconds def add_event(self, event): self.timeframe.add_event(event) diff --git a/distributed_event_factory/simulation/abstract_simulation.py b/distributed_event_factory/simulation/abstract_simulation.py new file mode 100644 index 0000000..af39f97 --- /dev/null +++ b/distributed_event_factory/simulation/abstract_simulation.py @@ -0,0 +1,20 @@ +from abc import ABC + + +class Simulation(ABC): + def __init__(self): + self.sinks = dict() + + def send_event(self, event): + if event.node in self.sinks: + for sink in self.sinks[event.node]: + sink.send(event) + else: + print("Skip event. No sink configured") + + def setup_sinks(self, sinks): + for sink in sinks: + for data_source in sinks[sink].data_source_ref: + if data_source not in self.sinks: + self.sinks[data_source] = [] + self.sinks[data_source].append(sinks[sink]) \ No newline at end of file diff --git a/distributed_event_factory/simulation/countbased.py b/distributed_event_factory/simulation/countbased.py index c301500..c3daf59 100644 --- a/distributed_event_factory/simulation/countbased.py +++ b/distributed_event_factory/simulation/countbased.py @@ -1,28 +1,18 @@ from distributed_event_factory.provider.data.case_provider import CaseIdProvider +from distributed_event_factory.simulation.abstract_simulation import Simulation from distributed_event_factory.simulation.process_simulation import ProcessSimulator -class CountBasedSimulation: +class CountBasedSimulation(Simulation): - def __init__( - self, - simulation_steps: int, - case_id_provider: CaseIdProvider, - ): + def __init__(self, simulation_steps: int, case_id_provider: CaseIdProvider): + super().__init__() self.case_id_provider = case_id_provider self.simulation_steps = simulation_steps self.sinks = dict() - def send_event(self, event): - if event.node in self.sinks: - self.sinks[event.node].send(event) - else: - print("Skip event. No sink configured") - def run_simulation(self, datasources, sinks): - for sink in sinks: - for data_source in sinks[sink].data_source_ref: - self.sinks[data_source] = sinks[sink] + super().setup_sinks(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=datasources diff --git a/distributed_event_factory/simulation/load_test.py b/distributed_event_factory/simulation/load_test.py index b830cc1..fb9b0e1 100644 --- a/distributed_event_factory/simulation/load_test.py +++ b/distributed_event_factory/simulation/load_test.py @@ -2,40 +2,39 @@ from distributed_event_factory.core.datasource import DataSource from distributed_event_factory.provider.data.case_provider import CaseIdProvider from distributed_event_factory.provider.load.load_provider import LoadProvider -from distributed_event_factory.provider.sink.http.http_sink import HttpSink +from distributed_event_factory.provider.sink.http.http_sink import LoadTestHttpSink from distributed_event_factory.provider.sink.sink_provider import Sink +from distributed_event_factory.simulation.abstract_simulation import Simulation from distributed_event_factory.simulation.process_simulation import ProcessSimulator -class LoadTestSimulation: +class LoadTestSimulation(Simulation): def __init__( self, load_provider: LoadProvider, case_id_provider: CaseIdProvider, ): + super().__init__() self.case_id_provider = case_id_provider self.load_provider = load_provider def start(self, sinks): for sink in sinks: - sinks[sink].start_timeframe() + for s in sinks[sink]: + s.start_timeframe() def end(self, sinks): for sink in sinks: - sinks[sink].end_timeframe() + for s in sinks[sink]: + s.end_timeframe() - def run_simulation(self, data_sources: Dict[str, DataSource], sinks: Dict[str, HttpSink]): - mapped_sinks = dict() - for sink in sinks: - for data_source in sinks[sink].data_source_ref: - mapped_sinks[data_source] = sinks[sink] + def run_simulation(self, data_sources: Dict[str, DataSource], sinks: Dict[str, LoadTestHttpSink]): + self.setup_sinks(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=data_sources ) while True: - self.start(mapped_sinks) + self.start(self.sinks) for i in range(int(self.load_provider.get_load_value())): - event = process_simulator.simulate() - if event: - mapped_sinks[event.node].send(event) - self.end(mapped_sinks) + self.send_event(process_simulator.simulate()) + self.end(self.sinks) diff --git a/distributed_event_factory/simulation/stream_simulation.py b/distributed_event_factory/simulation/stream_simulation.py index f861178..fee09c3 100644 --- a/distributed_event_factory/simulation/stream_simulation.py +++ b/distributed_event_factory/simulation/stream_simulation.py @@ -3,27 +3,22 @@ from scheduled_futures import ScheduledThreadPoolExecutor from distributed_event_factory.provider.data.case_provider import CaseIdProvider from distributed_event_factory.provider.load.load_provider import LoadProvider +from distributed_event_factory.simulation.abstract_simulation import Simulation from distributed_event_factory.simulation.process_simulation import ProcessSimulator -class StreamSimulation: +class StreamSimulation(Simulation): def __init__( self, load_provider: LoadProvider, case_id_provider: CaseIdProvider, ): + super().__init__() self.case_id_provider = case_id_provider self.load_provider = load_provider self.sinks = dict() - def send_event(self, sinks, event): - sinks[event.node].send(event) - def run_simulation(self, datasources, sinks): - mapped_sinks = dict() - for sink in sinks: - for data_source in sinks[sink].data_source_ref: - mapped_sinks[data_source] = sinks[sink] - + self.setup_sinks() process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=datasources @@ -31,7 +26,7 @@ def run_simulation(self, datasources, sinks): while True: with ScheduledThreadPoolExecutor() as executor: scheduler = executor.schedule( - lambda: self.send_event(mapped_sinks, process_simulator.simulate()), + lambda: self.send_event(process_simulator.simulate()), period=1/self.load_provider.get_load_value() ) time.sleep(1) diff --git a/test/integration_test.py b/test/integration_test.py index 64570a3..1fcca65 100644 --- a/test/integration_test.py +++ b/test/integration_test.py @@ -11,8 +11,8 @@ def test_integration(self): event_factory.add_sink_parser("test", TestSinkParser()) (event_factory .add_directory(directory="config/assemblyline/datasource") - .add_file("config/assemblyline/simulation/simulation_countbased.yaml") - .add_file("config/assemblyline/sink/test-sink.yaml") + .add_file("config/simulation/countbased.yaml") + .add_file("config/sink/loadtest.yaml") .run()) sink_mock: TestSink = event_factory.get_sink("test") self.assertEqual(100, len(sink_mock.event_log)) From 7d4a7430ad6b51460e193d350f86da78278cea74 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Fri, 25 Oct 2024 15:47:55 +0200 Subject: [PATCH 033/124] make the def ready for usage in docker/k8s --- config/simulation/loadtest.yaml | 9 +++---- config/sink/console-sink.yaml | 14 +++++----- .../event_factory_main.py | 27 +++++++++++++++++++ distributed_event_factory/main.py | 12 --------- .../variant/loadtest_simulation_parser.py | 5 ++-- .../simulation/{load_test.py => loadtest.py} | 22 ++++++++++----- .../simulation/process_simulation.py | 4 +-- k8s/load.jsonnet | 12 +++++++++ requirements.txt | 2 +- 9 files changed, 72 insertions(+), 35 deletions(-) create mode 100644 distributed_event_factory/event_factory_main.py delete mode 100644 distributed_event_factory/main.py rename distributed_event_factory/simulation/{load_test.py => loadtest.py} (67%) diff --git a/config/simulation/loadtest.yaml b/config/simulation/loadtest.yaml index f4389e2..82d8fe2 100644 --- a/config/simulation/loadtest.yaml +++ b/config/simulation/loadtest.yaml @@ -4,9 +4,8 @@ spec: type: loadTest steps: 100 caseId: increasing - timeframe: 10 + genTimeframesTilStart: 10 + timeframe: 1000 load: - loadBehavior: gradual - tickCount: 100 - minimalLoad: 5 - load: 10 \ No newline at end of file + loadBehavior: constant + load: 1000 \ No newline at end of file diff --git a/config/sink/console-sink.yaml b/config/sink/console-sink.yaml index e3a4b14..0c63c22 100644 --- a/config/sink/console-sink.yaml +++ b/config/sink/console-sink.yaml @@ -4,10 +4,10 @@ spec: type: console id: "Sensor" dataSourceRefs: - - "A" - - "B" - - "C" - - "D" - #- "GoodsDelivery" - #- "MaterialPreparation" - #- "AssemblyLineSetup" + - "GoodsDelivery" + - "MaterialPreparation" + - "AssemblyLineSetup" + - "Assembling" + - "QualityControl" + - "Packaging" + - "Shipping" \ No newline at end of file diff --git a/distributed_event_factory/event_factory_main.py b/distributed_event_factory/event_factory_main.py new file mode 100644 index 0000000..0057b56 --- /dev/null +++ b/distributed_event_factory/event_factory_main.py @@ -0,0 +1,27 @@ +import os +import sys +from time import sleep + +from dotenv import load_dotenv + +from distributed_event_factory.event_factory import EventFactory + +if __name__ == '__main__': + event_factory = EventFactory() + + if "local" in sys.argv: + load_dotenv() + + datasource = os.environ["DATASOURCE"] + sink = os.environ["SINK"] + simulation = os.environ["SIMULATION"] + + (event_factory + .add_directory(f"../config/datasource/{datasource}") + .add_file(f"../config/simulation/{simulation}.yaml") + .add_file(f"../config/sink/{sink}.yaml") + ).run() + sleep(10) + #for sinks in event_factory.sinks: + # for sink in sinks: + # sink.start() diff --git a/distributed_event_factory/main.py b/distributed_event_factory/main.py deleted file mode 100644 index 7a4ae8e..0000000 --- a/distributed_event_factory/main.py +++ /dev/null @@ -1,12 +0,0 @@ -from time import sleep - -from distributed_event_factory.event_factory import EventFactory - -if __name__ == '__main__': - event_factory = EventFactory() - (event_factory - .add_directory("../config/datasource/assemblyline") - .add_file("../config/simulation/loadtest.yaml") - .add_file("../config/sink/loadtest-sink.yaml") - ).run() - sleep(1) \ No newline at end of file diff --git a/distributed_event_factory/parser/simulation/variant/loadtest_simulation_parser.py b/distributed_event_factory/parser/simulation/variant/loadtest_simulation_parser.py index 182bc50..bd5881e 100644 --- a/distributed_event_factory/parser/simulation/variant/loadtest_simulation_parser.py +++ b/distributed_event_factory/parser/simulation/variant/loadtest_simulation_parser.py @@ -1,5 +1,5 @@ from distributed_event_factory.parser.parser import Parser -from distributed_event_factory.simulation.load_test import LoadTestSimulation +from distributed_event_factory.simulation.loadtest import LoadTestSimulation class LoadTestSimulationParser(Parser): @@ -13,5 +13,6 @@ def add_dependency(self, key: str, dependency): def parse(self, config): return LoadTestSimulation( case_id_provider=self.dependencies["caseId"].parse(config["caseId"]), - load_provider=self.dependencies["load"].parse(config["load"]) + load_provider=self.dependencies["load"].parse(config["load"]), + generated_timeframes_until_start=config["genTimeframesTilStart"] ) \ No newline at end of file diff --git a/distributed_event_factory/simulation/load_test.py b/distributed_event_factory/simulation/loadtest.py similarity index 67% rename from distributed_event_factory/simulation/load_test.py rename to distributed_event_factory/simulation/loadtest.py index fb9b0e1..a13eccf 100644 --- a/distributed_event_factory/simulation/load_test.py +++ b/distributed_event_factory/simulation/loadtest.py @@ -3,7 +3,6 @@ from distributed_event_factory.provider.data.case_provider import CaseIdProvider from distributed_event_factory.provider.load.load_provider import LoadProvider from distributed_event_factory.provider.sink.http.http_sink import LoadTestHttpSink -from distributed_event_factory.provider.sink.sink_provider import Sink from distributed_event_factory.simulation.abstract_simulation import Simulation from distributed_event_factory.simulation.process_simulation import ProcessSimulator @@ -12,29 +11,40 @@ def __init__( self, load_provider: LoadProvider, case_id_provider: CaseIdProvider, + generated_timeframes_until_start: int ): super().__init__() self.case_id_provider = case_id_provider self.load_provider = load_provider + self.generated_timeframes_until_start = generated_timeframes_until_start - def start(self, sinks): + def start_timeframe(self, sinks): for sink in sinks: for s in sinks[sink]: s.start_timeframe() - def end(self, sinks): + def end_timeframe(self, sinks): for sink in sinks: for s in sinks[sink]: s.end_timeframe() + def start_simulation(self, sinks): + for sink in sinks: + for s in sinks[sink]: + s.start() + def run_simulation(self, data_sources: Dict[str, DataSource], sinks: Dict[str, LoadTestHttpSink]): self.setup_sinks(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=data_sources ) + iteration = 0 while True: - self.start(self.sinks) - for i in range(int(self.load_provider.get_load_value())): + if iteration == self.generated_timeframes_until_start: + self.start_simulation(self.sinks) + self.start_timeframe(self.sinks) + for _ in range(int(self.load_provider.get_load_value())): self.send_event(process_simulator.simulate()) - self.end(self.sinks) + self.end_timeframe(self.sinks) + iteration = iteration + 1 diff --git a/distributed_event_factory/simulation/process_simulation.py b/distributed_event_factory/simulation/process_simulation.py index 3003a95..8bee2af 100644 --- a/distributed_event_factory/simulation/process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -52,9 +52,9 @@ def _build_event(self, case, activity, timestamp, datasource): if hasattr(datasource, "sensor_id"): return Event( timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), - sensor_value=activity, + activity=activity, case_id=case, - sensor_name=datasource.sensor_id.get_name(), + node=datasource.sensor_id.get_name(), group_id=datasource.group_id ) diff --git a/k8s/load.jsonnet b/k8s/load.jsonnet index 6c7654d..2e5d189 100644 --- a/k8s/load.jsonnet +++ b/k8s/load.jsonnet @@ -35,6 +35,18 @@ { name: "BOOTSTRAP_SERVER", value: bootstrapServer + }, + { + name: "SIMULATION", + value: loadtest + }, + { + name: "DATASOURCE", + value: assemblyline + }, + { + name: "SINK", + value: loadtest-sink } ], ports: [ diff --git a/requirements.txt b/requirements.txt index bf0167f..4617740 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,4 +7,4 @@ PyYAML~=6.0.1 python-dotenv~=1.0.1 future~=0.18.2 requests~=2.25.1 -process-mining-core~=0.1.0 \ No newline at end of file +process-mining-core~=0.1.1 \ No newline at end of file From 4207b8d10c6a1a3fe8ca405d22516b15c67b4ef6 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Fri, 25 Oct 2024 15:53:24 +0200 Subject: [PATCH 034/124] make the def ready for usage in docker/k8s --- Dockerfile | 2 +- k8s/load.jsonnet | 9 +++++---- k8s/main.jsonnet | 6 +----- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7ebe960..b82fc2a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,4 +23,4 @@ RUN --mount=type=cache,target=/root/.cache/pip \ USER appuser COPY . . -CMD python3 distributed_event_factory/main.py \ No newline at end of file +CMD python3 distributed_event_factory/event_factory_main.py \ No newline at end of file diff --git a/k8s/load.jsonnet b/k8s/load.jsonnet index 2e5d189..62850b5 100644 --- a/k8s/load.jsonnet +++ b/k8s/load.jsonnet @@ -1,9 +1,10 @@ { - loadDeployment(topic, bootstrapServer):: { + loadDeployment(namespace, topic, bootstrapServer):: { apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "distributed-event-factory", + namespace: namespace, labels: { app: "distributed-event-factory" } @@ -38,15 +39,15 @@ }, { name: "SIMULATION", - value: loadtest + value: "loadtest" }, { name: "DATASOURCE", - value: assemblyline + value: "assemblyline" }, { name: "SINK", - value: loadtest-sink + value: "loadtest-sink" } ], ports: [ diff --git a/k8s/main.jsonnet b/k8s/main.jsonnet index 75ca781..45fe087 100644 --- a/k8s/main.jsonnet +++ b/k8s/main.jsonnet @@ -1,11 +1,7 @@ local load = import 'load.jsonnet'; local a = load.loadDeployment( - topic="testi", - bootstrapServer="minikube:1234" -); - -local b = load.loadDeployment( + namespace="kafka", topic="testi", bootstrapServer="minikube:1234" ); From 1b7f3e6ebc97102b7cd00a485b8a98143b29e7ef Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Sun, 27 Oct 2024 10:09:09 +0100 Subject: [PATCH 035/124] fix the docker path --- config/simulation/stream.yaml | 10 ++++++++++ distributed_event_factory/event_factory_main.py | 16 ++++++++++------ .../simulation/stream_simulation.py | 2 +- k8s/load.jsonnet | 4 ++++ 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/config/simulation/stream.yaml b/config/simulation/stream.yaml index e69de29..cac82bf 100644 --- a/config/simulation/stream.yaml +++ b/config/simulation/stream.yaml @@ -0,0 +1,10 @@ +kind: simulation +name: streamSimulation +spec: + type: stream + caseId: increasing + load: + loadBehavior: sinus + mean: 100 + amplitude: 80 + phase: 10 \ No newline at end of file diff --git a/distributed_event_factory/event_factory_main.py b/distributed_event_factory/event_factory_main.py index 0057b56..07c997a 100644 --- a/distributed_event_factory/event_factory_main.py +++ b/distributed_event_factory/event_factory_main.py @@ -15,13 +15,17 @@ datasource = os.environ["DATASOURCE"] sink = os.environ["SINK"] simulation = os.environ["SIMULATION"] + content_root = os.environ["ROOT"] + + print("Running with config:") + print(f"datasource directory: {datasource}") + print(f"Sink: {sink}") + print(f"Simulation: {simulation}") + print(f"Content root: {content_root}") (event_factory - .add_directory(f"../config/datasource/{datasource}") - .add_file(f"../config/simulation/{simulation}.yaml") - .add_file(f"../config/sink/{sink}.yaml") + .add_directory(f"{content_root}/config/datasource/{datasource}") + .add_file(f"{content_root}/config/simulation/{simulation}.yaml") + .add_file(f"{content_root}/config/sink/{sink}.yaml") ).run() sleep(10) - #for sinks in event_factory.sinks: - # for sink in sinks: - # sink.start() diff --git a/distributed_event_factory/simulation/stream_simulation.py b/distributed_event_factory/simulation/stream_simulation.py index fee09c3..adfbbe5 100644 --- a/distributed_event_factory/simulation/stream_simulation.py +++ b/distributed_event_factory/simulation/stream_simulation.py @@ -18,7 +18,7 @@ def __init__( self.sinks = dict() def run_simulation(self, datasources, sinks): - self.setup_sinks() + self.setup_sinks(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=datasources diff --git a/k8s/load.jsonnet b/k8s/load.jsonnet index 62850b5..d8f9eea 100644 --- a/k8s/load.jsonnet +++ b/k8s/load.jsonnet @@ -48,6 +48,10 @@ { name: "SINK", value: "loadtest-sink" + }, + { + name: "ROOT", + value: "/app" } ], ports: [ From 3b17f8576179038e0ea7e43b750898fee9b0dd3b Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Sun, 27 Oct 2024 11:00:28 +0100 Subject: [PATCH 036/124] adjust load backend url for kubernetes --- config/sink/loadtest-sink.yaml | 2 +- k8s/load.jsonnet | 73 ++++++++++++++++++++++++++++++++-- k8s/main.jsonnet | 15 +++++-- 3 files changed, 82 insertions(+), 8 deletions(-) diff --git a/config/sink/loadtest-sink.yaml b/config/sink/loadtest-sink.yaml index 2ddc8c0..1dadeed 100644 --- a/config/sink/loadtest-sink.yaml +++ b/config/sink/loadtest-sink.yaml @@ -4,7 +4,7 @@ spec: type: http id: "Sensor" timeframe: 1000 - url: "http://localhost:8080/loadgenerator" + url: "http://load-backend.svc:8080/loadgenerator" dataSourceRefs: - "GoodsDelivery" - "MaterialPreparation" diff --git a/k8s/load.jsonnet b/k8s/load.jsonnet index d8f9eea..9c7db6c 100644 --- a/k8s/load.jsonnet +++ b/k8s/load.jsonnet @@ -1,5 +1,5 @@ { - loadDeployment(namespace, topic, bootstrapServer):: { + loadDefDeployment(namespace, topic, bootstrapServer):: { apiVersion: "apps/v1", kind: "Deployment", metadata: { @@ -65,8 +65,73 @@ } } }, - - loadService():: { - + loadBackendDeployment(namespace, topic, bootstrapServer):: { + apiVersion: "apps/v1", + kind: "Deployment", + metadata: { + name: "load-backend", + namespace: namespace, + labels: { + app: "load-backend" + } + }, + spec: { + replicas: 1, + selector: { + matchLabels: { + app: "load-backend" + } + }, + template: { + metadata: { + labels: { + app: "load-backend" + } + }, + spec: { + containers: [ + { + name: "load-backend", + image: "hendrikreiter/def-loadtest-backend:0.1.0", + imagePullPolicy: "Always", + env: [ + { + name: "TOPIC", + value: topic + }, + { + name: "BOOTSTRAP_SERVER", + value: bootstrapServer + } + ], + ports: [ + { + containerPort: 8080 + } + ] + } + ] + } + } + } }, + loadBackendService(namespace):: { + apiVersion: "v1", + kind: "Service", + metadata: { + name: "load-backend", + namespace: namespace + }, + spec: { + selector: { + app: "load-backend" + }, + ports: [ + { + port: 8080, + targetPort: 8080 + } + ] + } + } } \ No newline at end of file diff --git a/k8s/main.jsonnet b/k8s/main.jsonnet index 45fe087..7264cf1 100644 --- a/k8s/main.jsonnet +++ b/k8s/main.jsonnet @@ -1,9 +1,18 @@ local load = import 'load.jsonnet'; +local kafkaNamespace = "kafka"; -local a = load.loadDeployment( - namespace="kafka", +local defDeployment = load.loadDefDeployment( + namespace=kafkaNamespace, topic="testi", bootstrapServer="minikube:1234" ); -[a] \ No newline at end of file +local defBackendDeployment = load.loadBackendDeployment( + namespace=kafkaNamespace, + topic="testi", + bootstrapServer="minikube:1234" +); + +local defBackendService = load.loadBackendService(kafkaNamespace); + +[defDeployment, defBackendDeployment, defBackendService] \ No newline at end of file From 5e42dfec9d60fe3d5ec6476af088246a35e39da8 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Sun, 27 Oct 2024 11:05:39 +0100 Subject: [PATCH 037/124] adjust load backend url for kubernetes --- config/sink/loadtest-sink.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/sink/loadtest-sink.yaml b/config/sink/loadtest-sink.yaml index 1dadeed..f595ecc 100644 --- a/config/sink/loadtest-sink.yaml +++ b/config/sink/loadtest-sink.yaml @@ -4,7 +4,7 @@ spec: type: http id: "Sensor" timeframe: 1000 - url: "http://load-backend.svc:8080/loadgenerator" + url: "http://load-backend:8080/loadgenerator" dataSourceRefs: - "GoodsDelivery" - "MaterialPreparation" From 42dd1ac43529dfe635bbd70704f2b61f715ec3a4 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Sun, 27 Oct 2024 12:19:43 +0100 Subject: [PATCH 038/124] serialize case_id as caseid --- distributed_event_factory/core/event.py | 21 ---- .../event_factory_main.py | 9 ++ k8s/flink.jsonnet | 98 +++++++++++++++++++ k8s/load.jsonnet | 10 +- k8s/main.jsonnet | 24 ++++- requirements.txt | 2 +- 6 files changed, 128 insertions(+), 36 deletions(-) create mode 100644 k8s/flink.jsonnet diff --git a/distributed_event_factory/core/event.py b/distributed_event_factory/core/event.py index 3b5ad74..85fcfe2 100644 --- a/distributed_event_factory/core/event.py +++ b/distributed_event_factory/core/event.py @@ -8,27 +8,6 @@ class Activity: def __init__(self, activity: str): self.activity = activity -#class Event: -# def __init__(self, timestamp, sensor_value, case_id: CaseId, sensor_name, group_id): -# self.timestamp = timestamp -# self.activity: any = sensor_value -# self.caseId: CaseId = case_id -# self.node: str = sensor_name -# self.group: str = group_id -# -# def get_case(self): -# return self.caseId -# -# def get_activity(self): -# return self.activity -# -# def get_timestamp(self): -# return self.timestamp -# -# def __str__(self): -# return str(self.__dict__) - - class StartEvent: def __init__(self, case_id: CaseId, transition_provider: TransitionProvider): self.case_id = case_id diff --git a/distributed_event_factory/event_factory_main.py b/distributed_event_factory/event_factory_main.py index 07c997a..7027c2e 100644 --- a/distributed_event_factory/event_factory_main.py +++ b/distributed_event_factory/event_factory_main.py @@ -5,6 +5,7 @@ from dotenv import load_dotenv from distributed_event_factory.event_factory import EventFactory +from process_mining_core.datastructure.core.event import Event if __name__ == '__main__': event_factory = EventFactory() @@ -12,6 +13,14 @@ if "local" in sys.argv: load_dotenv() + event = Event( + timestamp="", + case_id="a1", + group_id="a3", + activity="a", + node="n" + ) + print(event.__dict__) datasource = os.environ["DATASOURCE"] sink = os.environ["SINK"] simulation = os.environ["SIMULATION"] diff --git a/k8s/flink.jsonnet b/k8s/flink.jsonnet new file mode 100644 index 0000000..ff6cc70 --- /dev/null +++ b/k8s/flink.jsonnet @@ -0,0 +1,98 @@ +local appName = "heuristics-miner-flink"; + +{ + heuristicsMinerFlinkDeployment( + namespace, + bootstrapServer, + inputTopic, + modelTopic, + group, + parallelism, + sampleSize, + batchSize, + andThreshold, + dependencyThreshold + ):: + { + apiVersion: "apps/v1", + kind: "Deployment", + metadata: { + name: appName, + namespace: namespace, + labels: { + app: appName + } + }, + spec: { + replicas: 1, + selector: { + matchLabels: { + app: appName + } + }, + template: { + metadata: { + labels: { + app: appName + } + }, + spec: { + containers: [ + { + name: appName, + image: "hendrikreiter/process-mining-flink:0.1.0", + imagePullPolicy: "Always", + env: [ + { + name: "BOOTSTRAP_SERVER", + value: bootstrapServer + }, + { + name: "INPUT_TOPIC", + value: inputTopic + }, + { + name: "MODEL_TOPIC", + value: modelTopic + }, + { + name: "GROUP", + value: group + }, + { + name: "PARALLELISM", + value: parallelism + }, + { + name: 'PATH_TO_CONNECT_JAR', + value: "/app" + }, + { + name: 'SAMPLE_SIZE', + value: sampleSize + }, + { + name: 'BATCH_SIZE', + value: batchSize + }, + { + name: 'AND_THRESHOLD', + value: andThreshold + }, + { + name: 'DEPENDENCY_THRESHOLD', + value: dependencyThreshold + }, + ], + ports: [ + { + containerPort: 8080 + } + ] + } + ] + } + } + } + } +} diff --git a/k8s/load.jsonnet b/k8s/load.jsonnet index 9c7db6c..295f072 100644 --- a/k8s/load.jsonnet +++ b/k8s/load.jsonnet @@ -1,5 +1,5 @@ { - loadDefDeployment(namespace, topic, bootstrapServer):: { + loadDefDeployment(namespace):: { apiVersion: "apps/v1", kind: "Deployment", metadata: { @@ -29,14 +29,6 @@ image: "hendrikreiter/distributed_event_factory:0.2.0-SNAPSHOT", imagePullPolicy: "Always", env: [ - { - name: "TOPIC", - value: topic - }, - { - name: "BOOTSTRAP_SERVER", - value: bootstrapServer - }, { name: "SIMULATION", value: "loadtest" diff --git a/k8s/main.jsonnet b/k8s/main.jsonnet index 7264cf1..eac3626 100644 --- a/k8s/main.jsonnet +++ b/k8s/main.jsonnet @@ -1,18 +1,32 @@ local load = import 'load.jsonnet'; +local flink = import 'flink.jsonnet'; local kafkaNamespace = "kafka"; +local inputTopic = "testi"; +local bootstrapServer = "my-cluster-kafka-bootstrap:9092"; local defDeployment = load.loadDefDeployment( namespace=kafkaNamespace, - topic="testi", - bootstrapServer="minikube:1234" ); local defBackendDeployment = load.loadBackendDeployment( namespace=kafkaNamespace, - topic="testi", - bootstrapServer="minikube:1234" + topic=inputTopic, + bootstrapServer=bootstrapServer ); local defBackendService = load.loadBackendService(kafkaNamespace); -[defDeployment, defBackendDeployment, defBackendService] \ No newline at end of file +local flinkDeployment = flink.heuristicsMinerFlinkDeployment( + namespace = kafkaNamespace, + bootstrapServer = bootstrapServer, + inputTopic = inputTopic, + modelTopic = "model", + group = "heuristics-miner", + parallelism = "1", + sampleSize = "200", + batchSize = "100", + andThreshold = "0.5", + dependencyThreshold = "0.5" +); + +[defDeployment, defBackendDeployment, defBackendService, flinkDeployment] \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 4617740..7071c6e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,4 +7,4 @@ PyYAML~=6.0.1 python-dotenv~=1.0.1 future~=0.18.2 requests~=2.25.1 -process-mining-core~=0.1.1 \ No newline at end of file +process-mining-core~=0.1.3 \ No newline at end of file From 2abe0707173442da03aae334e5377f9c9080c6d2 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Mon, 28 Oct 2024 18:57:44 +0100 Subject: [PATCH 039/124] make Load configurable via environment variable --- .../event_factory_main.py | 8 -- .../simulation/load/constant_load_parser.py | 8 +- k8s/build.sh | 1 - k8s/flink.jsonnet | 98 ------------- k8s/load.jsonnet | 129 ------------------ k8s/main.jsonnet | 32 ----- 6 files changed, 7 insertions(+), 269 deletions(-) delete mode 100755 k8s/build.sh delete mode 100644 k8s/flink.jsonnet delete mode 100644 k8s/load.jsonnet delete mode 100644 k8s/main.jsonnet diff --git a/distributed_event_factory/event_factory_main.py b/distributed_event_factory/event_factory_main.py index 7027c2e..345dce5 100644 --- a/distributed_event_factory/event_factory_main.py +++ b/distributed_event_factory/event_factory_main.py @@ -13,14 +13,6 @@ if "local" in sys.argv: load_dotenv() - event = Event( - timestamp="", - case_id="a1", - group_id="a3", - activity="a", - node="n" - ) - print(event.__dict__) datasource = os.environ["DATASOURCE"] sink = os.environ["SINK"] simulation = os.environ["SIMULATION"] diff --git a/distributed_event_factory/parser/simulation/load/constant_load_parser.py b/distributed_event_factory/parser/simulation/load/constant_load_parser.py index 6a65257..e2338d5 100644 --- a/distributed_event_factory/parser/simulation/load/constant_load_parser.py +++ b/distributed_event_factory/parser/simulation/load/constant_load_parser.py @@ -1,3 +1,5 @@ +import os + from distributed_event_factory.parser.parser import Parser from distributed_event_factory.provider.load.load_provider import ConstantLoadProvider @@ -8,4 +10,8 @@ def add_dependency(self, key: str, dependency): pass def parse(self, config): - return ConstantLoadProvider(config["load"]) \ No newline at end of file + if "load" in os.environ: + load = int(os.environ["LOAD"]) + else: + load = config["load"] + return ConstantLoadProvider(load) \ No newline at end of file diff --git a/k8s/build.sh b/k8s/build.sh deleted file mode 100755 index 8f30403..0000000 --- a/k8s/build.sh +++ /dev/null @@ -1 +0,0 @@ -jsonnet -y main.jsonnet | kubectl apply -f - diff --git a/k8s/flink.jsonnet b/k8s/flink.jsonnet deleted file mode 100644 index ff6cc70..0000000 --- a/k8s/flink.jsonnet +++ /dev/null @@ -1,98 +0,0 @@ -local appName = "heuristics-miner-flink"; - -{ - heuristicsMinerFlinkDeployment( - namespace, - bootstrapServer, - inputTopic, - modelTopic, - group, - parallelism, - sampleSize, - batchSize, - andThreshold, - dependencyThreshold - ):: - { - apiVersion: "apps/v1", - kind: "Deployment", - metadata: { - name: appName, - namespace: namespace, - labels: { - app: appName - } - }, - spec: { - replicas: 1, - selector: { - matchLabels: { - app: appName - } - }, - template: { - metadata: { - labels: { - app: appName - } - }, - spec: { - containers: [ - { - name: appName, - image: "hendrikreiter/process-mining-flink:0.1.0", - imagePullPolicy: "Always", - env: [ - { - name: "BOOTSTRAP_SERVER", - value: bootstrapServer - }, - { - name: "INPUT_TOPIC", - value: inputTopic - }, - { - name: "MODEL_TOPIC", - value: modelTopic - }, - { - name: "GROUP", - value: group - }, - { - name: "PARALLELISM", - value: parallelism - }, - { - name: 'PATH_TO_CONNECT_JAR', - value: "/app" - }, - { - name: 'SAMPLE_SIZE', - value: sampleSize - }, - { - name: 'BATCH_SIZE', - value: batchSize - }, - { - name: 'AND_THRESHOLD', - value: andThreshold - }, - { - name: 'DEPENDENCY_THRESHOLD', - value: dependencyThreshold - }, - ], - ports: [ - { - containerPort: 8080 - } - ] - } - ] - } - } - } - } -} diff --git a/k8s/load.jsonnet b/k8s/load.jsonnet deleted file mode 100644 index 295f072..0000000 --- a/k8s/load.jsonnet +++ /dev/null @@ -1,129 +0,0 @@ -{ - loadDefDeployment(namespace):: { - apiVersion: "apps/v1", - kind: "Deployment", - metadata: { - name: "distributed-event-factory", - namespace: namespace, - labels: { - app: "distributed-event-factory" - } - }, - spec: { - replicas: 1, - selector: { - matchLabels: { - app: "distributed-event-factory" - } - }, - template: { - metadata: { - labels: { - app: "distributed-event-factory" - } - }, - spec: { - containers: [ - { - name: "distributed-event-factory", - image: "hendrikreiter/distributed_event_factory:0.2.0-SNAPSHOT", - imagePullPolicy: "Always", - env: [ - { - name: "SIMULATION", - value: "loadtest" - }, - { - name: "DATASOURCE", - value: "assemblyline" - }, - { - name: "SINK", - value: "loadtest-sink" - }, - { - name: "ROOT", - value: "/app" - } - ], - ports: [ - { - containerPort: 8080 - } - ] - } - ] - } - } - } - }, - loadBackendDeployment(namespace, topic, bootstrapServer):: { - apiVersion: "apps/v1", - kind: "Deployment", - metadata: { - name: "load-backend", - namespace: namespace, - labels: { - app: "load-backend" - } - }, - spec: { - replicas: 1, - selector: { - matchLabels: { - app: "load-backend" - } - }, - template: { - metadata: { - labels: { - app: "load-backend" - } - }, - spec: { - containers: [ - { - name: "load-backend", - image: "hendrikreiter/def-loadtest-backend:0.1.0", - imagePullPolicy: "Always", - env: [ - { - name: "TOPIC", - value: topic - }, - { - name: "BOOTSTRAP_SERVER", - value: bootstrapServer - } - ], - ports: [ - { - containerPort: 8080 - } - ] - } - ] - } - } - } - }, - loadBackendService(namespace):: { - apiVersion: "v1", - kind: "Service", - metadata: { - name: "load-backend", - namespace: namespace - }, - spec: { - selector: { - app: "load-backend" - }, - ports: [ - { - port: 8080, - targetPort: 8080 - } - ] - } - } -} \ No newline at end of file diff --git a/k8s/main.jsonnet b/k8s/main.jsonnet deleted file mode 100644 index eac3626..0000000 --- a/k8s/main.jsonnet +++ /dev/null @@ -1,32 +0,0 @@ -local load = import 'load.jsonnet'; -local flink = import 'flink.jsonnet'; -local kafkaNamespace = "kafka"; -local inputTopic = "testi"; -local bootstrapServer = "my-cluster-kafka-bootstrap:9092"; - -local defDeployment = load.loadDefDeployment( - namespace=kafkaNamespace, -); - -local defBackendDeployment = load.loadBackendDeployment( - namespace=kafkaNamespace, - topic=inputTopic, - bootstrapServer=bootstrapServer -); - -local defBackendService = load.loadBackendService(kafkaNamespace); - -local flinkDeployment = flink.heuristicsMinerFlinkDeployment( - namespace = kafkaNamespace, - bootstrapServer = bootstrapServer, - inputTopic = inputTopic, - modelTopic = "model", - group = "heuristics-miner", - parallelism = "1", - sampleSize = "200", - batchSize = "100", - andThreshold = "0.5", - dependencyThreshold = "0.5" -); - -[defDeployment, defBackendDeployment, defBackendService, flinkDeployment] \ No newline at end of file From a075f7953e9aabe40b58cc49b781029051845b40 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Sun, 3 Nov 2024 19:32:49 +0100 Subject: [PATCH 040/124] adjust deployment to exercise --- config/sink/kafka-sink.yaml | 20 ++++++++------------ config/sink/loadtest-sink.yaml | 2 +- run-load-backend.sh | 1 + 3 files changed, 10 insertions(+), 13 deletions(-) create mode 100755 run-load-backend.sh diff --git a/config/sink/kafka-sink.yaml b/config/sink/kafka-sink.yaml index 1213ec4..aed5cc0 100644 --- a/config/sink/kafka-sink.yaml +++ b/config/sink/kafka-sink.yaml @@ -2,21 +2,17 @@ kind: sink name: kafka-sink spec: type: kafka - bootstrapServer: "minikube:32389" + bootstrapServer: "minikube:31986" clientId: "client1" topic: "line" partition: type: "constant" partition: 0 dataSourceRefs: - - "A" - - "B" - - "C" - - "D" - #- "GoodsDelivery" - #- "MaterialPreparation" - #- "AssemblyLineSetup" - #- "Assembling" - #- "QualityControl" - #- "Packaging" - #- "Shipping" \ No newline at end of file + - "GoodsDelivery" + - "MaterialPreparation" + - "AssemblyLineSetup" + - "Assembling" + - "QualityControl" + - "Packaging" + - "Shipping" \ No newline at end of file diff --git a/config/sink/loadtest-sink.yaml b/config/sink/loadtest-sink.yaml index f595ecc..2ddc8c0 100644 --- a/config/sink/loadtest-sink.yaml +++ b/config/sink/loadtest-sink.yaml @@ -4,7 +4,7 @@ spec: type: http id: "Sensor" timeframe: 1000 - url: "http://load-backend:8080/loadgenerator" + url: "http://localhost:8080/loadgenerator" dataSourceRefs: - "GoodsDelivery" - "MaterialPreparation" diff --git a/run-load-backend.sh b/run-load-backend.sh new file mode 100755 index 0000000..ca68af8 --- /dev/null +++ b/run-load-backend.sh @@ -0,0 +1 @@ +docker run -e BOOTSTRAP_SERVER=$1 -e TOPIC=$2 -p 8080:8080 --network=host hendrikreiter/def-loadtest-backend:0.1.0 \ No newline at end of file From 9516b2cef6a971b68bef101850108680b80fe396 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Tue, 5 Nov 2024 08:11:57 +0100 Subject: [PATCH 041/124] update the README to version 0.2.0 --- README.md | 159 +++++++++++++----- .../event_factory_main.py | 2 - 2 files changed, 115 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index 3622384..b31c1bf 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,8 @@ The Distributed Event Factory (DEF) is a simulation tool for Distributed Process Mining. It is designed for simulating real world processes utilizing Markov chains. -It produces events consisting of *caseId*, *activity* and *timestamp* on distributed event sources. +It produces events consisting of classical process mining measures *caseId*, *activity* and *timestamp* on assembled +with location data as the *node* and a *group*. In contrast to traditional process mining, multiple independent event streams are generated instead of a single large one. @@ -24,64 +25,128 @@ We use such a factory as a running example for configuring the DEF. ## Core concepts +Three core concepts underlie DEF: DataSource, Simulation and Sink. Those entities are configured via yaml-files. + +### Datasources DEF is based on a Markov chain. The vertices of the Markov chain represent the distributed data sources. The edges represent transitions between the data sources. They contain a probability for transitioning, the activity -performed -and a function modelling the process duration. +performed and a function modelling the process duration. ![Markov Chain](docs/markov.png) -## Minimal Running Example - -The DEF is configured via a yaml file. A minimal running example is presented here +A minimal running example yaml is presented here: ```yaml -numberOfDataSources: - type: static - count: 7 -caseId: increasing -type: load -loadType: constant -tickCount: 100 -load: 10 -dataSourceTopology: - defaultSink: - type: console - dataSources: - - name: "GoodsDelivery" - groupId: "factory" - eventGeneration: - selection: genericProbability - distribution: [ 0.1, 0.7, 0.2 ] - from: - events: - - activity: "Reject" - transition: 7 - duration: 1 +kind: datasource +name: "MaterialPreparation" +spec: + name: "MaterialPreparation" + group: "factory" + selection: genericProbability + distribution: [ 0.8, 0.2 ] + eventData: + - activity: "Waiting for Material" + transition: "MaterialPreparation" + duration: 2 + - activity: "MaterialPreparation - Finished" + duration: 1 + transition: "AssemblyLineSetup" ``` -The configuration of the DEF can be separated into two parts: -simulation configuration and the datasource topology. +Every Resource has to specify a kind in our case the kind `datasource`. +The name (here: `MaterialPreparation`), is used for later referencing this datasource in the code. +The specification `spec` defines the properties of the datasource. The `name` refers to the node name which +is later referred in the `node` field of the generated event. This is also the case for the field `group`. +Moreover, The `selection` of the next emitted event can be specified. In this case its `genericProbability`. +It selects the events from the event data by the defined `distribution`. The event data refers to the edges in the Markov +chain including `duration`, `transition` and `activity`. + +### Sink -### Simulation Configuration +To view and use the data which is generated by the datasources (a) sink(s) must be specified. +The minimal sink-yaml. -`type:` Describes how the simulation is run. Currently, the values `debug` and `load` are supported. -The `load` type gives the possibility to define how the fast the simulation is running. -The `debug` option should be used for development and produces more verbose stacktraces. +```yaml +kind: sink +name: console-sink +spec: + type: console + id: "Sensor" + dataSourceRefs: + - "MaterialPreparation" +``` -`caseId:` Defines a strategy how the caseIds are generated +The `type` of the sink is here defined as `console-sink` which prints the events to the console. The `id` is a prefix to +identify the sink in the console (especially useful if multiple console sinks are used). The `dataSourceRefs` defines +from which datasource the events are emitted. A datasource can be also linked to multiple sinks. + +### Simulation +A `simulation` runs the process through our datasources and emits their events via the sinks. The `type` `stream` creates +a datastream. The `caseId` defines how the case-ids are generated. +In the `incresing` mode the caseId is an incrementally increased number. The load defines at which speed the simulation is run. +In this case constantly 10 events per second are emitted. + +```yaml +kind: simulation +name: streamSimulation +spec: + type: stream + caseId: increasing + load: + loadBehavior: load + load: 10 +``` -`loadType`: Defines the function which describes the load. In this example it is set to a `constant` load function. +### Load Testing +All currently shown configurations are suited for generating mock events streams. +As additional feature, DEF can also be used for real load testing of process mining applications. +However, therefore specific configurations need to be specified. The type of simulation has to be `laod-test` +and the sinks have to be `loadtest` sinks. The load-test sinks depend on a load-test backend which can precisely emit +the specified load event at large scale. -`load`: Describes the speed the simulation is running +The loadtest simulation has 2 new properties to specify: `timeframe` and a load-backend `url`. A timeframe is a batch of events which is submitted together to the load-backend. The number specifies the duration +of this timeframe in milliseconds. +```yaml +kind: sink +name: http-sink +spec: + type: http + id: "Sensor" + timeframe: 1000 + url: "http://localhost:8080/loadgenerator" + dataSourceRefs: + - "MaterialPreparation" +``` -### Data Source Topology +The simulation specifies a new property `genTimeframesTilStart` first timeframes can be buffered at the +load-backend before the actual event emission is started. +```yaml +kind: simulation +name: assembly-line-simulation +spec: + type: loadTest + caseId: increasing + genTimeframesTilStart: 10 + load: + loadBehavior: constant + load: 1000 +``` -The data sources are defined via a Markov chain. The Markov Chain is configured in a distributed fashion. -Each data source knows its successor. On every edge a duration, a generated activity and the next invoked datasource is -defined. More details can be found [here](distributed_event_factory/provider/datasource/README.md) +### Start the load backend +To use the load-backend [docker](docker.io) needs to be installed on your machine. Currently, +the load backend only supports writing data to a kafka queue. +The load-backend is started via the script +```sh +./run-load-backend +``` ## Installation +There are two options install DEF, via PyPI or building it yourself. + +### PyPI + + +### Self Build Requirements: - Python >= 3.10 @@ -95,9 +160,15 @@ pip install -r requirements.txt Define the `Distribted Event Factory` and specify a config file like mentioned above. ```python -from simulation.distributed_event_factory import DistributedEventFactory -config_file = "config/assembly_line.yml" -DistributedEventFactory(config_file).start() +from distributed_event_factory.event_factory import EventFactory + +event_factory = EventFactory() +(event_factory + .add_directory("config/datasource/assemblyline") + .add_file("config/simulation/stream.yaml") + .add_file("config/sink/sink.yaml") + ).run() ``` +## Advanced configuration diff --git a/distributed_event_factory/event_factory_main.py b/distributed_event_factory/event_factory_main.py index 345dce5..65b474b 100644 --- a/distributed_event_factory/event_factory_main.py +++ b/distributed_event_factory/event_factory_main.py @@ -3,9 +3,7 @@ from time import sleep from dotenv import load_dotenv - from distributed_event_factory.event_factory import EventFactory -from process_mining_core.datastructure.core.event import Event if __name__ == '__main__': event_factory = EventFactory() From 97c98240f9304cee38bb42a0df4c9a00dde63acb Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Fri, 8 Nov 2024 16:20:53 +0100 Subject: [PATCH 042/124] release 0.2.0 --- .github/workflows/docker-image.yml | 4 +-- config/simulation/stream.yaml | 6 ++-- distributed_event_factory/event_factory.py | 29 +++++++++++++++---- .../variant/stream_simulation_parser.py | 2 +- .../provider/sink/console/console_sink.py | 2 +- .../simulation/abstract_simulation.py | 11 +++---- .../simulation/countbased.py | 7 +++-- .../simulation/loadtest.py | 3 +- .../{stream_simulation.py => stream.py} | 3 +- pyproject.toml | 2 +- 10 files changed, 46 insertions(+), 23 deletions(-) rename distributed_event_factory/simulation/{stream_simulation.py => stream.py} (94%) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 82db9c6..ae774bb 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -15,6 +15,6 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Build image - run: docker build . --file Dockerfile --tag hendrikreiter/distributed_event_factory:0.2.0-SNAPSHOT + run: docker build . --file Dockerfile --tag hendrikreiter/distributed_event_factory:0.2.0 - name: Push image - run: docker push hendrikreiter/distributed_event_factory:0.2.0-SNAPSHOT \ No newline at end of file + run: docker push hendrikreiter/distributed_event_factory:0.2.0 \ No newline at end of file diff --git a/config/simulation/stream.yaml b/config/simulation/stream.yaml index cac82bf..66b33de 100644 --- a/config/simulation/stream.yaml +++ b/config/simulation/stream.yaml @@ -4,7 +4,5 @@ spec: type: stream caseId: increasing load: - loadBehavior: sinus - mean: 100 - amplitude: 80 - phase: 10 \ No newline at end of file + loadBehavior: constant + load: 10 \ No newline at end of file diff --git a/distributed_event_factory/event_factory.py b/distributed_event_factory/event_factory.py index f839c09..a234f38 100644 --- a/distributed_event_factory/event_factory.py +++ b/distributed_event_factory/event_factory.py @@ -8,6 +8,7 @@ from distributed_event_factory.parser.simulation.case.case_id_parser import CaseIdParser from distributed_event_factory.parser.simulation.load.load_parser import LoadParser from distributed_event_factory.parser.sink.sink_parser import SinkParser +from distributed_event_factory.provider.sink.sink_provider import Sink class EventFactory: @@ -20,21 +21,27 @@ def __init__(self): def add_load_parser(self, key: str, parser: LoadParser): self.parser.load_parser.add_dependency(key, parser) + return self def add_case_id_parser(self, key: str, parser: CaseIdParser): self.parser.case_id_parser.add_dependency(key, parser) + return self def add_transition_parser(self, key: str, parser: TransitionParser): self.parser.transition_parser.add_dependency(key, parser) + return self def add_activity_parser(self, key: str, parser: ActivityParser): self.parser.activity_parser.add_dependency(key, parser) + return self def add_sink_parser(self, key: str, parser: SinkParser): self.parser.sink_parser.add_dependency(key, parser) + return self def add_selection_parser(self, key: str, parser: SinkParser): self.parser.probability_selection_parser.add_dependency(key, parser) + return self def get_datasource(self, datasource_key): return self.datasources[datasource_key] @@ -47,6 +54,18 @@ def add_directory(self, directory): self.add_file(directory + "/" + filename) return self + def add_sink(self, name, sink: Sink): + self.sinks[name] = sink + return self + + def add_datasource(self, name, datasource): + self.datasources[name] = datasource + return self + + def add_simulation(self, name, simulation): + self.simulations[name] = simulation + return self + def add_file(self, filename): with open(filename) as file: configuration = yaml.safe_load(file) @@ -54,13 +73,13 @@ def add_file(self, filename): name = configuration['name'] parsed_object = self.parser.kind_parser.parse(configuration) if kind == "simulation": - self.simulations[name] = parsed_object + self.add_simulation(name, parsed_object) elif kind == "datasource": - self.datasources[name] = parsed_object + self.add_datasource(name, parsed_object) elif kind == "sink": - self.sinks[name] = parsed_object + self.add_sink(name, parsed_object) return self - def run(self): + def run(self, hook=lambda: None): for simulation in self.simulations: - self.simulations[simulation].run_simulation(self.datasources, self.sinks) + self.simulations[simulation].run_simulation(self.datasources, self.sinks, hook) \ No newline at end of file diff --git a/distributed_event_factory/parser/simulation/variant/stream_simulation_parser.py b/distributed_event_factory/parser/simulation/variant/stream_simulation_parser.py index c692433..5caca22 100644 --- a/distributed_event_factory/parser/simulation/variant/stream_simulation_parser.py +++ b/distributed_event_factory/parser/simulation/variant/stream_simulation_parser.py @@ -1,5 +1,5 @@ from distributed_event_factory.parser.parser import Parser -from distributed_event_factory.simulation.stream_simulation import StreamSimulation +from distributed_event_factory.simulation.stream import StreamSimulation class StreamSimulationParser(Parser): diff --git a/distributed_event_factory/provider/sink/console/console_sink.py b/distributed_event_factory/provider/sink/console/console_sink.py index 4803de9..bf2d487 100644 --- a/distributed_event_factory/provider/sink/console/console_sink.py +++ b/distributed_event_factory/provider/sink/console/console_sink.py @@ -6,8 +6,8 @@ class PrintConsole(Sink): def __init__(self, id, data_source_ref): + super.__init__(data_source_ref) self.id = id - self.data_source_ref = data_source_ref def send(self, event: Event) -> None: print("Sensor " + event.node + ": " + str(event)) diff --git a/distributed_event_factory/simulation/abstract_simulation.py b/distributed_event_factory/simulation/abstract_simulation.py index af39f97..5b28f6b 100644 --- a/distributed_event_factory/simulation/abstract_simulation.py +++ b/distributed_event_factory/simulation/abstract_simulation.py @@ -10,11 +10,12 @@ def send_event(self, event): for sink in self.sinks[event.node]: sink.send(event) else: - print("Skip event. No sink configured") + print(f"Skip event. No sink configured. Event: {event}") def setup_sinks(self, sinks): for sink in sinks: - for data_source in sinks[sink].data_source_ref: - if data_source not in self.sinks: - self.sinks[data_source] = [] - self.sinks[data_source].append(sinks[sink]) \ No newline at end of file + if sinks[sink].data_source_ref: + for data_source in sinks[sink].data_source_ref: + if data_source not in self.sinks: + self.sinks[data_source] = [] + self.sinks[data_source].append(sinks[sink]) \ No newline at end of file diff --git a/distributed_event_factory/simulation/countbased.py b/distributed_event_factory/simulation/countbased.py index c3daf59..79387df 100644 --- a/distributed_event_factory/simulation/countbased.py +++ b/distributed_event_factory/simulation/countbased.py @@ -11,7 +11,7 @@ def __init__(self, simulation_steps: int, case_id_provider: CaseIdProvider): self.simulation_steps = simulation_steps self.sinks = dict() - def run_simulation(self, datasources, sinks): + def run_simulation(self, datasources, sinks, hook=lambda: None): super().setup_sinks(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, @@ -19,4 +19,7 @@ def run_simulation(self, datasources, sinks): ) for i in range(self.simulation_steps): - self.send_event(process_simulator.simulate()) + event = process_simulator.simulate() + print(event) + self.send_event(event) + hook() diff --git a/distributed_event_factory/simulation/loadtest.py b/distributed_event_factory/simulation/loadtest.py index a13eccf..f70a716 100644 --- a/distributed_event_factory/simulation/loadtest.py +++ b/distributed_event_factory/simulation/loadtest.py @@ -33,7 +33,7 @@ def start_simulation(self, sinks): for s in sinks[sink]: s.start() - def run_simulation(self, data_sources: Dict[str, DataSource], sinks: Dict[str, LoadTestHttpSink]): + def run_simulation(self, data_sources: Dict[str, DataSource], sinks: Dict[str, LoadTestHttpSink], hook = lambda: None): self.setup_sinks(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, @@ -46,5 +46,6 @@ def run_simulation(self, data_sources: Dict[str, DataSource], sinks: Dict[str, L self.start_timeframe(self.sinks) for _ in range(int(self.load_provider.get_load_value())): self.send_event(process_simulator.simulate()) + hook() self.end_timeframe(self.sinks) iteration = iteration + 1 diff --git a/distributed_event_factory/simulation/stream_simulation.py b/distributed_event_factory/simulation/stream.py similarity index 94% rename from distributed_event_factory/simulation/stream_simulation.py rename to distributed_event_factory/simulation/stream.py index adfbbe5..06efaee 100644 --- a/distributed_event_factory/simulation/stream_simulation.py +++ b/distributed_event_factory/simulation/stream.py @@ -17,7 +17,7 @@ def __init__( self.load_provider = load_provider self.sinks = dict() - def run_simulation(self, datasources, sinks): + def run_simulation(self, datasources, sinks, hook): self.setup_sinks(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, @@ -29,5 +29,6 @@ def run_simulation(self, datasources, sinks): lambda: self.send_event(process_simulator.simulate()), period=1/self.load_provider.get_load_value() ) + hook() time.sleep(1) scheduler.cancel() diff --git a/pyproject.toml b/pyproject.toml index 780c720..0fb78fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "distributed-event-factory" -version = "0.2.0.dev6" +version = "0.2.0" authors = [ { name="Hendrik Reiter", email="hendrik.reiter@email.uni-kiel.de" }, ] From cdb48b0e782ff3318fca3dbeb30d46064d4f652f Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Fri, 8 Nov 2024 16:30:37 +0100 Subject: [PATCH 043/124] change folder of integration test --- test/integration_test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/integration_test.py b/test/integration_test.py index 1fcca65..0226e53 100644 --- a/test/integration_test.py +++ b/test/integration_test.py @@ -10,9 +10,9 @@ def test_integration(self): event_factory = EventFactory() event_factory.add_sink_parser("test", TestSinkParser()) (event_factory - .add_directory(directory="config/assemblyline/datasource") + .add_directory(directory="config/datasource/assemblyline") .add_file("config/simulation/countbased.yaml") - .add_file("config/sink/loadtest.yaml") + .add_file("config/sink/test-sink.yaml") .run()) sink_mock: TestSink = event_factory.get_sink("test") self.assertEqual(100, len(sink_mock.event_log)) From 2cad016176ec6e8ccca52249960dfd3dd30e4053 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Wed, 11 Dec 2024 10:58:02 +0100 Subject: [PATCH 044/124] build fix --- .gitignore | 4 ++-- .../provider/sink/console/console_sink.py | 2 +- distributed_event_factory/provider/sink/http/http_sink.py | 2 +- distributed_event_factory/simulation/countbased.py | 3 +-- run-load-backend.sh | 2 +- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index d9005f2..2c9a58d 100644 --- a/.gitignore +++ b/.gitignore @@ -89,8 +89,8 @@ ipython_config.py # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not +# However, in case of collaboration, if having benchmark-specific dependencies or dependencies +# having no cross-benchmark support, pipenv may install dependencies that don't work, or not # install all needed dependencies. #Pipfile.lock diff --git a/distributed_event_factory/provider/sink/console/console_sink.py b/distributed_event_factory/provider/sink/console/console_sink.py index bf2d487..d94bb02 100644 --- a/distributed_event_factory/provider/sink/console/console_sink.py +++ b/distributed_event_factory/provider/sink/console/console_sink.py @@ -6,7 +6,7 @@ class PrintConsole(Sink): def __init__(self, id, data_source_ref): - super.__init__(data_source_ref) + super().__init__(data_source_ref) self.id = id def send(self, event: Event) -> None: diff --git a/distributed_event_factory/provider/sink/http/http_sink.py b/distributed_event_factory/provider/sink/http/http_sink.py index 26537ab..2b24a42 100644 --- a/distributed_event_factory/provider/sink/http/http_sink.py +++ b/distributed_event_factory/provider/sink/http/http_sink.py @@ -2,7 +2,7 @@ from process_mining_core.datastructure.core.event import Event -from distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider +from distributed_event_factory.provider.sink.sink_provider import Sink import requests class TimeFrame: diff --git a/distributed_event_factory/simulation/countbased.py b/distributed_event_factory/simulation/countbased.py index 79387df..f5266b7 100644 --- a/distributed_event_factory/simulation/countbased.py +++ b/distributed_event_factory/simulation/countbased.py @@ -12,7 +12,7 @@ def __init__(self, simulation_steps: int, case_id_provider: CaseIdProvider): self.sinks = dict() def run_simulation(self, datasources, sinks, hook=lambda: None): - super().setup_sinks(sinks) + self.setup_sinks(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=datasources @@ -20,6 +20,5 @@ def run_simulation(self, datasources, sinks, hook=lambda: None): for i in range(self.simulation_steps): event = process_simulator.simulate() - print(event) self.send_event(event) hook() diff --git a/run-load-backend.sh b/run-load-backend.sh index ca68af8..65c18f1 100755 --- a/run-load-backend.sh +++ b/run-load-backend.sh @@ -1 +1 @@ -docker run -e BOOTSTRAP_SERVER=$1 -e TOPIC=$2 -p 8080:8080 --network=host hendrikreiter/def-loadtest-backend:0.1.0 \ No newline at end of file +docker run -d -e BOOTSTRAP_SERVER=$1 -e TOPIC=$2 --network=host hendrikreiter/def-loadtest-backend:0.1.0 \ No newline at end of file From 7f8496af09f3ded39b63c3aac628070c36763b83 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Thu, 12 Dec 2024 16:28:08 +0100 Subject: [PATCH 045/124] build fix --- distributed_event_factory/event_factory_main.py | 2 -- .../drifting_probability_event_selection_provider.py | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/distributed_event_factory/event_factory_main.py b/distributed_event_factory/event_factory_main.py index 65b474b..21f501a 100644 --- a/distributed_event_factory/event_factory_main.py +++ b/distributed_event_factory/event_factory_main.py @@ -1,6 +1,5 @@ import os import sys -from time import sleep from dotenv import load_dotenv from distributed_event_factory.event_factory import EventFactory @@ -27,4 +26,3 @@ .add_file(f"{content_root}/config/simulation/{simulation}.yaml") .add_file(f"{content_root}/config/sink/{sink}.yaml") ).run() - sleep(10) diff --git a/distributed_event_factory/provider/eventselection/drifting_probability_event_selection_provider.py b/distributed_event_factory/provider/eventselection/drifting_probability_event_selection_provider.py index 4b17ae6..1ab9dce 100644 --- a/distributed_event_factory/provider/eventselection/drifting_probability_event_selection_provider.py +++ b/distributed_event_factory/provider/eventselection/drifting_probability_event_selection_provider.py @@ -24,7 +24,7 @@ def get_event_data(self): if r < 1: current_probability_distribution = [] for i in range(len(self.starting_probability_distribution)): - current_probability_distribution.append(r * self.starting_probability_distribution[i] + (1-r) * self.end_probability_distribution[i]) + current_probability_distribution.append((1-r) * self.starting_probability_distribution[i] + r * self.end_probability_distribution[i]) else: current_probability_distribution = self.end_probability_distribution From 3c85e8474ccdc1ab9ba25842e7d6a9dd9e09fd35 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Thu, 12 Dec 2024 16:34:01 +0100 Subject: [PATCH 046/124] build fix --- .github/workflows/docker-image.yml | 4 ++-- config/datasource/concept-drift/cd-0.yaml | 11 +++++++++++ config/datasource/concept-drift/cd-a.yaml | 16 ++++++++++++++++ config/datasource/concept-drift/cd-b.yaml | 11 +++++++++++ config/datasource/concept-drift/cd-c.yaml | 11 +++++++++++ config/datasource/concept-drift/cd-d.yaml | 11 +++++++++++ config/datasource/concept-drift/cd-e.yaml | 11 +++++++++++ config/sink/console-sink.yaml | 7 ++++++- pyproject.toml | 2 +- 9 files changed, 80 insertions(+), 4 deletions(-) create mode 100644 config/datasource/concept-drift/cd-0.yaml create mode 100644 config/datasource/concept-drift/cd-a.yaml create mode 100644 config/datasource/concept-drift/cd-b.yaml create mode 100644 config/datasource/concept-drift/cd-c.yaml create mode 100644 config/datasource/concept-drift/cd-d.yaml create mode 100644 config/datasource/concept-drift/cd-e.yaml diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index ae774bb..8f4888b 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -15,6 +15,6 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Build image - run: docker build . --file Dockerfile --tag hendrikreiter/distributed_event_factory:0.2.0 + run: docker build . --file Dockerfile --tag hendrikreiter/distributed_event_factory:0.2.1 - name: Push image - run: docker push hendrikreiter/distributed_event_factory:0.2.0 \ No newline at end of file + run: docker push hendrikreiter/distributed_event_factory:0.2.1 \ No newline at end of file diff --git a/config/datasource/concept-drift/cd-0.yaml b/config/datasource/concept-drift/cd-0.yaml new file mode 100644 index 0000000..688b4fb --- /dev/null +++ b/config/datasource/concept-drift/cd-0.yaml @@ -0,0 +1,11 @@ +kind: datasource +name: "" +spec: + name: "" + group: "concept-drift" + selection: genericProbability + distribution: [1.0] + eventData: + - activity: "" + transition: "A" + duration: 0 \ No newline at end of file diff --git a/config/datasource/concept-drift/cd-a.yaml b/config/datasource/concept-drift/cd-a.yaml new file mode 100644 index 0000000..87d0190 --- /dev/null +++ b/config/datasource/concept-drift/cd-a.yaml @@ -0,0 +1,16 @@ +kind: datasource +name: "A" +spec: + name: "A" + group: "concept-drift" + selection: driftingProbability + startDistribution: [ 0.0, 1.0 ] + endDistribution: [ 1.0, 0.0 ] + steps: 30 + eventData: + - activity: "A" + transition: "B" + duration: 1 + - activity: "A" + transition: "C" + duration: 1 \ No newline at end of file diff --git a/config/datasource/concept-drift/cd-b.yaml b/config/datasource/concept-drift/cd-b.yaml new file mode 100644 index 0000000..fe28d01 --- /dev/null +++ b/config/datasource/concept-drift/cd-b.yaml @@ -0,0 +1,11 @@ +kind: datasource +name: "B" +spec: + name: "B" + group: "concept-drift" + selection: genericProbability + distribution: [1.0] + eventData: + - activity: "B" + transition: "D" + duration: 1 \ No newline at end of file diff --git a/config/datasource/concept-drift/cd-c.yaml b/config/datasource/concept-drift/cd-c.yaml new file mode 100644 index 0000000..9951c10 --- /dev/null +++ b/config/datasource/concept-drift/cd-c.yaml @@ -0,0 +1,11 @@ +kind: datasource +name: "C" +spec: + name: "C" + group: "concept-drift" + selection: genericProbability + distribution: [1.0] + eventData: + - activity: "C" + transition: "E" + duration: 1 \ No newline at end of file diff --git a/config/datasource/concept-drift/cd-d.yaml b/config/datasource/concept-drift/cd-d.yaml new file mode 100644 index 0000000..e870917 --- /dev/null +++ b/config/datasource/concept-drift/cd-d.yaml @@ -0,0 +1,11 @@ +kind: datasource +name: "D" +spec: + name: "D" + group: "concept-drift" + selection: genericProbability + distribution: [1.0] + eventData: + - activity: "D" + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/concept-drift/cd-e.yaml b/config/datasource/concept-drift/cd-e.yaml new file mode 100644 index 0000000..2ff77a8 --- /dev/null +++ b/config/datasource/concept-drift/cd-e.yaml @@ -0,0 +1,11 @@ +kind: datasource +name: "E" +spec: + name: "E" + group: "concept-drift" + selection: genericProbability + distribution: [1.0] + eventData: + - activity: "E" + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/sink/console-sink.yaml b/config/sink/console-sink.yaml index 0c63c22..314d4c4 100644 --- a/config/sink/console-sink.yaml +++ b/config/sink/console-sink.yaml @@ -10,4 +10,9 @@ spec: - "Assembling" - "QualityControl" - "Packaging" - - "Shipping" \ No newline at end of file + - "Shipping" + - "A" + - "B" + - "C" + - "D" + - "E" \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 0fb78fb..240f626 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "distributed-event-factory" -version = "0.2.0" +version = "0.2.1" authors = [ { name="Hendrik Reiter", email="hendrik.reiter@email.uni-kiel.de" }, ] From 97efb378165541332417815aa0c3cf9624b27076 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Thu, 12 Dec 2024 17:02:36 +0100 Subject: [PATCH 047/124] debugging --- .../event_factory_main.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/distributed_event_factory/event_factory_main.py b/distributed_event_factory/event_factory_main.py index 21f501a..7b46624 100644 --- a/distributed_event_factory/event_factory_main.py +++ b/distributed_event_factory/event_factory_main.py @@ -4,23 +4,33 @@ from dotenv import load_dotenv from distributed_event_factory.event_factory import EventFactory -if __name__ == '__main__': - event_factory = EventFactory() +def print_dir(directory): + print("-"*20) + for filename in os.listdir(directory): + print(filename) - if "local" in sys.argv: - load_dotenv() +if __name__ == '__main__': datasource = os.environ["DATASOURCE"] sink = os.environ["SINK"] simulation = os.environ["SIMULATION"] content_root = os.environ["ROOT"] + print_dir(f"{content_root}/config/datasource/{datasource}") + event_factory = EventFactory() + + if "local" in sys.argv: + load_dotenv() + + print_dir(f"{content_root}/config/datasource/{datasource}") + print("Running with config:") print(f"datasource directory: {datasource}") print(f"Sink: {sink}") print(f"Simulation: {simulation}") print(f"Content root: {content_root}") + (event_factory .add_directory(f"{content_root}/config/datasource/{datasource}") .add_file(f"{content_root}/config/simulation/{simulation}.yaml") From 19cca181aed34896681e7234fd5ee2e0609eeacc Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Thu, 12 Dec 2024 17:39:49 +0100 Subject: [PATCH 048/124] debugging --- distributed_event_factory/event_factory.py | 3 ++- distributed_event_factory/event_factory_main.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/distributed_event_factory/event_factory.py b/distributed_event_factory/event_factory.py index a234f38..e232f1a 100644 --- a/distributed_event_factory/event_factory.py +++ b/distributed_event_factory/event_factory.py @@ -51,7 +51,8 @@ def get_sink(self, sink_key): def add_directory(self, directory): for filename in os.listdir(directory): - self.add_file(directory + "/" + filename) + if not filename.startswith(".."): + self.add_file(directory + "/" + filename) return self def add_sink(self, name, sink: Sink): diff --git a/distributed_event_factory/event_factory_main.py b/distributed_event_factory/event_factory_main.py index 7b46624..72cee61 100644 --- a/distributed_event_factory/event_factory_main.py +++ b/distributed_event_factory/event_factory_main.py @@ -33,6 +33,6 @@ def print_dir(directory): (event_factory .add_directory(f"{content_root}/config/datasource/{datasource}") - .add_file(f"{content_root}/config/simulation/{simulation}.yaml") - .add_file(f"{content_root}/config/sink/{sink}.yaml") + .add_file(f"{content_root}/config/simulation/{simulation}") + .add_file(f"{content_root}/config/sink/{sink}") ).run() From 9c988acbbfe5a3b75ba0901c7e55a484e50ab06b Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Fri, 13 Dec 2024 08:47:36 +0100 Subject: [PATCH 049/124] refactor the paths of the docker container --- Dockerfile | 2 +- distributed_event_factory/event_factory_main.py | 10 ---------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index b82fc2a..c30e641 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,5 +22,5 @@ RUN --mount=type=cache,target=/root/.cache/pip \ python -m pip install -r requirements.txt USER appuser -COPY . . +COPY distributed_event_factory distributed_event_factory CMD python3 distributed_event_factory/event_factory_main.py \ No newline at end of file diff --git a/distributed_event_factory/event_factory_main.py b/distributed_event_factory/event_factory_main.py index 72cee61..328964c 100644 --- a/distributed_event_factory/event_factory_main.py +++ b/distributed_event_factory/event_factory_main.py @@ -4,33 +4,23 @@ from dotenv import load_dotenv from distributed_event_factory.event_factory import EventFactory -def print_dir(directory): - print("-"*20) - for filename in os.listdir(directory): - print(filename) - - if __name__ == '__main__': datasource = os.environ["DATASOURCE"] sink = os.environ["SINK"] simulation = os.environ["SIMULATION"] content_root = os.environ["ROOT"] - print_dir(f"{content_root}/config/datasource/{datasource}") event_factory = EventFactory() if "local" in sys.argv: load_dotenv() - print_dir(f"{content_root}/config/datasource/{datasource}") - print("Running with config:") print(f"datasource directory: {datasource}") print(f"Sink: {sink}") print(f"Simulation: {simulation}") print(f"Content root: {content_root}") - (event_factory .add_directory(f"{content_root}/config/datasource/{datasource}") .add_file(f"{content_root}/config/simulation/{simulation}") From 1fee62ccf635a96d0db95b7956d62f819bab79b6 Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Fri, 13 Dec 2024 09:29:54 +0100 Subject: [PATCH 050/124] distributions are enforced to be floats --- distributed_event_factory/event_factory_main.py | 4 ++-- .../parser/datasource/event/distribution_parser.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/distributed_event_factory/event_factory_main.py b/distributed_event_factory/event_factory_main.py index 328964c..9b98d25 100644 --- a/distributed_event_factory/event_factory_main.py +++ b/distributed_event_factory/event_factory_main.py @@ -5,6 +5,8 @@ from distributed_event_factory.event_factory import EventFactory if __name__ == '__main__': + if "local" in sys.argv: + load_dotenv() datasource = os.environ["DATASOURCE"] sink = os.environ["SINK"] simulation = os.environ["SIMULATION"] @@ -12,8 +14,6 @@ event_factory = EventFactory() - if "local" in sys.argv: - load_dotenv() print("Running with config:") print(f"datasource directory: {datasource}") diff --git a/distributed_event_factory/parser/datasource/event/distribution_parser.py b/distributed_event_factory/parser/datasource/event/distribution_parser.py index 165696e..4ad3e9c 100644 --- a/distributed_event_factory/parser/datasource/event/distribution_parser.py +++ b/distributed_event_factory/parser/datasource/event/distribution_parser.py @@ -10,4 +10,4 @@ def add_dependency(self, key: str, dependency): pass def parse(self, config): - return config \ No newline at end of file + return [float(element) for element in config] \ No newline at end of file From 5634d1bcda8014334388f80d1daf48dec8a38fef Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Wed, 18 Dec 2024 10:40:23 +0100 Subject: [PATCH 051/124] Build concurrent case executions --- config/simulation/countbased.yaml | 3 +- config/simulation/loadtest.yaml | 1 + config/simulation/stream.yaml | 1 + .../parser/base/__init__.py | 0 .../parser/base/constant_count_parser.py | 11 +++ .../parser/parser_registry.py | 17 ++++- .../variant/countbased_simulation_parser.py | 5 +- .../variant/loadtest_simulation_parser.py | 3 +- .../variant/stream_simulation_parser.py | 3 +- .../provider/data/constant_count_provider.py | 10 +++ .../provider/data/count_provider.py | 8 +++ .../provider/sink/console/console_sink.py | 1 + .../simulation/countbased.py | 7 +- .../simulation/loadtest.py | 12 +++- .../simulation/process_simulation.py | 67 +++++++++++-------- .../simulation/stream.py | 6 +- 16 files changed, 114 insertions(+), 41 deletions(-) create mode 100644 distributed_event_factory/parser/base/__init__.py create mode 100644 distributed_event_factory/parser/base/constant_count_parser.py create mode 100644 distributed_event_factory/provider/data/constant_count_provider.py create mode 100644 distributed_event_factory/provider/data/count_provider.py diff --git a/config/simulation/countbased.yaml b/config/simulation/countbased.yaml index d22e8b5..c0accdd 100644 --- a/config/simulation/countbased.yaml +++ b/config/simulation/countbased.yaml @@ -3,4 +3,5 @@ name: countBasedSimulation spec: type: countBased steps: 100 - caseId: increasing \ No newline at end of file + caseId: increasing + maxConcurrentCases: 5 \ No newline at end of file diff --git a/config/simulation/loadtest.yaml b/config/simulation/loadtest.yaml index 82d8fe2..2f0d2aa 100644 --- a/config/simulation/loadtest.yaml +++ b/config/simulation/loadtest.yaml @@ -6,6 +6,7 @@ spec: caseId: increasing genTimeframesTilStart: 10 timeframe: 1000 + maxConcurrentCases: 5 load: loadBehavior: constant load: 1000 \ No newline at end of file diff --git a/config/simulation/stream.yaml b/config/simulation/stream.yaml index 66b33de..854b44d 100644 --- a/config/simulation/stream.yaml +++ b/config/simulation/stream.yaml @@ -3,6 +3,7 @@ name: streamSimulation spec: type: stream caseId: increasing + maxConcurrentCases: 5 load: loadBehavior: constant load: 10 \ No newline at end of file diff --git a/distributed_event_factory/parser/base/__init__.py b/distributed_event_factory/parser/base/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/distributed_event_factory/parser/base/constant_count_parser.py b/distributed_event_factory/parser/base/constant_count_parser.py new file mode 100644 index 0000000..1e7b5b2 --- /dev/null +++ b/distributed_event_factory/parser/base/constant_count_parser.py @@ -0,0 +1,11 @@ +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.data.constant_count_provider import ConstantCountProvider + + +class ConstantCountParser(Parser): + + def parse(self, config): + return ConstantCountProvider(config) + + def add_dependency(self, key: str, dependency): + pass \ No newline at end of file diff --git a/distributed_event_factory/parser/parser_registry.py b/distributed_event_factory/parser/parser_registry.py index 4ebded0..6b4c13e 100644 --- a/distributed_event_factory/parser/parser_registry.py +++ b/distributed_event_factory/parser/parser_registry.py @@ -1,3 +1,4 @@ +from distributed_event_factory.parser.base.constant_count_parser import ConstantCountParser from distributed_event_factory.parser.datasource.event.activity.activity_parser import ActivityParser from distributed_event_factory.parser.datasource.event.duration.constant_duration_parser import \ ConstantDurationParser @@ -37,12 +38,16 @@ from distributed_event_factory.parser.sink.print_console_sink_parser import PrintConsoleSinkParser from distributed_event_factory.parser.sink.sink_parser import SinkParser from distributed_event_factory.parser.sink.ui_sink_parser import UiSinkParser +from distributed_event_factory.provider.data.constant_count_provider import ConstantCountProvider from distributed_event_factory.provider.data.increasing_case import IncreasingCaseIdProvider class ParserRegistry: def __init__(self): + # Count + self.constant_count_parser = ConstantCountParser() + # Partitioning self.constant_partition_parser = ConstantPartitionParser() self.case_partition_parser = CasePartitionParser() @@ -125,15 +130,21 @@ def __init__(self): # Simulation self.count_based_simulation: CountBasedSimulationParser = (CountBasedSimulationParser() - .add_dependency("caseId", self.case_id_parser)) + .add_dependency("caseId", self.case_id_parser) + .add_dependency("maxConcurrentCases", + self.constant_count_parser)) self.load_test_simulation: LoadTestSimulationParser = (LoadTestSimulationParser() .add_dependency("load", self.load_parser) - .add_dependency("caseId", self.case_id_parser)) + .add_dependency("caseId", self.case_id_parser) + .add_dependency("maxConcurrentCases", + self.constant_count_parser)) self.stream_simulation: StreamSimulationParser = (StreamSimulationParser() .add_dependency("load", self.load_parser) - .add_dependency("caseId", self.case_id_parser)) + .add_dependency("caseId", self.case_id_parser) + .add_dependency("maxConcurrentCases", + self.constant_count_parser)) self.simulation_parser: SimulationParser = (SimulationParser() .add_dependency("stream", self.stream_simulation) diff --git a/distributed_event_factory/parser/simulation/variant/countbased_simulation_parser.py b/distributed_event_factory/parser/simulation/variant/countbased_simulation_parser.py index d42f55e..cfc0490 100644 --- a/distributed_event_factory/parser/simulation/variant/countbased_simulation_parser.py +++ b/distributed_event_factory/parser/simulation/variant/countbased_simulation_parser.py @@ -13,5 +13,6 @@ def add_dependency(self, key: str, dependency): def parse(self, config): return CountBasedSimulation( simulation_steps=config["steps"], - case_id_provider=self.dependencies["caseId"].parse(config["caseId"]) - ) \ No newline at end of file + case_id_provider=self.dependencies["caseId"].parse(config["caseId"]), + max_concurrent_cases=self.dependencies["maxConcurrentCases"].parse(config["maxConcurrentCases"]) + ) diff --git a/distributed_event_factory/parser/simulation/variant/loadtest_simulation_parser.py b/distributed_event_factory/parser/simulation/variant/loadtest_simulation_parser.py index bd5881e..f72e17f 100644 --- a/distributed_event_factory/parser/simulation/variant/loadtest_simulation_parser.py +++ b/distributed_event_factory/parser/simulation/variant/loadtest_simulation_parser.py @@ -14,5 +14,6 @@ def parse(self, config): return LoadTestSimulation( case_id_provider=self.dependencies["caseId"].parse(config["caseId"]), load_provider=self.dependencies["load"].parse(config["load"]), - generated_timeframes_until_start=config["genTimeframesTilStart"] + generated_timeframes_until_start=config["genTimeframesTilStart"], + max_concurrent_cases=self.dependencies["maxConcurrentCases"].parse(config["maxConcurrentCases"]) ) \ No newline at end of file diff --git a/distributed_event_factory/parser/simulation/variant/stream_simulation_parser.py b/distributed_event_factory/parser/simulation/variant/stream_simulation_parser.py index 5caca22..a2aedaa 100644 --- a/distributed_event_factory/parser/simulation/variant/stream_simulation_parser.py +++ b/distributed_event_factory/parser/simulation/variant/stream_simulation_parser.py @@ -13,5 +13,6 @@ def add_dependency(self, key: str, dependency): def parse(self, config): return StreamSimulation( case_id_provider=self.dependencies["caseId"].parse(config["caseId"]), - load_provider=self.dependencies["load"].parse(config["load"]) + load_provider=self.dependencies["load"].parse(config["load"]), + max_concurrent_cases=self.dependencies["maxConcurrentCases"].parse(config["maxConcurrentCases"]) ) \ No newline at end of file diff --git a/distributed_event_factory/provider/data/constant_count_provider.py b/distributed_event_factory/provider/data/constant_count_provider.py new file mode 100644 index 0000000..f804145 --- /dev/null +++ b/distributed_event_factory/provider/data/constant_count_provider.py @@ -0,0 +1,10 @@ +from distributed_event_factory.provider.data.count_provider import CountProvider + + +class ConstantCountProvider(CountProvider): + + def __init__(self, count): + self.count=count + + def get(self) -> int: + return self.count \ No newline at end of file diff --git a/distributed_event_factory/provider/data/count_provider.py b/distributed_event_factory/provider/data/count_provider.py new file mode 100644 index 0000000..1d7dbdb --- /dev/null +++ b/distributed_event_factory/provider/data/count_provider.py @@ -0,0 +1,8 @@ +from abc import abstractmethod + + +class CountProvider: + + @abstractmethod + def get(self) -> int: + pass \ No newline at end of file diff --git a/distributed_event_factory/provider/sink/console/console_sink.py b/distributed_event_factory/provider/sink/console/console_sink.py index d94bb02..eba87b2 100644 --- a/distributed_event_factory/provider/sink/console/console_sink.py +++ b/distributed_event_factory/provider/sink/console/console_sink.py @@ -10,6 +10,7 @@ def __init__(self, id, data_source_ref): self.id = id def send(self, event: Event) -> None: + #print(event.timestamp) print("Sensor " + event.node + ": " + str(event)) def start_timeframe(self): diff --git a/distributed_event_factory/simulation/countbased.py b/distributed_event_factory/simulation/countbased.py index f5266b7..5a99110 100644 --- a/distributed_event_factory/simulation/countbased.py +++ b/distributed_event_factory/simulation/countbased.py @@ -1,21 +1,24 @@ from distributed_event_factory.provider.data.case_provider import CaseIdProvider +from distributed_event_factory.provider.data.count_provider import CountProvider from distributed_event_factory.simulation.abstract_simulation import Simulation from distributed_event_factory.simulation.process_simulation import ProcessSimulator class CountBasedSimulation(Simulation): - def __init__(self, simulation_steps: int, case_id_provider: CaseIdProvider): + def __init__(self, simulation_steps: int, case_id_provider: CaseIdProvider, max_concurrent_cases: CountProvider): super().__init__() self.case_id_provider = case_id_provider self.simulation_steps = simulation_steps self.sinks = dict() + self.max_concurrent_cases = max_concurrent_cases def run_simulation(self, datasources, sinks, hook=lambda: None): self.setup_sinks(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, - data_sources=datasources + data_sources=datasources, + max_concurrent_cases=self.max_concurrent_cases ) for i in range(self.simulation_steps): diff --git a/distributed_event_factory/simulation/loadtest.py b/distributed_event_factory/simulation/loadtest.py index f70a716..2dc2d9e 100644 --- a/distributed_event_factory/simulation/loadtest.py +++ b/distributed_event_factory/simulation/loadtest.py @@ -1,22 +1,26 @@ from typing import Dict from distributed_event_factory.core.datasource import DataSource from distributed_event_factory.provider.data.case_provider import CaseIdProvider +from distributed_event_factory.provider.data.count_provider import CountProvider from distributed_event_factory.provider.load.load_provider import LoadProvider from distributed_event_factory.provider.sink.http.http_sink import LoadTestHttpSink from distributed_event_factory.simulation.abstract_simulation import Simulation from distributed_event_factory.simulation.process_simulation import ProcessSimulator + class LoadTestSimulation(Simulation): def __init__( self, load_provider: LoadProvider, case_id_provider: CaseIdProvider, - generated_timeframes_until_start: int + generated_timeframes_until_start: int, + max_concurrent_cases: CountProvider ): super().__init__() self.case_id_provider = case_id_provider self.load_provider = load_provider self.generated_timeframes_until_start = generated_timeframes_until_start + self.max_concurrent_cases = max_concurrent_cases def start_timeframe(self, sinks): for sink in sinks: @@ -33,11 +37,13 @@ def start_simulation(self, sinks): for s in sinks[sink]: s.start() - def run_simulation(self, data_sources: Dict[str, DataSource], sinks: Dict[str, LoadTestHttpSink], hook = lambda: None): + def run_simulation(self, data_sources: Dict[str, DataSource], sinks: Dict[str, LoadTestHttpSink], + hook=lambda: None): self.setup_sinks(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, - data_sources=data_sources + data_sources=data_sources, + max_concurrent_cases=self.max_concurrent_cases ) iteration = 0 while True: diff --git a/distributed_event_factory/simulation/process_simulation.py b/distributed_event_factory/simulation/process_simulation.py index 8bee2af..9e7e600 100644 --- a/distributed_event_factory/simulation/process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -1,8 +1,9 @@ -import random import string from datetime import datetime, timedelta -from typing import List, Dict +from queue import PriorityQueue +from typing import Dict +from distributed_event_factory.provider.data.count_provider import CountProvider from process_mining_core.datastructure.core.event import Event from distributed_event_factory.core.datasource import DataSource @@ -13,39 +14,46 @@ class ProcessSimulator: def __init__( self, data_sources: Dict[str, DataSource], - case_id_provider: CaseIdProvider): + case_id_provider: CaseIdProvider, + max_concurrent_cases: CountProvider + ): - self.tokens: List[Token] = [] + self.max_concurrent_cases = max_concurrent_cases + self.tokens: PriorityQueue[Token] = PriorityQueue(self.max_concurrent_cases.get()) self.datasources: Dict[str, DataSource] = data_sources self.case_id_provider = case_id_provider self.last_timestamp = datetime.now() def simulate(self) -> Event: - if not self.tokens: - token = self.start_new_case() - else: - token = self.tokens[int(random.uniform(0, len(self.tokens)))] - - if token.data_source_id == END_DATA_SOURCE_ID: - self.tokens.remove(token) - token = self.start_new_case() - - if token.data_source_id == START_SENSOR_ID: - token.data_source_id = DataSourceId(self._get_sensor_with_id(START_SENSOR_ID).get_event_data().get_transition()) - - current_data_source = self._get_sensor_with_id(token.data_source_id) - event = current_data_source.get_event_data() - next_datasource = event.get_transition() - activity = event.get_activity() - token.add_to_last_timestamp(event.get_duration()) - token.set_data_source_id(self.datasources[next_datasource].get_id()) - self.last_timestamp = token.last_timestamp - return self._build_event(token.case, activity, self.last_timestamp, current_data_source) + emit_event = None + while not emit_event: + if len(self.tokens.queue) < self.max_concurrent_cases.get(): + token = self.start_new_case() + else: + token = self.tokens.get() + + emit_event = token.event + if token.data_source_id == END_DATA_SOURCE_ID: + token = self.start_new_case() + + if token.data_source_id == START_SENSOR_ID: + token.data_source_id = DataSourceId(self._get_sensor_with_id(START_SENSOR_ID).get_event_data().get_transition()) + + current_data_source = self._get_sensor_with_id(token.data_source_id) + event = current_data_source.get_event_data() + next_datasource = event.get_transition() + activity = event.get_activity() + token.add_to_last_timestamp(event.get_duration()) + token.set_data_source_id(self.datasources[next_datasource].get_id()) + self.last_timestamp = token.last_timestamp + token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source) + self.tokens.put(token) + + return emit_event def start_new_case(self): case_id = self.case_id_provider.get() - token = Token(case_id, START_SENSOR_ID, self.last_timestamp) - self.tokens.append(token) + token = Token(case_id, START_SENSOR_ID, self.last_timestamp, None) return token def _build_event(self, case, activity, timestamp, datasource): @@ -70,14 +78,19 @@ def __init__( self, case: string, data_source_id: DataSourceId, - last_timestamp: datetime + last_timestamp: datetime, + event: Event ): self.case = case self.data_source_id = data_source_id self.last_timestamp = last_timestamp + self.event = event def set_data_source_id(self, data_source_id): self.data_source_id = data_source_id def add_to_last_timestamp(self, duration): self.last_timestamp += timedelta(minutes=duration) + + def __lt__(self, other): + return self.last_timestamp < other.last_timestamp \ No newline at end of file diff --git a/distributed_event_factory/simulation/stream.py b/distributed_event_factory/simulation/stream.py index 06efaee..7ecb7bd 100644 --- a/distributed_event_factory/simulation/stream.py +++ b/distributed_event_factory/simulation/stream.py @@ -2,6 +2,7 @@ from scheduled_futures import ScheduledThreadPoolExecutor from distributed_event_factory.provider.data.case_provider import CaseIdProvider +from distributed_event_factory.provider.data.count_provider import CountProvider from distributed_event_factory.provider.load.load_provider import LoadProvider from distributed_event_factory.simulation.abstract_simulation import Simulation from distributed_event_factory.simulation.process_simulation import ProcessSimulator @@ -11,17 +12,20 @@ def __init__( self, load_provider: LoadProvider, case_id_provider: CaseIdProvider, + max_concurrent_cases: CountProvider ): super().__init__() self.case_id_provider = case_id_provider self.load_provider = load_provider + self.max_concurrent_cases=max_concurrent_cases self.sinks = dict() def run_simulation(self, datasources, sinks, hook): self.setup_sinks(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, - data_sources=datasources + data_sources=datasources, + max_concurrent_cases=self.max_concurrent_cases ) while True: with ScheduledThreadPoolExecutor() as executor: From 7e1cf6497bec55b080b1074c3e4c1c8b80b0718d Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Tue, 14 Jan 2025 10:42:40 +0100 Subject: [PATCH 052/124] Fix Bug that load test producer sent the messages n times --- config/simulation/loadtest.yaml | 2 +- .../event_factory_main.py | 2 -- .../simulation/abstract_simulation.py | 14 ++++----- .../simulation/countbased.py | 2 +- .../simulation/loadtest.py | 29 ++++++++++--------- .../simulation/stream.py | 2 +- 6 files changed, 25 insertions(+), 26 deletions(-) diff --git a/config/simulation/loadtest.yaml b/config/simulation/loadtest.yaml index 2f0d2aa..8cb2cee 100644 --- a/config/simulation/loadtest.yaml +++ b/config/simulation/loadtest.yaml @@ -9,4 +9,4 @@ spec: maxConcurrentCases: 5 load: loadBehavior: constant - load: 1000 \ No newline at end of file + load: 10 \ No newline at end of file diff --git a/distributed_event_factory/event_factory_main.py b/distributed_event_factory/event_factory_main.py index 9b98d25..616e1ff 100644 --- a/distributed_event_factory/event_factory_main.py +++ b/distributed_event_factory/event_factory_main.py @@ -11,10 +11,8 @@ sink = os.environ["SINK"] simulation = os.environ["SIMULATION"] content_root = os.environ["ROOT"] - event_factory = EventFactory() - print("Running with config:") print(f"datasource directory: {datasource}") print(f"Sink: {sink}") diff --git a/distributed_event_factory/simulation/abstract_simulation.py b/distributed_event_factory/simulation/abstract_simulation.py index 5b28f6b..bcb3ff7 100644 --- a/distributed_event_factory/simulation/abstract_simulation.py +++ b/distributed_event_factory/simulation/abstract_simulation.py @@ -3,19 +3,19 @@ class Simulation(ABC): def __init__(self): - self.sinks = dict() + self.datasource_sink_mapping = dict() def send_event(self, event): - if event.node in self.sinks: - for sink in self.sinks[event.node]: + if event.node in self.datasource_sink_mapping: + for sink in self.datasource_sink_mapping[event.node]: sink.send(event) else: print(f"Skip event. No sink configured. Event: {event}") - def setup_sinks(self, sinks): + def setup_datasource_sink_mapping(self, sinks): for sink in sinks: if sinks[sink].data_source_ref: for data_source in sinks[sink].data_source_ref: - if data_source not in self.sinks: - self.sinks[data_source] = [] - self.sinks[data_source].append(sinks[sink]) \ No newline at end of file + if data_source not in self.datasource_sink_mapping: + self.datasource_sink_mapping[data_source] = [] + self.datasource_sink_mapping[data_source].append(sinks[sink]) \ No newline at end of file diff --git a/distributed_event_factory/simulation/countbased.py b/distributed_event_factory/simulation/countbased.py index 5a99110..3880cff 100644 --- a/distributed_event_factory/simulation/countbased.py +++ b/distributed_event_factory/simulation/countbased.py @@ -14,7 +14,7 @@ def __init__(self, simulation_steps: int, case_id_provider: CaseIdProvider, max_ self.max_concurrent_cases = max_concurrent_cases def run_simulation(self, datasources, sinks, hook=lambda: None): - self.setup_sinks(sinks) + self.setup_datasource_sink_mapping(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=datasources, diff --git a/distributed_event_factory/simulation/loadtest.py b/distributed_event_factory/simulation/loadtest.py index 2dc2d9e..0609eea 100644 --- a/distributed_event_factory/simulation/loadtest.py +++ b/distributed_event_factory/simulation/loadtest.py @@ -21,25 +21,26 @@ def __init__( self.load_provider = load_provider self.generated_timeframes_until_start = generated_timeframes_until_start self.max_concurrent_cases = max_concurrent_cases + self.sink = [] def start_timeframe(self, sinks): - for sink in sinks: - for s in sinks[sink]: - s.start_timeframe() + for sink in self.sink: + sink.start_timeframe() def end_timeframe(self, sinks): - for sink in sinks: - for s in sinks[sink]: - s.end_timeframe() + for sink in self.sink: + sink.end_timeframe() def start_simulation(self, sinks): - for sink in sinks: - for s in sinks[sink]: - s.start() + for sink in self.sink: + sink.start() - def run_simulation(self, data_sources: Dict[str, DataSource], sinks: Dict[str, LoadTestHttpSink], + def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_mapping: Dict[str, LoadTestHttpSink], hook=lambda: None): - self.setup_sinks(sinks) + self.setup_datasource_sink_mapping(datasource_sink_mapping) + for sink in datasource_sink_mapping: + self.sink.append(datasource_sink_mapping[sink]) + process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=data_sources, @@ -48,10 +49,10 @@ def run_simulation(self, data_sources: Dict[str, DataSource], sinks: Dict[str, L iteration = 0 while True: if iteration == self.generated_timeframes_until_start: - self.start_simulation(self.sinks) - self.start_timeframe(self.sinks) + self.start_simulation(self.datasource_sink_mapping) + self.start_timeframe(self.datasource_sink_mapping) for _ in range(int(self.load_provider.get_load_value())): self.send_event(process_simulator.simulate()) hook() - self.end_timeframe(self.sinks) + self.end_timeframe(self.datasource_sink_mapping) iteration = iteration + 1 diff --git a/distributed_event_factory/simulation/stream.py b/distributed_event_factory/simulation/stream.py index 7ecb7bd..f4cddcb 100644 --- a/distributed_event_factory/simulation/stream.py +++ b/distributed_event_factory/simulation/stream.py @@ -21,7 +21,7 @@ def __init__( self.sinks = dict() def run_simulation(self, datasources, sinks, hook): - self.setup_sinks(sinks) + self.setup_datasource_sink_mapping(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=datasources, From c5bb86f9da2d1c11452c097de9219843bfd0e26e Mon Sep 17 00:00:00 2001 From: Hendrik Reiter Date: Tue, 14 Jan 2025 11:12:35 +0100 Subject: [PATCH 053/124] Change version to 0.2.2 --- .github/workflows/docker-image.yml | 4 ++-- pyproject.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 8f4888b..63bf5a9 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -15,6 +15,6 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Build image - run: docker build . --file Dockerfile --tag hendrikreiter/distributed_event_factory:0.2.1 + run: docker build . --file Dockerfile --tag hendrikreiter/distributed_event_factory:0.2.2 - name: Push image - run: docker push hendrikreiter/distributed_event_factory:0.2.1 \ No newline at end of file + run: docker push hendrikreiter/distributed_event_factory:0.2.2 \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 240f626..7f3d194 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "distributed-event-factory" -version = "0.2.1" +version = "0.2.2" authors = [ { name="Hendrik Reiter", email="hendrik.reiter@email.uni-kiel.de" }, ] From ab6f6ac48b018636cc816da206257bb1bac68ea4 Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 16 May 2025 09:41:14 +0200 Subject: [PATCH 054/124] corrected spelling in ReadMe --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b31c1bf..c8cee84 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ from which datasource the events are emitted. A datasource can be also linked to ### Simulation A `simulation` runs the process through our datasources and emits their events via the sinks. The `type` `stream` creates a datastream. The `caseId` defines how the case-ids are generated. -In the `incresing` mode the caseId is an incrementally increased number. The load defines at which speed the simulation is run. +In the `increasing` mode the caseId is an incrementally increased number. The load defines at which speed the simulation is run. In this case constantly 10 events per second are emitted. ```yaml From ad6d75cedac8d57e20e95b4124f42f08db057c06 Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 16 May 2025 11:25:55 +0200 Subject: [PATCH 055/124] first prototypes with events and objects --- config/datasource/smartFactoryEasier/bar.yaml | 5 +++ .../smartFactoryEasier/barResource.yaml | 7 ++++ .../smartFactoryEasier/e0-order.yaml | 16 ++++++++ .../smartFactoryEasier/e1-outgoing-stock.yaml | 27 +++++++++++++ .../smartFactoryEasier/e2-sawing-bar.yaml | 20 ++++++++++ .../smartFactoryEasier/e3-drilling-bar.yaml | 20 ++++++++++ .../smartFactoryEasier/e5-assembly.yaml | 31 ++++++++++++++ .../smartFactoryEasier/e7-shipping.yaml | 22 ++++++++++ .../datasource/smartFactoryEasier/screw.yaml | 5 +++ .../smartFactoryEasier/woodShelf.yaml | 5 +++ config/datasource/smartfactory/bar.yaml | 5 +++ .../datasource/smartfactory/barResource.yaml | 7 ++++ config/datasource/smartfactory/board.yaml | 5 +++ .../smartfactory/boardResource.yaml | 7 ++++ config/datasource/smartfactory/bolt.yaml | 5 +++ config/datasource/smartfactory/e0-order.yaml | 16 ++++++++ .../smartfactory/e1-outgoing-stock.yaml | 40 +++++++++++++++++++ .../smartfactory/e2-goods-delivery.yaml | 25 ++++++++++++ .../smartfactory/e2-sawing-bar.yaml | 20 ++++++++++ .../smartfactory/e2-sawing-board.yaml | 20 ++++++++++ .../smartfactory/e3-drilling-bar.yaml | 20 ++++++++++ .../smartfactory/e3-drilling-board.yaml | 20 ++++++++++ .../smartfactory/e4-sanding-Bar.yaml | 20 ++++++++++ .../smartfactory/e4-sanding-Board.yaml | 20 ++++++++++ .../datasource/smartfactory/e5-assembly.yaml | 40 +++++++++++++++++++ .../smartfactory/e6-quality-control.yaml | 35 ++++++++++++++++ .../datasource/smartfactory/e7-shipping.yaml | 22 ++++++++++ config/datasource/smartfactory/order.yaml | 5 +++ config/datasource/smartfactory/pin.yaml | 5 +++ config/datasource/smartfactory/screw.yaml | 5 +++ config/datasource/smartfactory/woodShelf.yaml | 5 +++ 31 files changed, 505 insertions(+) create mode 100644 config/datasource/smartFactoryEasier/bar.yaml create mode 100644 config/datasource/smartFactoryEasier/barResource.yaml create mode 100644 config/datasource/smartFactoryEasier/e0-order.yaml create mode 100644 config/datasource/smartFactoryEasier/e1-outgoing-stock.yaml create mode 100644 config/datasource/smartFactoryEasier/e2-sawing-bar.yaml create mode 100644 config/datasource/smartFactoryEasier/e3-drilling-bar.yaml create mode 100644 config/datasource/smartFactoryEasier/e5-assembly.yaml create mode 100644 config/datasource/smartFactoryEasier/e7-shipping.yaml create mode 100644 config/datasource/smartFactoryEasier/screw.yaml create mode 100644 config/datasource/smartFactoryEasier/woodShelf.yaml create mode 100644 config/datasource/smartfactory/bar.yaml create mode 100644 config/datasource/smartfactory/barResource.yaml create mode 100644 config/datasource/smartfactory/board.yaml create mode 100644 config/datasource/smartfactory/boardResource.yaml create mode 100644 config/datasource/smartfactory/bolt.yaml create mode 100644 config/datasource/smartfactory/e0-order.yaml create mode 100644 config/datasource/smartfactory/e1-outgoing-stock.yaml create mode 100644 config/datasource/smartfactory/e2-goods-delivery.yaml create mode 100644 config/datasource/smartfactory/e2-sawing-bar.yaml create mode 100644 config/datasource/smartfactory/e2-sawing-board.yaml create mode 100644 config/datasource/smartfactory/e3-drilling-bar.yaml create mode 100644 config/datasource/smartfactory/e3-drilling-board.yaml create mode 100644 config/datasource/smartfactory/e4-sanding-Bar.yaml create mode 100644 config/datasource/smartfactory/e4-sanding-Board.yaml create mode 100644 config/datasource/smartfactory/e5-assembly.yaml create mode 100644 config/datasource/smartfactory/e6-quality-control.yaml create mode 100644 config/datasource/smartfactory/e7-shipping.yaml create mode 100644 config/datasource/smartfactory/order.yaml create mode 100644 config/datasource/smartfactory/pin.yaml create mode 100644 config/datasource/smartfactory/screw.yaml create mode 100644 config/datasource/smartfactory/woodShelf.yaml diff --git a/config/datasource/smartFactoryEasier/bar.yaml b/config/datasource/smartFactoryEasier/bar.yaml new file mode 100644 index 0000000..6b34536 --- /dev/null +++ b/config/datasource/smartFactoryEasier/bar.yaml @@ -0,0 +1,5 @@ +kind: object +name: "bar" +spec: + type: "resource" + input: "[[1,barResource]]" \ No newline at end of file diff --git a/config/datasource/smartFactoryEasier/barResource.yaml b/config/datasource/smartFactoryEasier/barResource.yaml new file mode 100644 index 0000000..03882ef --- /dev/null +++ b/config/datasource/smartFactoryEasier/barResource.yaml @@ -0,0 +1,7 @@ +kind: object +name: "barResource" +spec: + type: "resource" + input: "[[1,order]]" + length: "5" + width: "" \ No newline at end of file diff --git a/config/datasource/smartFactoryEasier/e0-order.yaml b/config/datasource/smartFactoryEasier/e0-order.yaml new file mode 100644 index 0000000..2f9e609 --- /dev/null +++ b/config/datasource/smartFactoryEasier/e0-order.yaml @@ -0,0 +1,16 @@ +kind: datasource +name: "Order" +spec: + name: "Order" + group: "factory" + selection: genericProbability + distribution: [1.0] + eventData: + -activities: + - activity: "" + transition: "OutgoingStock" + duration: 0 + output: + - object: + name: "order" + number: "1" \ No newline at end of file diff --git a/config/datasource/smartFactoryEasier/e1-outgoing-stock.yaml b/config/datasource/smartFactoryEasier/e1-outgoing-stock.yaml new file mode 100644 index 0000000..7d109ec --- /dev/null +++ b/config/datasource/smartFactoryEasier/e1-outgoing-stock.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + selection: genericProbability + distribution: [1.0] + input: + - object: + name: "order" + number: 1 + eventData: + - activities: + - activity: "Sent to sawing machine" + transition: "SawingBar" + duration: 3 + output: + - object: + name: "barResource" + number: 1 + - activity: "Sent to assembly station" + transition: "Assembly" + duration: 2 + output: + - object: + name: "screw" + number: 13 \ No newline at end of file diff --git a/config/datasource/smartFactoryEasier/e2-sawing-bar.yaml b/config/datasource/smartFactoryEasier/e2-sawing-bar.yaml new file mode 100644 index 0000000..5685346 --- /dev/null +++ b/config/datasource/smartFactoryEasier/e2-sawing-bar.yaml @@ -0,0 +1,20 @@ +kind: datasource +name: "SawingBar" +spec: + name: "SawingBar" + group: "factory" + selection: genericProbability + distribution: [1.0] + input: + - object: + name: "barResource" + number: 1 + eventData: + - activities: + - activity: "Sawed" + transition: "DrillingBar" + duration: 5 + output: + - object: + name: "bar" + number: 4 \ No newline at end of file diff --git a/config/datasource/smartFactoryEasier/e3-drilling-bar.yaml b/config/datasource/smartFactoryEasier/e3-drilling-bar.yaml new file mode 100644 index 0000000..7cee6be --- /dev/null +++ b/config/datasource/smartFactoryEasier/e3-drilling-bar.yaml @@ -0,0 +1,20 @@ +kind: datasource +name: "DrillingBar" +spec: + name: "DrillingBar" + group: "factory" + selection: genericProbability + distribution: [1.0] + input: + - object: + name: "bar" + number: 1 + eventData: + - activities: + - activity: "Drilled" + transition: "SandingBar" + duration: 5 + output: + - object: + name: "bar" + number: 1 \ No newline at end of file diff --git a/config/datasource/smartFactoryEasier/e5-assembly.yaml b/config/datasource/smartFactoryEasier/e5-assembly.yaml new file mode 100644 index 0000000..dbf51bb --- /dev/null +++ b/config/datasource/smartFactoryEasier/e5-assembly.yaml @@ -0,0 +1,31 @@ +ind: datasource +name: "Assembly" +spec: + name: "Assembly" + group: "factory" + selection: genericProbability + distribution: [ 0.8, 0.1, 0.1 ] + input: + - object: + name: "bar" + number: 4 + - object: + name: "screw" + number: 13 + eventData: + - activities: + - activity: "Assembling completed" + duration: 10 + transition: "QualityControl" + output: + - object: + name: "woodShelf" + number: 1 + - activities: + - activity: "Overheating" + transition: "" + duration: 2 + - activities: + - activity: "Item broke" + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smartFactoryEasier/e7-shipping.yaml b/config/datasource/smartFactoryEasier/e7-shipping.yaml new file mode 100644 index 0000000..f2d50db --- /dev/null +++ b/config/datasource/smartFactoryEasier/e7-shipping.yaml @@ -0,0 +1,22 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + selection: genericProbability + distribution: [ 0.8, 0.2 ] + input: + - object: + name: "woodShelf" + number: 1 + eventData: + - activity: "Package waits for sending" + transition: "Shipping" + duration: 180 + output: + - object: + name: "woodShelf" + number: 1 + - activity: "Package sent" + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smartFactoryEasier/screw.yaml b/config/datasource/smartFactoryEasier/screw.yaml new file mode 100644 index 0000000..d5d8042 --- /dev/null +++ b/config/datasource/smartFactoryEasier/screw.yaml @@ -0,0 +1,5 @@ +kind: object +name: "screw" +spec: + type: "smallComponent" + input: "[[1,order]]" \ No newline at end of file diff --git a/config/datasource/smartFactoryEasier/woodShelf.yaml b/config/datasource/smartFactoryEasier/woodShelf.yaml new file mode 100644 index 0000000..0f9d4c4 --- /dev/null +++ b/config/datasource/smartFactoryEasier/woodShelf.yaml @@ -0,0 +1,5 @@ +kind: object +name: "woodenShelf" +spec: + type: "product" + input: "[[4,bar],[13,screw]]" \ No newline at end of file diff --git a/config/datasource/smartfactory/bar.yaml b/config/datasource/smartfactory/bar.yaml new file mode 100644 index 0000000..6b34536 --- /dev/null +++ b/config/datasource/smartfactory/bar.yaml @@ -0,0 +1,5 @@ +kind: object +name: "bar" +spec: + type: "resource" + input: "[[1,barResource]]" \ No newline at end of file diff --git a/config/datasource/smartfactory/barResource.yaml b/config/datasource/smartfactory/barResource.yaml new file mode 100644 index 0000000..03882ef --- /dev/null +++ b/config/datasource/smartfactory/barResource.yaml @@ -0,0 +1,7 @@ +kind: object +name: "barResource" +spec: + type: "resource" + input: "[[1,order]]" + length: "5" + width: "" \ No newline at end of file diff --git a/config/datasource/smartfactory/board.yaml b/config/datasource/smartfactory/board.yaml new file mode 100644 index 0000000..a96743d --- /dev/null +++ b/config/datasource/smartfactory/board.yaml @@ -0,0 +1,5 @@ +kind: object +name: "board" +spec: + type: "resource" + input: "[[1,boardResource]]" \ No newline at end of file diff --git a/config/datasource/smartfactory/boardResource.yaml b/config/datasource/smartfactory/boardResource.yaml new file mode 100644 index 0000000..f528da1 --- /dev/null +++ b/config/datasource/smartfactory/boardResource.yaml @@ -0,0 +1,7 @@ +kind: object +name: "boardResource" +spec: + type: "resource" + input: "[[1,order]]" + length: "5" + width: "5" \ No newline at end of file diff --git a/config/datasource/smartfactory/bolt.yaml b/config/datasource/smartfactory/bolt.yaml new file mode 100644 index 0000000..f681eaa --- /dev/null +++ b/config/datasource/smartfactory/bolt.yaml @@ -0,0 +1,5 @@ +kind: object +name: "bolt" +spec: + type: "smallComponent" + input: "[[1,order]]" \ No newline at end of file diff --git a/config/datasource/smartfactory/e0-order.yaml b/config/datasource/smartfactory/e0-order.yaml new file mode 100644 index 0000000..2f9e609 --- /dev/null +++ b/config/datasource/smartfactory/e0-order.yaml @@ -0,0 +1,16 @@ +kind: datasource +name: "Order" +spec: + name: "Order" + group: "factory" + selection: genericProbability + distribution: [1.0] + eventData: + -activities: + - activity: "" + transition: "OutgoingStock" + duration: 0 + output: + - object: + name: "order" + number: "1" \ No newline at end of file diff --git a/config/datasource/smartfactory/e1-outgoing-stock.yaml b/config/datasource/smartfactory/e1-outgoing-stock.yaml new file mode 100644 index 0000000..45aca54 --- /dev/null +++ b/config/datasource/smartfactory/e1-outgoing-stock.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + selection: genericProbability + distribution: [1.0] + input: + - object: + name: "order" + number: 1 + eventData: + - activities: + - activity: "Sent to sawing machine" + transition: "SawingBar" + duration: 3 + output: + - object: + name: "barResource" + number: 1 + - activity: "Sent to sawing machine" + transition: "SawingBoard" + duration: 3 + output: + - object: + name: "boardResource" + number: 1 + - activity: "Sent to assembly station" + transition: "Assembly" + duration: 2 + output: + - object: + name: "screw" + number: 13 + - object: + name: "bolt" + number: 1 + - object: + name: "pin" + number: 10 \ No newline at end of file diff --git a/config/datasource/smartfactory/e2-goods-delivery.yaml b/config/datasource/smartfactory/e2-goods-delivery.yaml new file mode 100644 index 0000000..9ccc6af --- /dev/null +++ b/config/datasource/smartfactory/e2-goods-delivery.yaml @@ -0,0 +1,25 @@ +kind: datasource +name: "GoodsDelivery" +spec: + name: "GoodsDelivery" + group: "factory" + selection: driftingProbability + startDistribution: [0.3, 0.7] + endDistribution: [0.1, 0.9,] + steps: 1000 + eventData: + - activities: + - activity: "Reject" + transition: "" + duration: 1 + - activities: + - activity: "Store" + transition: "GoodsDelivery" + duration: + type: gaussian + mu: 720 + sigma: 120 + output: + - object: + name: "screw" + number: 2 \ No newline at end of file diff --git a/config/datasource/smartfactory/e2-sawing-bar.yaml b/config/datasource/smartfactory/e2-sawing-bar.yaml new file mode 100644 index 0000000..5685346 --- /dev/null +++ b/config/datasource/smartfactory/e2-sawing-bar.yaml @@ -0,0 +1,20 @@ +kind: datasource +name: "SawingBar" +spec: + name: "SawingBar" + group: "factory" + selection: genericProbability + distribution: [1.0] + input: + - object: + name: "barResource" + number: 1 + eventData: + - activities: + - activity: "Sawed" + transition: "DrillingBar" + duration: 5 + output: + - object: + name: "bar" + number: 4 \ No newline at end of file diff --git a/config/datasource/smartfactory/e2-sawing-board.yaml b/config/datasource/smartfactory/e2-sawing-board.yaml new file mode 100644 index 0000000..9735fa5 --- /dev/null +++ b/config/datasource/smartfactory/e2-sawing-board.yaml @@ -0,0 +1,20 @@ +kind: datasource +name: "SawingBoard" +spec: + name: "SawingBoard" + group: "factory" + selection: genericProbability + distribution: [1.0] + input: + - object: + name: "boardResource" + number: 1 + eventData: + - activities: + - activity: "Sawed" + transition: "DrillingBoard" + duration: 5 + output: + - object: + name: "board" + number: 4 \ No newline at end of file diff --git a/config/datasource/smartfactory/e3-drilling-bar.yaml b/config/datasource/smartfactory/e3-drilling-bar.yaml new file mode 100644 index 0000000..7cee6be --- /dev/null +++ b/config/datasource/smartfactory/e3-drilling-bar.yaml @@ -0,0 +1,20 @@ +kind: datasource +name: "DrillingBar" +spec: + name: "DrillingBar" + group: "factory" + selection: genericProbability + distribution: [1.0] + input: + - object: + name: "bar" + number: 1 + eventData: + - activities: + - activity: "Drilled" + transition: "SandingBar" + duration: 5 + output: + - object: + name: "bar" + number: 1 \ No newline at end of file diff --git a/config/datasource/smartfactory/e3-drilling-board.yaml b/config/datasource/smartfactory/e3-drilling-board.yaml new file mode 100644 index 0000000..71cb9be --- /dev/null +++ b/config/datasource/smartfactory/e3-drilling-board.yaml @@ -0,0 +1,20 @@ +kind: datasource +name: "DrillingBoard" +spec: + name: "DrillingBoard" + group: "factory" + selection: genericProbability + distribution: [1.0] + input: + - object: + name: "board" + number: 1 + eventData: + - activities: + - activity: "Drilled" + transition: "SandingBoard" + duration: 5 + output: + - object: + name: "board" + number: 1 \ No newline at end of file diff --git a/config/datasource/smartfactory/e4-sanding-Bar.yaml b/config/datasource/smartfactory/e4-sanding-Bar.yaml new file mode 100644 index 0000000..8c301d2 --- /dev/null +++ b/config/datasource/smartfactory/e4-sanding-Bar.yaml @@ -0,0 +1,20 @@ +kind: datasource +name: "SandingBar" +spec: + name: "SandingBar" + group: "factory" + selection: genericProbability + distribution: [1.0] + input: + - object: + name: "bar" + number: 1 + eventData: + - activities: + - activity: "Sanded bar" + transition: "Assembly" + duration: 5 + output: + - object: + name: "bar" + number: 1 \ No newline at end of file diff --git a/config/datasource/smartfactory/e4-sanding-Board.yaml b/config/datasource/smartfactory/e4-sanding-Board.yaml new file mode 100644 index 0000000..779ddfa --- /dev/null +++ b/config/datasource/smartfactory/e4-sanding-Board.yaml @@ -0,0 +1,20 @@ +kind: datasource +name: "SandingBoard" +spec: + name: "SandingBoard" + group: "factory" + selection: genericProbability + distribution: [1.0] + input: + - object: + name: "board" + number: 1 + eventData: + - activities: + - activity: "Sanded Board" + transition: "Assembly" + duration: 5 + output: + - object: + name: "board" + number: 1 \ No newline at end of file diff --git a/config/datasource/smartfactory/e5-assembly.yaml b/config/datasource/smartfactory/e5-assembly.yaml new file mode 100644 index 0000000..92f3251 --- /dev/null +++ b/config/datasource/smartfactory/e5-assembly.yaml @@ -0,0 +1,40 @@ +ind: datasource +name: "Assembly" +spec: + name: "Assembly" + group: "factory" + selection: genericProbability + distribution: [ 0.8, 0.1, 0.1 ] + input: + - object: + name: "bar" + number: 10 + - object: + name: "board" + number: 5 + - object: + name: "screw" + number: 13 + - object: + name: "bolt" + number: 1 + - object: + name: "pin" + number: 10 + eventData: + - activities: + - activity: "Assembling completed" + duration: 10 + transition: "QualityControl" + output: + - object: + name: "woodShelf" + number: 1 + - activities: + - activity: "Overheating" + transition: "" + duration: 2 + - activities: + - activity: "Item broke" + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smartfactory/e6-quality-control.yaml b/config/datasource/smartfactory/e6-quality-control.yaml new file mode 100644 index 0000000..61f211f --- /dev/null +++ b/config/datasource/smartfactory/e6-quality-control.yaml @@ -0,0 +1,35 @@ +kind: datasource +name: "QualityControl" +spec: + name: "QualityControl" + group: "factory" + selection: genericProbability + distribution: [ 0.3, 0.1, 0.6 ] + input: + - object: + name: "woodShelf" + number: 1 + eventData: + - activities: + - activity: "Item Needs Corrections" + transition: "Assembly" + duration: 2 + output: + - object: + name: "woodShelf" + number: 1 + - activities: + - activity: "Quality Insufficient" + transition: "" + duration: 2 + - activities: + - activity: "Quality check passed" + transition: "Shipping" + duration: + type: uniform + lowerBound: 5 + upperBound: 10 + output: + - object: + name: "woodShelf" + number: 1 diff --git a/config/datasource/smartfactory/e7-shipping.yaml b/config/datasource/smartfactory/e7-shipping.yaml new file mode 100644 index 0000000..f2d50db --- /dev/null +++ b/config/datasource/smartfactory/e7-shipping.yaml @@ -0,0 +1,22 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + selection: genericProbability + distribution: [ 0.8, 0.2 ] + input: + - object: + name: "woodShelf" + number: 1 + eventData: + - activity: "Package waits for sending" + transition: "Shipping" + duration: 180 + output: + - object: + name: "woodShelf" + number: 1 + - activity: "Package sent" + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smartfactory/order.yaml b/config/datasource/smartfactory/order.yaml new file mode 100644 index 0000000..b840787 --- /dev/null +++ b/config/datasource/smartfactory/order.yaml @@ -0,0 +1,5 @@ +kind: object +name: "order" +spec: + type: "order" + input: "[[]]" \ No newline at end of file diff --git a/config/datasource/smartfactory/pin.yaml b/config/datasource/smartfactory/pin.yaml new file mode 100644 index 0000000..2830c6e --- /dev/null +++ b/config/datasource/smartfactory/pin.yaml @@ -0,0 +1,5 @@ +kind: object +name: "pin" +spec: + type: "smallComponent" + input: "[[1,order]]" \ No newline at end of file diff --git a/config/datasource/smartfactory/screw.yaml b/config/datasource/smartfactory/screw.yaml new file mode 100644 index 0000000..d5d8042 --- /dev/null +++ b/config/datasource/smartfactory/screw.yaml @@ -0,0 +1,5 @@ +kind: object +name: "screw" +spec: + type: "smallComponent" + input: "[[1,order]]" \ No newline at end of file diff --git a/config/datasource/smartfactory/woodShelf.yaml b/config/datasource/smartfactory/woodShelf.yaml new file mode 100644 index 0000000..363b24d --- /dev/null +++ b/config/datasource/smartfactory/woodShelf.yaml @@ -0,0 +1,5 @@ +kind: object +name: "woodenShelf" +spec: + type: "product" + input: "[[10,bar],[5,board],[13,screw],[1,bolt],[10,pin]]" \ No newline at end of file From 555f21f7bdd812a7f1093fe5c2acba77477605bf Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 16 May 2025 13:38:54 +0200 Subject: [PATCH 056/124] renaming --- config/datasource/assemblyline/pin.yaml | 8 ++++++++ .../bar-resource.yaml} | 0 .../{smartFactoryEasier => smart-factory-easier}/bar.yaml | 0 .../e0-order.yaml | 4 ++-- .../e1-outgoing-stock.yaml | 0 .../e2-sawing-bar.yaml | 0 .../e3-drilling-bar.yaml | 0 .../e5-assembly.yaml | 0 .../e7-shipping.yaml | 0 .../{smartfactory => smart-factory-easier}/order.yaml | 0 .../screw.yaml | 0 .../woodShelf.yaml | 0 .../barResource.yaml => smart-factory/bar-resource.yaml} | 0 .../datasource/{smartfactory => smart-factory}/bar.yaml | 0 .../board-resource.yaml} | 0 .../datasource/{smartfactory => smart-factory}/board.yaml | 0 .../datasource/{smartfactory => smart-factory}/bolt.yaml | 0 .../{smartfactory => smart-factory}/e0-order.yaml | 4 ++-- .../e1-outgoing-stock.yaml | 0 .../e2-goods-delivery.yaml | 0 .../{smartfactory => smart-factory}/e2-sawing-bar.yaml | 0 .../{smartfactory => smart-factory}/e2-sawing-board.yaml | 0 .../{smartfactory => smart-factory}/e3-drilling-bar.yaml | 0 .../e3-drilling-board.yaml | 0 .../{smartfactory => smart-factory}/e4-sanding-Bar.yaml | 0 .../{smartfactory => smart-factory}/e4-sanding-Board.yaml | 0 .../{smartfactory => smart-factory}/e5-assembly.yaml | 0 .../e6-quality-control.yaml | 0 .../{smartfactory => smart-factory}/e7-shipping.yaml | 0 config/datasource/smart-factory/order.yaml | 5 +++++ .../datasource/{smartfactory => smart-factory}/screw.yaml | 0 .../{smartfactory => smart-factory}/woodShelf.yaml | 0 config/datasource/smartfactory/pin.yaml | 5 ----- 33 files changed, 17 insertions(+), 9 deletions(-) create mode 100644 config/datasource/assemblyline/pin.yaml rename config/datasource/{smartFactoryEasier/barResource.yaml => smart-factory-easier/bar-resource.yaml} (100%) rename config/datasource/{smartFactoryEasier => smart-factory-easier}/bar.yaml (100%) rename config/datasource/{smartFactoryEasier => smart-factory-easier}/e0-order.yaml (89%) rename config/datasource/{smartFactoryEasier => smart-factory-easier}/e1-outgoing-stock.yaml (100%) rename config/datasource/{smartFactoryEasier => smart-factory-easier}/e2-sawing-bar.yaml (100%) rename config/datasource/{smartFactoryEasier => smart-factory-easier}/e3-drilling-bar.yaml (100%) rename config/datasource/{smartFactoryEasier => smart-factory-easier}/e5-assembly.yaml (100%) rename config/datasource/{smartFactoryEasier => smart-factory-easier}/e7-shipping.yaml (100%) rename config/datasource/{smartfactory => smart-factory-easier}/order.yaml (100%) rename config/datasource/{smartFactoryEasier => smart-factory-easier}/screw.yaml (100%) rename config/datasource/{smartFactoryEasier => smart-factory-easier}/woodShelf.yaml (100%) rename config/datasource/{smartfactory/barResource.yaml => smart-factory/bar-resource.yaml} (100%) rename config/datasource/{smartfactory => smart-factory}/bar.yaml (100%) rename config/datasource/{smartfactory/boardResource.yaml => smart-factory/board-resource.yaml} (100%) rename config/datasource/{smartfactory => smart-factory}/board.yaml (100%) rename config/datasource/{smartfactory => smart-factory}/bolt.yaml (100%) rename config/datasource/{smartfactory => smart-factory}/e0-order.yaml (89%) rename config/datasource/{smartfactory => smart-factory}/e1-outgoing-stock.yaml (100%) rename config/datasource/{smartfactory => smart-factory}/e2-goods-delivery.yaml (100%) rename config/datasource/{smartfactory => smart-factory}/e2-sawing-bar.yaml (100%) rename config/datasource/{smartfactory => smart-factory}/e2-sawing-board.yaml (100%) rename config/datasource/{smartfactory => smart-factory}/e3-drilling-bar.yaml (100%) rename config/datasource/{smartfactory => smart-factory}/e3-drilling-board.yaml (100%) rename config/datasource/{smartfactory => smart-factory}/e4-sanding-Bar.yaml (100%) rename config/datasource/{smartfactory => smart-factory}/e4-sanding-Board.yaml (100%) rename config/datasource/{smartfactory => smart-factory}/e5-assembly.yaml (100%) rename config/datasource/{smartfactory => smart-factory}/e6-quality-control.yaml (100%) rename config/datasource/{smartfactory => smart-factory}/e7-shipping.yaml (100%) create mode 100644 config/datasource/smart-factory/order.yaml rename config/datasource/{smartfactory => smart-factory}/screw.yaml (100%) rename config/datasource/{smartfactory => smart-factory}/woodShelf.yaml (100%) delete mode 100644 config/datasource/smartfactory/pin.yaml diff --git a/config/datasource/assemblyline/pin.yaml b/config/datasource/assemblyline/pin.yaml new file mode 100644 index 0000000..f87ff90 --- /dev/null +++ b/config/datasource/assemblyline/pin.yaml @@ -0,0 +1,8 @@ +kind: object +name: "pin" +spec: + name: "pin" + type: "smallComponent" + input: "[order]" + length: "5" + width: "" \ No newline at end of file diff --git a/config/datasource/smartFactoryEasier/barResource.yaml b/config/datasource/smart-factory-easier/bar-resource.yaml similarity index 100% rename from config/datasource/smartFactoryEasier/barResource.yaml rename to config/datasource/smart-factory-easier/bar-resource.yaml diff --git a/config/datasource/smartFactoryEasier/bar.yaml b/config/datasource/smart-factory-easier/bar.yaml similarity index 100% rename from config/datasource/smartFactoryEasier/bar.yaml rename to config/datasource/smart-factory-easier/bar.yaml diff --git a/config/datasource/smartFactoryEasier/e0-order.yaml b/config/datasource/smart-factory-easier/e0-order.yaml similarity index 89% rename from config/datasource/smartFactoryEasier/e0-order.yaml rename to config/datasource/smart-factory-easier/e0-order.yaml index 2f9e609..f2c8a6a 100644 --- a/config/datasource/smartFactoryEasier/e0-order.yaml +++ b/config/datasource/smart-factory-easier/e0-order.yaml @@ -1,7 +1,7 @@ kind: datasource -name: "Order" +name: "" spec: - name: "Order" + name: "" group: "factory" selection: genericProbability distribution: [1.0] diff --git a/config/datasource/smartFactoryEasier/e1-outgoing-stock.yaml b/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml similarity index 100% rename from config/datasource/smartFactoryEasier/e1-outgoing-stock.yaml rename to config/datasource/smart-factory-easier/e1-outgoing-stock.yaml diff --git a/config/datasource/smartFactoryEasier/e2-sawing-bar.yaml b/config/datasource/smart-factory-easier/e2-sawing-bar.yaml similarity index 100% rename from config/datasource/smartFactoryEasier/e2-sawing-bar.yaml rename to config/datasource/smart-factory-easier/e2-sawing-bar.yaml diff --git a/config/datasource/smartFactoryEasier/e3-drilling-bar.yaml b/config/datasource/smart-factory-easier/e3-drilling-bar.yaml similarity index 100% rename from config/datasource/smartFactoryEasier/e3-drilling-bar.yaml rename to config/datasource/smart-factory-easier/e3-drilling-bar.yaml diff --git a/config/datasource/smartFactoryEasier/e5-assembly.yaml b/config/datasource/smart-factory-easier/e5-assembly.yaml similarity index 100% rename from config/datasource/smartFactoryEasier/e5-assembly.yaml rename to config/datasource/smart-factory-easier/e5-assembly.yaml diff --git a/config/datasource/smartFactoryEasier/e7-shipping.yaml b/config/datasource/smart-factory-easier/e7-shipping.yaml similarity index 100% rename from config/datasource/smartFactoryEasier/e7-shipping.yaml rename to config/datasource/smart-factory-easier/e7-shipping.yaml diff --git a/config/datasource/smartfactory/order.yaml b/config/datasource/smart-factory-easier/order.yaml similarity index 100% rename from config/datasource/smartfactory/order.yaml rename to config/datasource/smart-factory-easier/order.yaml diff --git a/config/datasource/smartFactoryEasier/screw.yaml b/config/datasource/smart-factory-easier/screw.yaml similarity index 100% rename from config/datasource/smartFactoryEasier/screw.yaml rename to config/datasource/smart-factory-easier/screw.yaml diff --git a/config/datasource/smartFactoryEasier/woodShelf.yaml b/config/datasource/smart-factory-easier/woodShelf.yaml similarity index 100% rename from config/datasource/smartFactoryEasier/woodShelf.yaml rename to config/datasource/smart-factory-easier/woodShelf.yaml diff --git a/config/datasource/smartfactory/barResource.yaml b/config/datasource/smart-factory/bar-resource.yaml similarity index 100% rename from config/datasource/smartfactory/barResource.yaml rename to config/datasource/smart-factory/bar-resource.yaml diff --git a/config/datasource/smartfactory/bar.yaml b/config/datasource/smart-factory/bar.yaml similarity index 100% rename from config/datasource/smartfactory/bar.yaml rename to config/datasource/smart-factory/bar.yaml diff --git a/config/datasource/smartfactory/boardResource.yaml b/config/datasource/smart-factory/board-resource.yaml similarity index 100% rename from config/datasource/smartfactory/boardResource.yaml rename to config/datasource/smart-factory/board-resource.yaml diff --git a/config/datasource/smartfactory/board.yaml b/config/datasource/smart-factory/board.yaml similarity index 100% rename from config/datasource/smartfactory/board.yaml rename to config/datasource/smart-factory/board.yaml diff --git a/config/datasource/smartfactory/bolt.yaml b/config/datasource/smart-factory/bolt.yaml similarity index 100% rename from config/datasource/smartfactory/bolt.yaml rename to config/datasource/smart-factory/bolt.yaml diff --git a/config/datasource/smartfactory/e0-order.yaml b/config/datasource/smart-factory/e0-order.yaml similarity index 89% rename from config/datasource/smartfactory/e0-order.yaml rename to config/datasource/smart-factory/e0-order.yaml index 2f9e609..f2c8a6a 100644 --- a/config/datasource/smartfactory/e0-order.yaml +++ b/config/datasource/smart-factory/e0-order.yaml @@ -1,7 +1,7 @@ kind: datasource -name: "Order" +name: "" spec: - name: "Order" + name: "" group: "factory" selection: genericProbability distribution: [1.0] diff --git a/config/datasource/smartfactory/e1-outgoing-stock.yaml b/config/datasource/smart-factory/e1-outgoing-stock.yaml similarity index 100% rename from config/datasource/smartfactory/e1-outgoing-stock.yaml rename to config/datasource/smart-factory/e1-outgoing-stock.yaml diff --git a/config/datasource/smartfactory/e2-goods-delivery.yaml b/config/datasource/smart-factory/e2-goods-delivery.yaml similarity index 100% rename from config/datasource/smartfactory/e2-goods-delivery.yaml rename to config/datasource/smart-factory/e2-goods-delivery.yaml diff --git a/config/datasource/smartfactory/e2-sawing-bar.yaml b/config/datasource/smart-factory/e2-sawing-bar.yaml similarity index 100% rename from config/datasource/smartfactory/e2-sawing-bar.yaml rename to config/datasource/smart-factory/e2-sawing-bar.yaml diff --git a/config/datasource/smartfactory/e2-sawing-board.yaml b/config/datasource/smart-factory/e2-sawing-board.yaml similarity index 100% rename from config/datasource/smartfactory/e2-sawing-board.yaml rename to config/datasource/smart-factory/e2-sawing-board.yaml diff --git a/config/datasource/smartfactory/e3-drilling-bar.yaml b/config/datasource/smart-factory/e3-drilling-bar.yaml similarity index 100% rename from config/datasource/smartfactory/e3-drilling-bar.yaml rename to config/datasource/smart-factory/e3-drilling-bar.yaml diff --git a/config/datasource/smartfactory/e3-drilling-board.yaml b/config/datasource/smart-factory/e3-drilling-board.yaml similarity index 100% rename from config/datasource/smartfactory/e3-drilling-board.yaml rename to config/datasource/smart-factory/e3-drilling-board.yaml diff --git a/config/datasource/smartfactory/e4-sanding-Bar.yaml b/config/datasource/smart-factory/e4-sanding-Bar.yaml similarity index 100% rename from config/datasource/smartfactory/e4-sanding-Bar.yaml rename to config/datasource/smart-factory/e4-sanding-Bar.yaml diff --git a/config/datasource/smartfactory/e4-sanding-Board.yaml b/config/datasource/smart-factory/e4-sanding-Board.yaml similarity index 100% rename from config/datasource/smartfactory/e4-sanding-Board.yaml rename to config/datasource/smart-factory/e4-sanding-Board.yaml diff --git a/config/datasource/smartfactory/e5-assembly.yaml b/config/datasource/smart-factory/e5-assembly.yaml similarity index 100% rename from config/datasource/smartfactory/e5-assembly.yaml rename to config/datasource/smart-factory/e5-assembly.yaml diff --git a/config/datasource/smartfactory/e6-quality-control.yaml b/config/datasource/smart-factory/e6-quality-control.yaml similarity index 100% rename from config/datasource/smartfactory/e6-quality-control.yaml rename to config/datasource/smart-factory/e6-quality-control.yaml diff --git a/config/datasource/smartfactory/e7-shipping.yaml b/config/datasource/smart-factory/e7-shipping.yaml similarity index 100% rename from config/datasource/smartfactory/e7-shipping.yaml rename to config/datasource/smart-factory/e7-shipping.yaml diff --git a/config/datasource/smart-factory/order.yaml b/config/datasource/smart-factory/order.yaml new file mode 100644 index 0000000..b840787 --- /dev/null +++ b/config/datasource/smart-factory/order.yaml @@ -0,0 +1,5 @@ +kind: object +name: "order" +spec: + type: "order" + input: "[[]]" \ No newline at end of file diff --git a/config/datasource/smartfactory/screw.yaml b/config/datasource/smart-factory/screw.yaml similarity index 100% rename from config/datasource/smartfactory/screw.yaml rename to config/datasource/smart-factory/screw.yaml diff --git a/config/datasource/smartfactory/woodShelf.yaml b/config/datasource/smart-factory/woodShelf.yaml similarity index 100% rename from config/datasource/smartfactory/woodShelf.yaml rename to config/datasource/smart-factory/woodShelf.yaml diff --git a/config/datasource/smartfactory/pin.yaml b/config/datasource/smartfactory/pin.yaml deleted file mode 100644 index 2830c6e..0000000 --- a/config/datasource/smartfactory/pin.yaml +++ /dev/null @@ -1,5 +0,0 @@ -kind: object -name: "pin" -spec: - type: "smallComponent" - input: "[[1,order]]" \ No newline at end of file From 0cad9312fe9b90653743dbc02fd3ae7628580700 Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 16 May 2025 13:39:33 +0200 Subject: [PATCH 057/124] add object parsing --- .../core/abstract_object_source.py | 21 +++++++ distributed_event_factory/core/object.py | 58 +++++++++++++++++++ distributed_event_factory/core/object_id.py | 12 ++++ distributed_event_factory/event_factory.py | 14 +++++ .../parser/datasource/object/object_parser.py | 13 +++++ .../parser/object/object_source_parser.py | 20 +++++++ .../parser/parser_registry.py | 7 ++- 7 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 distributed_event_factory/core/abstract_object_source.py create mode 100644 distributed_event_factory/core/object.py create mode 100644 distributed_event_factory/core/object_id.py create mode 100644 distributed_event_factory/parser/datasource/object/object_parser.py create mode 100644 distributed_event_factory/parser/object/object_source_parser.py diff --git a/distributed_event_factory/core/abstract_object_source.py b/distributed_event_factory/core/abstract_object_source.py new file mode 100644 index 0000000..35138c7 --- /dev/null +++ b/distributed_event_factory/core/abstract_object_source.py @@ -0,0 +1,21 @@ +from abc import ABC, abstractmethod +from distributed_event_factory.core.object_id import ObjectId + + +class ObjectSource(ABC): + + @abstractmethod + def emit_object(self, id, object_name, timestamp) -> None: + pass + + @abstractmethod + def get_id(self) -> ObjectId: + pass + + @abstractmethod + def get_object_type(self) -> str: + pass + + @abstractmethod + def get_input_objects(self) -> []: + pass diff --git a/distributed_event_factory/core/object.py b/distributed_event_factory/core/object.py new file mode 100644 index 0000000..6ca0c49 --- /dev/null +++ b/distributed_event_factory/core/object.py @@ -0,0 +1,58 @@ +from typing import List + +from distributed_event_factory.core.abstract_object_source import ObjectSource +from distributed_event_factory.core.object_id import ObjectId + +class Object: + def __init__( + self, + timestamp, + object_type: str, + object_id: ObjectId + ): + self.timestamp = timestamp + self.object_type = object_type + self.object_id = object_id + +class GenericObjectSource(ObjectSource): + + def __init__( + self, + object_id: ObjectId, + object_type: str, + input_objects: [], + length: int, + width: int + + ): + self.values_changed : List[Object] = [] + self.object_id = object_id + self.object_type = object_type + self.input_objects = input_objects + self.length = length + self.width = width + + def emit_object(self, id, object_name, timestamp) -> Object: + object = Object( + timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), + object_type=self.object_type, + object_id=self.object_id + ) + self.values_changed.append(object) + return object + + def get_id(self) -> ObjectId: + return self.object_id + + def get_object_type(self) -> str: + return self.object_type + + def get_input_objects(self) -> []: + return self.input_objects + + def get_length(self) -> int: + return self.length + + def get_width(self) -> int: + return self.width + diff --git a/distributed_event_factory/core/object_id.py b/distributed_event_factory/core/object_id.py new file mode 100644 index 0000000..678368f --- /dev/null +++ b/distributed_event_factory/core/object_id.py @@ -0,0 +1,12 @@ +class ObjectId: + def __init__(self, data_source_id: str): + self.id: str = data_source_id + + def __eq__(self, other): + return hasattr(other, "id") and self.id == other.id + + def __hash__(self): + return hash(self.id) + + def get_name(self): + return self.id \ No newline at end of file diff --git a/distributed_event_factory/event_factory.py b/distributed_event_factory/event_factory.py index e232f1a..b8eab98 100644 --- a/distributed_event_factory/event_factory.py +++ b/distributed_event_factory/event_factory.py @@ -4,6 +4,7 @@ from distributed_event_factory.core.end_datasource import EndDataSource from distributed_event_factory.parser.datasource.event.activity.activity_parser import ActivityParser from distributed_event_factory.parser.datasource.event.transition.transition_parser import TransitionParser +from distributed_event_factory.parser.object.object_source_parser import ObjectSourceParser from distributed_event_factory.parser.parser_registry import ParserRegistry from distributed_event_factory.parser.simulation.case.case_id_parser import CaseIdParser from distributed_event_factory.parser.simulation.load.load_parser import LoadParser @@ -16,6 +17,7 @@ def __init__(self): self.sinks = dict() self.simulations = dict() self.datasources = dict() + self.objects = dict() self.datasources[""] = EndDataSource() self.parser = ParserRegistry() @@ -43,12 +45,18 @@ def add_selection_parser(self, key: str, parser: SinkParser): self.parser.probability_selection_parser.add_dependency(key, parser) return self + def add_object_source_parser(self, key: str, parser: ObjectSourceParser): + self.parser.object_source_parser.add_dependency(key, parser) + def get_datasource(self, datasource_key): return self.datasources[datasource_key] def get_sink(self, sink_key): return self.sinks[sink_key] + def get_object_source(self, object_key): + return self.objects[object_key] + def add_directory(self, directory): for filename in os.listdir(directory): if not filename.startswith(".."): @@ -67,6 +75,10 @@ def add_simulation(self, name, simulation): self.simulations[name] = simulation return self + def add_object(self, name, object_source): + self.objects[name] = object_source + return self + def add_file(self, filename): with open(filename) as file: configuration = yaml.safe_load(file) @@ -79,6 +91,8 @@ def add_file(self, filename): self.add_datasource(name, parsed_object) elif kind == "sink": self.add_sink(name, parsed_object) + elif kind == "object": + self.add_object(name, parsed_object) return self def run(self, hook=lambda: None): diff --git a/distributed_event_factory/parser/datasource/object/object_parser.py b/distributed_event_factory/parser/datasource/object/object_parser.py new file mode 100644 index 0000000..0d195ab --- /dev/null +++ b/distributed_event_factory/parser/datasource/object/object_parser.py @@ -0,0 +1,13 @@ +from distributed_event_factory.parser.parser import Parser + +class InputObjectParser(Parser): + + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + return self.dependencies[config['input']].parse(config) \ No newline at end of file diff --git a/distributed_event_factory/parser/object/object_source_parser.py b/distributed_event_factory/parser/object/object_source_parser.py new file mode 100644 index 0000000..1202cab --- /dev/null +++ b/distributed_event_factory/parser/object/object_source_parser.py @@ -0,0 +1,20 @@ +from distributed_event_factory.core.object import GenericObjectSource +from distributed_event_factory.core.object_id import ObjectId +from distributed_event_factory.parser.parser import Parser + +class ObjectSourceParser(Parser): + + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return GenericObjectSource( + object_id=ObjectId(config["name"]), + object_type=config["type"], + input_objects=config["input"], + length=config["length"], + width=config["width"] + ) diff --git a/distributed_event_factory/parser/parser_registry.py b/distributed_event_factory/parser/parser_registry.py index 6b4c13e..067215f 100644 --- a/distributed_event_factory/parser/parser_registry.py +++ b/distributed_event_factory/parser/parser_registry.py @@ -16,6 +16,7 @@ from distributed_event_factory.parser.datasource.event.selection.uniform_event_selection import \ UniformEventSelectionParser from distributed_event_factory.parser.datasource.event.transition.transition_parser import TransitionParser +from distributed_event_factory.parser.object.object_source_parser import ObjectSourceParser from distributed_event_factory.parser.simulation.case.case_id_parser import CaseIdParser from distributed_event_factory.parser.datasource.data_source_parser import DataSourceParser from distributed_event_factory.parser.datasource.event.distribution_parser import DistributionParser @@ -112,6 +113,9 @@ def __init__(self): self.datasource_parser = (DataSourceParser() .add_dependency("eventData", self.event_selection_parser)) + # Input + self.object_source_parser = ObjectSourceParser() + ########## # Case self.increasing_case_id_parser = IncreasingCaseIdProvider() @@ -155,4 +159,5 @@ def __init__(self): self.kind_parser: KindParser = (KindParser() .add_dependency("sink", self.sink_parser) .add_dependency("datasource", self.datasource_parser) - .add_dependency("simulation", self.simulation_parser)) + .add_dependency("simulation", self.simulation_parser) + .add_dependency("object", self.object_source_parser)) From 71658c28a88ccf7e8cdc5bce0e981a461c77a5a1 Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 16 May 2025 14:40:03 +0200 Subject: [PATCH 058/124] change objects after parsing change --- config/datasource/assemblyline/pin.yaml | 2 +- config/datasource/smart-factory-easier/bar-resource.yaml | 1 + config/datasource/smart-factory-easier/bar.yaml | 5 ++++- config/datasource/smart-factory-easier/order.yaml | 5 ++++- config/datasource/smart-factory-easier/screw.yaml | 5 ++++- config/datasource/smart-factory-easier/woodShelf.yaml | 5 ++++- config/datasource/smart-factory/bar-resource.yaml | 3 ++- config/datasource/smart-factory/bar.yaml | 3 ++- config/datasource/smart-factory/board-resource.yaml | 3 ++- config/datasource/smart-factory/board.yaml | 3 ++- config/datasource/smart-factory/bolt.yaml | 3 ++- config/datasource/smart-factory/order.yaml | 3 ++- config/datasource/smart-factory/pin.yaml | 6 ++++++ config/datasource/smart-factory/screw.yaml | 3 ++- config/datasource/smart-factory/woodShelf.yaml | 3 ++- .../parser/object/object_source_parser.py | 2 +- 16 files changed, 41 insertions(+), 14 deletions(-) create mode 100644 config/datasource/smart-factory/pin.yaml diff --git a/config/datasource/assemblyline/pin.yaml b/config/datasource/assemblyline/pin.yaml index f87ff90..342c653 100644 --- a/config/datasource/assemblyline/pin.yaml +++ b/config/datasource/assemblyline/pin.yaml @@ -3,6 +3,6 @@ name: "pin" spec: name: "pin" type: "smallComponent" - input: "[order]" + input: "order" length: "5" width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/bar-resource.yaml b/config/datasource/smart-factory-easier/bar-resource.yaml index 03882ef..ebdbb2d 100644 --- a/config/datasource/smart-factory-easier/bar-resource.yaml +++ b/config/datasource/smart-factory-easier/bar-resource.yaml @@ -1,6 +1,7 @@ kind: object name: "barResource" spec: + name: "barResource" type: "resource" input: "[[1,order]]" length: "5" diff --git a/config/datasource/smart-factory-easier/bar.yaml b/config/datasource/smart-factory-easier/bar.yaml index 6b34536..4a83ddc 100644 --- a/config/datasource/smart-factory-easier/bar.yaml +++ b/config/datasource/smart-factory-easier/bar.yaml @@ -1,5 +1,8 @@ kind: object name: "bar" spec: + name: "bar" type: "resource" - input: "[[1,barResource]]" \ No newline at end of file + input: "[[1,barResource]]" + length: "" + width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/order.yaml b/config/datasource/smart-factory-easier/order.yaml index b840787..8a59b84 100644 --- a/config/datasource/smart-factory-easier/order.yaml +++ b/config/datasource/smart-factory-easier/order.yaml @@ -1,5 +1,8 @@ kind: object name: "order" spec: + name: "order" type: "order" - input: "[[]]" \ No newline at end of file + input: "[[]]" + length: "" + width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/screw.yaml b/config/datasource/smart-factory-easier/screw.yaml index d5d8042..b9d0501 100644 --- a/config/datasource/smart-factory-easier/screw.yaml +++ b/config/datasource/smart-factory-easier/screw.yaml @@ -1,5 +1,8 @@ kind: object name: "screw" spec: + name: "screw" type: "smallComponent" - input: "[[1,order]]" \ No newline at end of file + input: "[[1,order]]" + length: "" + width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/woodShelf.yaml b/config/datasource/smart-factory-easier/woodShelf.yaml index 0f9d4c4..ae2eb42 100644 --- a/config/datasource/smart-factory-easier/woodShelf.yaml +++ b/config/datasource/smart-factory-easier/woodShelf.yaml @@ -1,5 +1,8 @@ kind: object name: "woodenShelf" spec: + name: "woodenShelf" type: "product" - input: "[[4,bar],[13,screw]]" \ No newline at end of file + input: "[[4,bar],[13,screw]]" + length: "" + width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory/bar-resource.yaml b/config/datasource/smart-factory/bar-resource.yaml index 03882ef..6656856 100644 --- a/config/datasource/smart-factory/bar-resource.yaml +++ b/config/datasource/smart-factory/bar-resource.yaml @@ -1,7 +1,8 @@ kind: object name: "barResource" spec: + name: "barResource" type: "resource" - input: "[[1,order]]" + input: "order" length: "5" width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory/bar.yaml b/config/datasource/smart-factory/bar.yaml index 6b34536..4522c11 100644 --- a/config/datasource/smart-factory/bar.yaml +++ b/config/datasource/smart-factory/bar.yaml @@ -1,5 +1,6 @@ kind: object name: "bar" spec: + name: "bar" type: "resource" - input: "[[1,barResource]]" \ No newline at end of file + input: "barResource" \ No newline at end of file diff --git a/config/datasource/smart-factory/board-resource.yaml b/config/datasource/smart-factory/board-resource.yaml index f528da1..ec37d0d 100644 --- a/config/datasource/smart-factory/board-resource.yaml +++ b/config/datasource/smart-factory/board-resource.yaml @@ -1,7 +1,8 @@ kind: object name: "boardResource" spec: + name: "boardResource" type: "resource" - input: "[[1,order]]" + input: "order" length: "5" width: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory/board.yaml b/config/datasource/smart-factory/board.yaml index a96743d..117e6fe 100644 --- a/config/datasource/smart-factory/board.yaml +++ b/config/datasource/smart-factory/board.yaml @@ -1,5 +1,6 @@ kind: object name: "board" spec: + name: "board" type: "resource" - input: "[[1,boardResource]]" \ No newline at end of file + input: "boardResource" \ No newline at end of file diff --git a/config/datasource/smart-factory/bolt.yaml b/config/datasource/smart-factory/bolt.yaml index f681eaa..482d079 100644 --- a/config/datasource/smart-factory/bolt.yaml +++ b/config/datasource/smart-factory/bolt.yaml @@ -1,5 +1,6 @@ kind: object name: "bolt" spec: + name: "bolt" type: "smallComponent" - input: "[[1,order]]" \ No newline at end of file + input: "order" \ No newline at end of file diff --git a/config/datasource/smart-factory/order.yaml b/config/datasource/smart-factory/order.yaml index b840787..5da52b5 100644 --- a/config/datasource/smart-factory/order.yaml +++ b/config/datasource/smart-factory/order.yaml @@ -1,5 +1,6 @@ kind: object name: "order" spec: + name: "order" type: "order" - input: "[[]]" \ No newline at end of file + input: "" \ No newline at end of file diff --git a/config/datasource/smart-factory/pin.yaml b/config/datasource/smart-factory/pin.yaml new file mode 100644 index 0000000..65028c6 --- /dev/null +++ b/config/datasource/smart-factory/pin.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pin" +spec: + name: "pin" + type: "smallComponent" + input: "order" \ No newline at end of file diff --git a/config/datasource/smart-factory/screw.yaml b/config/datasource/smart-factory/screw.yaml index d5d8042..997cb35 100644 --- a/config/datasource/smart-factory/screw.yaml +++ b/config/datasource/smart-factory/screw.yaml @@ -1,5 +1,6 @@ kind: object name: "screw" spec: + name: "screw" type: "smallComponent" - input: "[[1,order]]" \ No newline at end of file + input: "order" \ No newline at end of file diff --git a/config/datasource/smart-factory/woodShelf.yaml b/config/datasource/smart-factory/woodShelf.yaml index 363b24d..2c0e4d6 100644 --- a/config/datasource/smart-factory/woodShelf.yaml +++ b/config/datasource/smart-factory/woodShelf.yaml @@ -1,5 +1,6 @@ kind: object name: "woodenShelf" spec: + name: "woodenShelf" type: "product" - input: "[[10,bar],[5,board],[13,screw],[1,bolt],[10,pin]]" \ No newline at end of file + input: "bar,board,screw,bolt,pin" \ No newline at end of file diff --git a/distributed_event_factory/parser/object/object_source_parser.py b/distributed_event_factory/parser/object/object_source_parser.py index 1202cab..c2e4ccf 100644 --- a/distributed_event_factory/parser/object/object_source_parser.py +++ b/distributed_event_factory/parser/object/object_source_parser.py @@ -14,7 +14,7 @@ def parse(self, config): return GenericObjectSource( object_id=ObjectId(config["name"]), object_type=config["type"], - input_objects=config["input"], + input_objects=config["input"].split(","), length=config["length"], width=config["width"] ) From 9a5ec7a35bb2900bd61a7318878ec88e4cdb9db9 Mon Sep 17 00:00:00 2001 From: ulpi Date: Wed, 21 May 2025 21:35:50 +0200 Subject: [PATCH 059/124] Adding output object parsing --- distributed_event_factory/event_factory.py | 5 +++++ .../datasource/event/output/output_parser.py | 17 +++++++++++++++++ .../event/transition/transition_parser.py | 5 ++++- .../parser/parser_registry.py | 7 +++++-- .../transition/output/output_provider.py | 4 ++++ 5 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 distributed_event_factory/parser/datasource/event/output/output_parser.py create mode 100644 distributed_event_factory/provider/transition/output/output_provider.py diff --git a/distributed_event_factory/event_factory.py b/distributed_event_factory/event_factory.py index b8eab98..6b920df 100644 --- a/distributed_event_factory/event_factory.py +++ b/distributed_event_factory/event_factory.py @@ -10,6 +10,7 @@ from distributed_event_factory.parser.simulation.load.load_parser import LoadParser from distributed_event_factory.parser.sink.sink_parser import SinkParser from distributed_event_factory.provider.sink.sink_provider import Sink +from parser.datasource.event.output.output_parser import OutputParser class EventFactory: @@ -45,6 +46,10 @@ def add_selection_parser(self, key: str, parser: SinkParser): self.parser.probability_selection_parser.add_dependency(key, parser) return self + def add_output_parser(self, key: str, parser: OutputParser): + self.parser.output_parser.add_dependency(key, parser) + return self + def add_object_source_parser(self, key: str, parser: ObjectSourceParser): self.parser.object_source_parser.add_dependency(key, parser) diff --git a/distributed_event_factory/parser/datasource/event/output/output_parser.py b/distributed_event_factory/parser/datasource/event/output/output_parser.py new file mode 100644 index 0000000..899c928 --- /dev/null +++ b/distributed_event_factory/parser/datasource/event/output/output_parser.py @@ -0,0 +1,17 @@ +from distributed_event_factory.parser.parser import Parser +from provider.transition.output.output_provider import OutputObjectProvider + + +class OutputParser(Parser): + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + object_list = [] + for object_element in config: + object_list.append(OutputObjectProvider(object_element["object"], object_element["number"])) + return object_list \ No newline at end of file diff --git a/distributed_event_factory/parser/datasource/event/transition/transition_parser.py b/distributed_event_factory/parser/datasource/event/transition/transition_parser.py index b5715a3..369b9fd 100644 --- a/distributed_event_factory/parser/datasource/event/transition/transition_parser.py +++ b/distributed_event_factory/parser/datasource/event/transition/transition_parser.py @@ -1,5 +1,6 @@ from distributed_event_factory.parser.parser import Parser -from distributed_event_factory.provider.transition.transition.constant_transition import ConstantTransitionProvider +from distributed_event_factory.provider.transition.transition.constant_transition import ConstantTransitionProvider, \ + ConstantTransitionProviderObjectCentric class TransitionParser(Parser): @@ -13,4 +14,6 @@ def add_dependency(self, key: str, dependency): def parse(self, config): if isinstance(config, str): return ConstantTransitionProvider(config) + elif isinstance(config, dict): + return ConstantTransitionProviderObjectCentric(config["name"], self.dependencies["output"].parse(config["output"])) return self.dependencies[config["type"]].parse(config) \ No newline at end of file diff --git a/distributed_event_factory/parser/parser_registry.py b/distributed_event_factory/parser/parser_registry.py index 067215f..c04c39a 100644 --- a/distributed_event_factory/parser/parser_registry.py +++ b/distributed_event_factory/parser/parser_registry.py @@ -39,8 +39,8 @@ from distributed_event_factory.parser.sink.print_console_sink_parser import PrintConsoleSinkParser from distributed_event_factory.parser.sink.sink_parser import SinkParser from distributed_event_factory.parser.sink.ui_sink_parser import UiSinkParser -from distributed_event_factory.provider.data.constant_count_provider import ConstantCountProvider from distributed_event_factory.provider.data.increasing_case import IncreasingCaseIdProvider +from parser.datasource.event.output.output_parser import OutputParser class ParserRegistry: @@ -79,8 +79,11 @@ def __init__(self): .add_dependency("uniform", self.uniform_duration_parser) .add_dependency("gaussian", self.gaussian_duration_parser)) + # Output objects + self.output_parser = OutputParser() + # Transition - self.transition_parser = TransitionParser() + self.transition_parser = (TransitionParser().add_dependency("output", self.output_parser)) # Event Data List self.event_data_list_parser = (EventDataListParser() diff --git a/distributed_event_factory/provider/transition/output/output_provider.py b/distributed_event_factory/provider/transition/output/output_provider.py new file mode 100644 index 0000000..203711e --- /dev/null +++ b/distributed_event_factory/provider/transition/output/output_provider.py @@ -0,0 +1,4 @@ +class OutputObjectProvider: + def __init__(self, objectName, numberOfObject): + self.objectName = objectName + self.numberOfObject = numberOfObject From 88cdf619a46771f5cbff44aba0395883de7ed74a Mon Sep 17 00:00:00 2001 From: ulpi Date: Wed, 28 May 2025 10:33:25 +0200 Subject: [PATCH 060/124] add parsing of input objects and start of output --- config/datasource/assemblyline/d0-start.yaml | 1 + .../assemblyline/d1-goods-delivery.yaml | 1 + .../assemblyline/d2-material-preparation.yaml | 1 + .../assemblyline/d3-assembly-line-setup.yaml | 1 + .../datasource/assemblyline/d4-assembling.yaml | 1 + .../assemblyline/d5-quality-control.yaml | 1 + .../datasource/assemblyline/d6-packaging.yaml | 1 + config/datasource/assemblyline/d7-shipping.yaml | 1 + .../core/core_decisions_datasource.py | 11 +++++++++++ .../datasource/event/event_selection_parser.py | 6 +++--- .../datasource/event/input/input_parser.py | 17 +++++++++++++++++ .../datasource/event/output/output_parser.py | 12 ++++++++++++ .../parser/parser_registry.py | 13 +++++++++---- .../provider/object/input/input_provider.py | 4 ++++ 14 files changed, 64 insertions(+), 7 deletions(-) create mode 100644 distributed_event_factory/core/core_decisions_datasource.py create mode 100644 distributed_event_factory/parser/datasource/event/input/input_parser.py create mode 100644 distributed_event_factory/provider/object/input/input_provider.py diff --git a/config/datasource/assemblyline/d0-start.yaml b/config/datasource/assemblyline/d0-start.yaml index cf4ecfb..0c61401 100644 --- a/config/datasource/assemblyline/d0-start.yaml +++ b/config/datasource/assemblyline/d0-start.yaml @@ -3,6 +3,7 @@ name: "" spec: name: "" group: "factory" + type: default selection: genericProbability distribution: [1.0] eventData: diff --git a/config/datasource/assemblyline/d1-goods-delivery.yaml b/config/datasource/assemblyline/d1-goods-delivery.yaml index 72f6148..bdf1eb9 100644 --- a/config/datasource/assemblyline/d1-goods-delivery.yaml +++ b/config/datasource/assemblyline/d1-goods-delivery.yaml @@ -3,6 +3,7 @@ name: "GoodsDelivery" spec: name: "GoodsDelivery" group: "factory" + type: default selection: driftingProbability startDistribution: [0.1, 0.7, 0.2] endDistribution: [0.1, 0.2, 0.7] diff --git a/config/datasource/assemblyline/d2-material-preparation.yaml b/config/datasource/assemblyline/d2-material-preparation.yaml index 8d855ff..3d177db 100644 --- a/config/datasource/assemblyline/d2-material-preparation.yaml +++ b/config/datasource/assemblyline/d2-material-preparation.yaml @@ -3,6 +3,7 @@ name: "MaterialPreparation" spec: name: "MaterialPreparation" group: "factory" + type: default selection: genericProbability distribution: [ 0.25, 0.7, 0.05 ] eventData: diff --git a/config/datasource/assemblyline/d3-assembly-line-setup.yaml b/config/datasource/assemblyline/d3-assembly-line-setup.yaml index a74c939..cf02339 100644 --- a/config/datasource/assemblyline/d3-assembly-line-setup.yaml +++ b/config/datasource/assemblyline/d3-assembly-line-setup.yaml @@ -3,6 +3,7 @@ name: "AssemblyLineSetup" spec: name: "AssemblyLineSetup" group: "factory" + type: default selection: genericProbability distribution: [ 0.3, 0.4, 0.15, 0.05, 0.1 ] eventData: diff --git a/config/datasource/assemblyline/d4-assembling.yaml b/config/datasource/assemblyline/d4-assembling.yaml index eac32a2..76f91e9 100644 --- a/config/datasource/assemblyline/d4-assembling.yaml +++ b/config/datasource/assemblyline/d4-assembling.yaml @@ -3,6 +3,7 @@ name: "Assembling" spec: name: "Assembling" group: "factory" + type: default selection: genericProbability distribution: [ 0.8, 0.1, 0.08, 0.02 ] eventData: diff --git a/config/datasource/assemblyline/d5-quality-control.yaml b/config/datasource/assemblyline/d5-quality-control.yaml index c25d814..1d54df4 100644 --- a/config/datasource/assemblyline/d5-quality-control.yaml +++ b/config/datasource/assemblyline/d5-quality-control.yaml @@ -3,6 +3,7 @@ name: "QualityControl" spec: name: "QualityControl" group: "factory" + type: default selection: genericProbability distribution: [ 0.3, 0.1, 0.6 ] eventData: diff --git a/config/datasource/assemblyline/d6-packaging.yaml b/config/datasource/assemblyline/d6-packaging.yaml index cd47264..d114534 100644 --- a/config/datasource/assemblyline/d6-packaging.yaml +++ b/config/datasource/assemblyline/d6-packaging.yaml @@ -3,6 +3,7 @@ name: "Packaging" spec: name: "Packaging" group: "factory" + type: default selection: genericProbability distribution: [ 1.0 ] eventData: diff --git a/config/datasource/assemblyline/d7-shipping.yaml b/config/datasource/assemblyline/d7-shipping.yaml index ea1232d..fd2c323 100644 --- a/config/datasource/assemblyline/d7-shipping.yaml +++ b/config/datasource/assemblyline/d7-shipping.yaml @@ -3,6 +3,7 @@ name: "Shipping" spec: name: "Shipping" group: "factory" + type: default selection: genericProbability distribution: [ 0.8, 0.2 ] eventData: diff --git a/distributed_event_factory/core/core_decisions_datasource.py b/distributed_event_factory/core/core_decisions_datasource.py new file mode 100644 index 0000000..ea0f9ee --- /dev/null +++ b/distributed_event_factory/core/core_decisions_datasource.py @@ -0,0 +1,11 @@ +class GenericDecisions: + def __init__( + self, + simulation_provider, + type_parser + ): + self.simulation_provider = simulation_provider + self.type_parser= type_parser + + def get_event_data(self): + return self.simulation_provider.get_event_data() \ No newline at end of file diff --git a/distributed_event_factory/parser/datasource/event/event_selection_parser.py b/distributed_event_factory/parser/datasource/event/event_selection_parser.py index 1656cd8..d85ba85 100644 --- a/distributed_event_factory/parser/datasource/event/event_selection_parser.py +++ b/distributed_event_factory/parser/datasource/event/event_selection_parser.py @@ -1,6 +1,5 @@ +from core.core_decisions_datasource import GenericDecisions from distributed_event_factory.parser.parser import Parser -from distributed_event_factory.provider.eventselection.generic_probability_event_selection_provider import \ - GenericProbabilityEventSelectionProvider class EventSelectionParser(Parser): @@ -13,4 +12,5 @@ def add_dependency(self, key: str, dependency): return self def parse(self, config): - return self.dependencies[config['selection']].parse(config) + return GenericDecisions(self.dependencies[config['selection']].parse(config), + self.dependencies[config['type']].parse(config)) diff --git a/distributed_event_factory/parser/datasource/event/input/input_parser.py b/distributed_event_factory/parser/datasource/event/input/input_parser.py new file mode 100644 index 0000000..18e9f71 --- /dev/null +++ b/distributed_event_factory/parser/datasource/event/input/input_parser.py @@ -0,0 +1,17 @@ +from distributed_event_factory.parser.parser import Parser +from provider.object.input.input_provider import InputObjectProvider + + +class InputParser(Parser): + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + object_list = [] + for object_element in config["input"]: + object_list.append(InputObjectProvider(object_element["object"], object_element["number"])) + return object_list \ No newline at end of file diff --git a/distributed_event_factory/parser/datasource/event/output/output_parser.py b/distributed_event_factory/parser/datasource/event/output/output_parser.py index 899c928..3eb5e67 100644 --- a/distributed_event_factory/parser/datasource/event/output/output_parser.py +++ b/distributed_event_factory/parser/datasource/event/output/output_parser.py @@ -14,4 +14,16 @@ def parse(self, config): object_list = [] for object_element in config: object_list.append(OutputObjectProvider(object_element["object"], object_element["number"])) + return object_list + +class DummyObjectParser(Parser): + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + object_list = [] return object_list \ No newline at end of file diff --git a/distributed_event_factory/parser/parser_registry.py b/distributed_event_factory/parser/parser_registry.py index c04c39a..a6f1b0e 100644 --- a/distributed_event_factory/parser/parser_registry.py +++ b/distributed_event_factory/parser/parser_registry.py @@ -40,7 +40,8 @@ from distributed_event_factory.parser.sink.sink_parser import SinkParser from distributed_event_factory.parser.sink.ui_sink_parser import UiSinkParser from distributed_event_factory.provider.data.increasing_case import IncreasingCaseIdProvider -from parser.datasource.event.output.output_parser import OutputParser +from parser.datasource.event.input.input_parser import InputParser +from parser.datasource.event.output.output_parser import OutputParser, DummyObjectParser class ParserRegistry: @@ -79,11 +80,13 @@ def __init__(self): .add_dependency("uniform", self.uniform_duration_parser) .add_dependency("gaussian", self.gaussian_duration_parser)) - # Output objects + # Objects self.output_parser = OutputParser() + self.dummy_object_parser = DummyObjectParser() + self.input_parser = InputParser() # Transition - self.transition_parser = (TransitionParser().add_dependency("output", self.output_parser)) + self.transition_parser = TransitionParser() # Event Data List self.event_data_list_parser = (EventDataListParser() @@ -110,7 +113,9 @@ def __init__(self): .add_dependency("ordered", self.ordered_event_selection_parser) .add_dependency("uniform", self.uniform_event_selection_parser) .add_dependency("genericProbability", self.probability_selection_parser) - .add_dependency("driftingProbability", self.drifting_selection_parser)) + .add_dependency("driftingProbability", self.drifting_selection_parser) + .add_dependency("objectCentric", self.input_parser) + .add_dependency("default", self.dummy_object_parser)) # DataSource self.datasource_parser = (DataSourceParser() diff --git a/distributed_event_factory/provider/object/input/input_provider.py b/distributed_event_factory/provider/object/input/input_provider.py new file mode 100644 index 0000000..532aac6 --- /dev/null +++ b/distributed_event_factory/provider/object/input/input_provider.py @@ -0,0 +1,4 @@ +class InputObjectProvider: + def __init__(self, objectName, numberOfObject): + self.objectName = objectName + self.numberOfObject = numberOfObject From fd74b1b8d8df9fdad40ce3aa78dc207cf2f0c86b Mon Sep 17 00:00:00 2001 From: ulpi Date: Wed, 28 May 2025 11:41:06 +0200 Subject: [PATCH 061/124] output parsing works --- .../datasource/event/activity/activity_parser.py | 3 +++ distributed_event_factory/parser/parser_registry.py | 13 +++++++------ .../provider/activity/activity_provider.py | 9 +++++++++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/distributed_event_factory/parser/datasource/event/activity/activity_parser.py b/distributed_event_factory/parser/datasource/event/activity/activity_parser.py index 9d555f9..78bc6d3 100644 --- a/distributed_event_factory/parser/datasource/event/activity/activity_parser.py +++ b/distributed_event_factory/parser/datasource/event/activity/activity_parser.py @@ -1,5 +1,6 @@ from distributed_event_factory.parser.parser import Parser from distributed_event_factory.provider.activity.activity_provider import ConstantActivityProvider +from provider.activity.activity_provider import ObjectConstantActivityProvider class ActivityParser(Parser): @@ -14,4 +15,6 @@ def add_dependency(self, key: str, dependency): def parse(self, config): if isinstance(config, str): return ConstantActivityProvider(config) + elif isinstance(config, dict): + return ObjectConstantActivityProvider(config["name"], self.dependencies["output"].parse(config["output"])) return self.dependencies[config["type"]].parse(config) \ No newline at end of file diff --git a/distributed_event_factory/parser/parser_registry.py b/distributed_event_factory/parser/parser_registry.py index a6f1b0e..7efe697 100644 --- a/distributed_event_factory/parser/parser_registry.py +++ b/distributed_event_factory/parser/parser_registry.py @@ -47,6 +47,12 @@ class ParserRegistry: def __init__(self): + + # Objects + self.output_parser = OutputParser() + self.dummy_object_parser = DummyObjectParser() + self.input_parser = InputParser() + # Count self.constant_count_parser = ConstantCountParser() @@ -69,7 +75,7 @@ def __init__(self): .add_dependency("kafka", self.kafka_sink_parser)) ########## # Activity - self.activity_parser = ActivityParser() + self.activity_parser = ActivityParser().add_dependency("output", self.output_parser) # Duration self.constant_duration_parser = ConstantDurationParser() @@ -80,11 +86,6 @@ def __init__(self): .add_dependency("uniform", self.uniform_duration_parser) .add_dependency("gaussian", self.gaussian_duration_parser)) - # Objects - self.output_parser = OutputParser() - self.dummy_object_parser = DummyObjectParser() - self.input_parser = InputParser() - # Transition self.transition_parser = TransitionParser() diff --git a/distributed_event_factory/provider/activity/activity_provider.py b/distributed_event_factory/provider/activity/activity_provider.py index cd0627d..7adaf18 100644 --- a/distributed_event_factory/provider/activity/activity_provider.py +++ b/distributed_event_factory/provider/activity/activity_provider.py @@ -15,3 +15,12 @@ def __init__(self, activity_name): def get_activity(self): return self.activity_name + +class ObjectConstantActivityProvider(ActivityProvider): + + def __init__(self, activity_name, output): + self.activity_name = activity_name + self.output = output + + def get_activity(self): + return self.activity_name From be1c083ab79efd28ec76ef17445e2e47eab380d1 Mon Sep 17 00:00:00 2001 From: ulpi Date: Wed, 28 May 2025 11:59:09 +0200 Subject: [PATCH 062/124] add route parsing --- .../smart-factory-easier/routing.yaml | 11 ++++++++ distributed_event_factory/core/route.py | 19 ++++++++++++++ distributed_event_factory/event_factory.py | 11 ++++++++ .../parser/parser_registry.py | 7 +++++- .../parser/route/route_parser.py | 25 +++++++++++++++++++ 5 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 config/datasource/smart-factory-easier/routing.yaml create mode 100644 distributed_event_factory/core/route.py create mode 100644 distributed_event_factory/parser/route/route_parser.py diff --git a/config/datasource/smart-factory-easier/routing.yaml b/config/datasource/smart-factory-easier/routing.yaml new file mode 100644 index 0000000..8d0ed4f --- /dev/null +++ b/config/datasource/smart-factory-easier/routing.yaml @@ -0,0 +1,11 @@ +kind: route +name: "default" +spec: + routes: + - route: "Transfer from o0 - o1" + start: "Test1" + end: "OutgoingStock" + transferObjects: + - name: "order" + number: 1 + duration: 3 \ No newline at end of file diff --git a/distributed_event_factory/core/route.py b/distributed_event_factory/core/route.py new file mode 100644 index 0000000..800c330 --- /dev/null +++ b/distributed_event_factory/core/route.py @@ -0,0 +1,19 @@ +from typing import List, Tuple + + +class Route: + + def __init__( + self, + route_name: str, + start: str, + end: str, + transfer_objects: List[Tuple[str, int]], + duration: int + + ): + self.route_name : route_name + self.start = start + self.end = end + self.transfer_objects = transfer_objects + self.duration = duration diff --git a/distributed_event_factory/event_factory.py b/distributed_event_factory/event_factory.py index 6b920df..c8a53e3 100644 --- a/distributed_event_factory/event_factory.py +++ b/distributed_event_factory/event_factory.py @@ -11,10 +11,12 @@ from distributed_event_factory.parser.sink.sink_parser import SinkParser from distributed_event_factory.provider.sink.sink_provider import Sink from parser.datasource.event.output.output_parser import OutputParser +from parser.route.route_parser import RouteParser class EventFactory: def __init__(self): + self.routes = dict() self.sinks = dict() self.simulations = dict() self.datasources = dict() @@ -53,6 +55,9 @@ def add_output_parser(self, key: str, parser: OutputParser): def add_object_source_parser(self, key: str, parser: ObjectSourceParser): self.parser.object_source_parser.add_dependency(key, parser) + def add_route_parser(self, key: str, parser: RouteParser): + self.parser.route_parser.add_dependency(key, parser) + def get_datasource(self, datasource_key): return self.datasources[datasource_key] @@ -84,6 +89,10 @@ def add_object(self, name, object_source): self.objects[name] = object_source return self + def add_route(self,name, routes): + self.routes[name] = routes + return self + def add_file(self, filename): with open(filename) as file: configuration = yaml.safe_load(file) @@ -98,6 +107,8 @@ def add_file(self, filename): self.add_sink(name, parsed_object) elif kind == "object": self.add_object(name, parsed_object) + elif kind == "route": + self.add_route(name, parsed_object) return self def run(self, hook=lambda: None): diff --git a/distributed_event_factory/parser/parser_registry.py b/distributed_event_factory/parser/parser_registry.py index 7efe697..242d6c5 100644 --- a/distributed_event_factory/parser/parser_registry.py +++ b/distributed_event_factory/parser/parser_registry.py @@ -42,6 +42,7 @@ from distributed_event_factory.provider.data.increasing_case import IncreasingCaseIdProvider from parser.datasource.event.input.input_parser import InputParser from parser.datasource.event.output.output_parser import OutputParser, DummyObjectParser +from parser.route.route_parser import RouteParser class ParserRegistry: @@ -125,6 +126,9 @@ def __init__(self): # Input self.object_source_parser = ObjectSourceParser() + # Route + self.route_parser = RouteParser() + ########## # Case self.increasing_case_id_parser = IncreasingCaseIdProvider() @@ -169,4 +173,5 @@ def __init__(self): .add_dependency("sink", self.sink_parser) .add_dependency("datasource", self.datasource_parser) .add_dependency("simulation", self.simulation_parser) - .add_dependency("object", self.object_source_parser)) + .add_dependency("object", self.object_source_parser) + .add_dependency("route", self.route_parser)) diff --git a/distributed_event_factory/parser/route/route_parser.py b/distributed_event_factory/parser/route/route_parser.py new file mode 100644 index 0000000..4c38ed5 --- /dev/null +++ b/distributed_event_factory/parser/route/route_parser.py @@ -0,0 +1,25 @@ +from typing import List + +from core.route import Route +from parser.parser import Parser + + +class RouteParser(Parser): + + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + route_list = [] + for route in config["routes"]: + route_list.append(Route( + route_name=route["route"], + start=route["start"], + end=route["end"], + transfer_objects=route["transferObjects"], + duration=route["duration"] + )) + return route_list \ No newline at end of file From 7ac935cad9eedfe5ce4c7a5dc51f5841b08770d7 Mon Sep 17 00:00:00 2001 From: ulpi Date: Wed, 28 May 2025 13:09:45 +0200 Subject: [PATCH 063/124] corrected test files --- .../smart-factory-easier/d0-start.yaml | 12 ++++++ .../smart-factory-easier/e0-order.yaml | 17 ++++---- .../e1-outgoing-stock.yaml | 35 ++++++++-------- .../smart-factory-easier/e2-sawing-bar.yaml | 17 ++++---- .../smart-factory-easier/e3-drilling-bar.yaml | 17 ++++---- .../smart-factory-easier/e4-sanding-Bar.yaml | 19 +++++++++ .../smart-factory-easier/e5-assembly.yaml | 42 ++++++++++--------- .../smart-factory-easier/e7-shipping.yaml | 20 +++++---- .../event/transition/transition_parser.py | 5 +-- 9 files changed, 110 insertions(+), 74 deletions(-) create mode 100644 config/datasource/smart-factory-easier/d0-start.yaml create mode 100644 config/datasource/smart-factory-easier/e4-sanding-Bar.yaml diff --git a/config/datasource/smart-factory-easier/d0-start.yaml b/config/datasource/smart-factory-easier/d0-start.yaml new file mode 100644 index 0000000..0c61401 --- /dev/null +++ b/config/datasource/smart-factory-easier/d0-start.yaml @@ -0,0 +1,12 @@ +kind: datasource +name: "" +spec: + name: "" + group: "factory" + type: default + selection: genericProbability + distribution: [1.0] + eventData: + - activity: "" + transition: "GoodsDelivery" + duration: 0 \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/e0-order.yaml b/config/datasource/smart-factory-easier/e0-order.yaml index f2c8a6a..983cb08 100644 --- a/config/datasource/smart-factory-easier/e0-order.yaml +++ b/config/datasource/smart-factory-easier/e0-order.yaml @@ -3,14 +3,17 @@ name: "" spec: name: "" group: "factory" + type: objectCentric selection: genericProbability distribution: [1.0] + input: + - object: "order" + number: 1 eventData: - -activities: - - activity: "" - transition: "OutgoingStock" - duration: 0 + - activity: + name: "" output: - - object: - name: "order" - number: "1" \ No newline at end of file + - object: "order" + number: "1" + transition: "OutgoingStock" + duration: 0 diff --git a/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml b/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml index 7d109ec..e090f9d 100644 --- a/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml +++ b/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml @@ -3,25 +3,24 @@ name: "OutgoingStock" spec: name: "OutgoingStock" group: "factory" + type: objectCentric selection: genericProbability - distribution: [1.0] + distribution: [0.5, 0.5] input: - - object: - name: "order" + - object: "order" number: 1 eventData: - - activities: - - activity: "Sent to sawing machine" - transition: "SawingBar" - duration: 3 - output: - - object: - name: "barResource" - number: 1 - - activity: "Sent to assembly station" - transition: "Assembly" - duration: 2 - output: - - object: - name: "screw" - number: 13 \ No newline at end of file + - activity: + name: "Sent to sawing machine" + output: + - object: "barResource" + number: 1 + duration: 3 + transition: "SawingBar" + - activity: + name: "Sent to assembly station" + output: + - object: "screw" + number: 13 + duration: 2 + transition: "Assembly" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/e2-sawing-bar.yaml b/config/datasource/smart-factory-easier/e2-sawing-bar.yaml index 5685346..f79e746 100644 --- a/config/datasource/smart-factory-easier/e2-sawing-bar.yaml +++ b/config/datasource/smart-factory-easier/e2-sawing-bar.yaml @@ -3,18 +3,17 @@ name: "SawingBar" spec: name: "SawingBar" group: "factory" + type: objectCentric selection: genericProbability distribution: [1.0] input: - - object: - name: "barResource" + - object: "barResource" number: 1 eventData: - - activities: - - activity: "Sawed" - transition: "DrillingBar" - duration: 5 + - activity: + name: "Sawed" output: - - object: - name: "bar" - number: 4 \ No newline at end of file + - object: "bar" + number: 4 + transition: "DrillingBar" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/e3-drilling-bar.yaml b/config/datasource/smart-factory-easier/e3-drilling-bar.yaml index 7cee6be..639ea43 100644 --- a/config/datasource/smart-factory-easier/e3-drilling-bar.yaml +++ b/config/datasource/smart-factory-easier/e3-drilling-bar.yaml @@ -3,18 +3,17 @@ name: "DrillingBar" spec: name: "DrillingBar" group: "factory" + type: objectCentric selection: genericProbability distribution: [1.0] input: - - object: - name: "bar" + - object: "bar" number: 1 eventData: - - activities: - - activity: "Drilled" - transition: "SandingBar" - duration: 5 + - activity: + name: "Drilled" output: - - object: - name: "bar" - number: 1 \ No newline at end of file + - object: "bar" + number: 1 + transition: "SandingBar" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/e4-sanding-Bar.yaml b/config/datasource/smart-factory-easier/e4-sanding-Bar.yaml new file mode 100644 index 0000000..84d5845 --- /dev/null +++ b/config/datasource/smart-factory-easier/e4-sanding-Bar.yaml @@ -0,0 +1,19 @@ +kind: datasource +name: "SandingBar" +spec: + name: "SandingBar" + group: "factory" + type: objectCentric + selection: genericProbability + distribution: [1.0] + input: + - object: "bar" + number: 1 + eventData: + - activity: + name: "Sanded bar" + output: + - object: "bar" + number: 1 + transition: "Assembly" + duration: 5 diff --git a/config/datasource/smart-factory-easier/e5-assembly.yaml b/config/datasource/smart-factory-easier/e5-assembly.yaml index dbf51bb..b6d12b7 100644 --- a/config/datasource/smart-factory-easier/e5-assembly.yaml +++ b/config/datasource/smart-factory-easier/e5-assembly.yaml @@ -1,31 +1,35 @@ -ind: datasource +kind: datasource name: "Assembly" spec: name: "Assembly" group: "factory" + type: objectCentric selection: genericProbability distribution: [ 0.8, 0.1, 0.1 ] input: - - object: - name: "bar" + - object: "bar" number: 4 - - object: - name: "screw" + - object: "screw" number: 13 eventData: - - activities: - - activity: "Assembling completed" - duration: 10 - transition: "QualityControl" + - activity: + name: "Assembling completed" output: - - object: - name: "woodShelf" + - object: "woodShelf" number: 1 - - activities: - - activity: "Overheating" - transition: "" - duration: 2 - - activities: - - activity: "Item broke" - transition: "" - duration: 1 \ No newline at end of file + duration: 10 + transition: "Shipping" + - activity: + name: "Overheating" + output: + - object: "woodShelf" + number: 1 + transition: "" + duration: 2 + - activity: + name: "Item broke" + output: + - object: "woodShelf" + number: 1 + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/e7-shipping.yaml b/config/datasource/smart-factory-easier/e7-shipping.yaml index f2d50db..0949880 100644 --- a/config/datasource/smart-factory-easier/e7-shipping.yaml +++ b/config/datasource/smart-factory-easier/e7-shipping.yaml @@ -3,20 +3,24 @@ name: "Shipping" spec: name: "Shipping" group: "factory" + type: objectCentric selection: genericProbability distribution: [ 0.8, 0.2 ] input: - - object: - name: "woodShelf" + - object: "woodShelf" number: 1 eventData: - - activity: "Package waits for sending" + - activity: + name: "Package waits for sending" + output: + - object: "woodShelf" + number: 1 transition: "Shipping" duration: 180 - output: - - object: - name: "woodShelf" - number: 1 - - activity: "Package sent" + - activity: + name: "Package sent" + output: + - object: "woodShelf" + number: 1 transition: "" duration: 1 \ No newline at end of file diff --git a/distributed_event_factory/parser/datasource/event/transition/transition_parser.py b/distributed_event_factory/parser/datasource/event/transition/transition_parser.py index 369b9fd..b5715a3 100644 --- a/distributed_event_factory/parser/datasource/event/transition/transition_parser.py +++ b/distributed_event_factory/parser/datasource/event/transition/transition_parser.py @@ -1,6 +1,5 @@ from distributed_event_factory.parser.parser import Parser -from distributed_event_factory.provider.transition.transition.constant_transition import ConstantTransitionProvider, \ - ConstantTransitionProviderObjectCentric +from distributed_event_factory.provider.transition.transition.constant_transition import ConstantTransitionProvider class TransitionParser(Parser): @@ -14,6 +13,4 @@ def add_dependency(self, key: str, dependency): def parse(self, config): if isinstance(config, str): return ConstantTransitionProvider(config) - elif isinstance(config, dict): - return ConstantTransitionProviderObjectCentric(config["name"], self.dependencies["output"].parse(config["output"])) return self.dependencies[config["type"]].parse(config) \ No newline at end of file From dd87a4f9293db093334b5e72feb3d9ebb17ac8ab Mon Sep 17 00:00:00 2001 From: ulpi Date: Wed, 28 May 2025 22:14:42 +0200 Subject: [PATCH 064/124] add output in simulation --- distributed_event_factory/core/abstract_datasource.py | 4 ++++ distributed_event_factory/core/end_datasource.py | 7 ++++++- distributed_event_factory/core/start_datasource.py | 5 ++++- .../provider/activity/activity_provider.py | 10 ++++++++++ distributed_event_factory/provider/event/event_data.py | 4 ++-- .../provider/event/event_provider.py | 4 ++-- .../simulation/process_simulation.py | 8 +++++++- 7 files changed, 35 insertions(+), 7 deletions(-) diff --git a/distributed_event_factory/core/abstract_datasource.py b/distributed_event_factory/core/abstract_datasource.py index b0d24da..a8aa9a7 100644 --- a/distributed_event_factory/core/abstract_datasource.py +++ b/distributed_event_factory/core/abstract_datasource.py @@ -23,3 +23,7 @@ def get_id(self) -> DataSourceId: @abstractmethod def get_event_log(self) -> List[Event]: pass + + @abstractmethod + def get_input_objects(self): + pass diff --git a/distributed_event_factory/core/end_datasource.py b/distributed_event_factory/core/end_datasource.py index 3258220..595f41e 100644 --- a/distributed_event_factory/core/end_datasource.py +++ b/distributed_event_factory/core/end_datasource.py @@ -6,6 +6,8 @@ from distributed_event_factory.core.datasource_id import END_DATA_SOURCE_ID, DataSourceId from distributed_event_factory.core.event import EndEvent from distributed_event_factory.provider.event.event_provider import EventDataProvider, EndEventProvider +from provider.object.input.input_provider import InputObjectProvider + class EndDataSource(DataSource): def __init__(self): @@ -25,4 +27,7 @@ def get_id(self) -> DataSourceId: return END_DATA_SOURCE_ID def get_event_log(self) -> List[Event]: - return self.event_log \ No newline at end of file + return self.event_log + + def get_input_objects(self): + return InputObjectProvider().get_input_objects() \ No newline at end of file diff --git a/distributed_event_factory/core/start_datasource.py b/distributed_event_factory/core/start_datasource.py index 6a1e516..39f190f 100644 --- a/distributed_event_factory/core/start_datasource.py +++ b/distributed_event_factory/core/start_datasource.py @@ -26,4 +26,7 @@ def get_id(self) -> DataSourceId: return START_SENSOR_ID def get_event_log(self) -> List[AbstractEvent]: - return self.event_log \ No newline at end of file + return self.event_log + + def get_input_objects(self): + return None \ No newline at end of file diff --git a/distributed_event_factory/provider/activity/activity_provider.py b/distributed_event_factory/provider/activity/activity_provider.py index 7adaf18..4bce60b 100644 --- a/distributed_event_factory/provider/activity/activity_provider.py +++ b/distributed_event_factory/provider/activity/activity_provider.py @@ -7,6 +7,10 @@ class ActivityProvider(ABC): def get_activity(self): pass + @abstractmethod + def get_output(self): + pass + class ConstantActivityProvider(ActivityProvider): @@ -16,6 +20,9 @@ def __init__(self, activity_name): def get_activity(self): return self.activity_name + def get_output(self): + return None + class ObjectConstantActivityProvider(ActivityProvider): def __init__(self, activity_name, output): @@ -24,3 +31,6 @@ def __init__(self, activity_name, output): def get_activity(self): return self.activity_name + + def get_output(self): + return self.output diff --git a/distributed_event_factory/provider/event/event_data.py b/distributed_event_factory/provider/event/event_data.py index f806895..63a9cc4 100644 --- a/distributed_event_factory/provider/event/event_data.py +++ b/distributed_event_factory/provider/event/event_data.py @@ -20,5 +20,5 @@ def get_duration(self): def get_next_sensor(self): return self.transition_provider.get_transition() - def get_activity(self): - return self.activity_provider.get_activity() + def get_activity_provider(self): + return self.activity_provider diff --git a/distributed_event_factory/provider/event/event_provider.py b/distributed_event_factory/provider/event/event_provider.py index 788210a..6305449 100644 --- a/distributed_event_factory/provider/event/event_provider.py +++ b/distributed_event_factory/provider/event/event_provider.py @@ -43,8 +43,8 @@ def get_event_data(self): self.transition_provider ) - def get_activity(self): - return self.activity_provider.get_activity() + def get_activity_provider(self): + return self.activity_provider def get_duration(self): return self.duration_provider.get_duration() diff --git a/distributed_event_factory/simulation/process_simulation.py b/distributed_event_factory/simulation/process_simulation.py index 9e7e600..f777857 100644 --- a/distributed_event_factory/simulation/process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -23,6 +23,7 @@ def __init__( self.datasources: Dict[str, DataSource] = data_sources self.case_id_provider = case_id_provider self.last_timestamp = datetime.now() + self.object_store: Dict[str, int] = {} def simulate(self) -> Event: emit_event = None @@ -42,7 +43,12 @@ def simulate(self) -> Event: current_data_source = self._get_sensor_with_id(token.data_source_id) event = current_data_source.get_event_data() next_datasource = event.get_transition() - activity = event.get_activity() + next_input_necessary = current_data_source + activity = event.get_activity_provider().get_activity() + output = event.get_activity_provider().get_output() + if output is not None: + for element in output : + self.object_store[element.objectName] = element.numberOfObject token.add_to_last_timestamp(event.get_duration()) token.set_data_source_id(self.datasources[next_datasource].get_id()) self.last_timestamp = token.last_timestamp From 1fc51f426339ee5a254f4680ab1d2bcbcdf90bdf Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 29 May 2025 11:59:43 +0200 Subject: [PATCH 065/124] add input and output logic --- .gitignore | 11 +++++++++++ .../smart-factory-easier/d0-start.yaml | 12 ------------ .../core/abstract_datasource.py | 6 +++--- .../core/abstract_object_source.py | 6 +++--- .../core/core_decisions_datasource.py | 5 ++++- .../core/end_datasource.py | 4 ++-- .../core/start_datasource.py | 4 ++-- .../simulation/process_simulation.py | 19 +++++++++++++++++-- 8 files changed, 42 insertions(+), 25 deletions(-) delete mode 100644 config/datasource/smart-factory-easier/d0-start.yaml diff --git a/.gitignore b/.gitignore index 2c9a58d..8d8d353 100644 --- a/.gitignore +++ b/.gitignore @@ -150,3 +150,14 @@ cython_debug/ # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ +.DS_Store +distributed_event_factory/.DS_Store +distributed_event_factory/core/.DS_Store +distributed_event_factory/parser/.DS_Store +distributed_event_factory/parser/datasource/.DS_Store +distributed_event_factory/parser/simulation/.DS_Store +distributed_event_factory/parser/sink/.DS_Store +distributed_event_factory/provider/.DS_Store +distributed_event_factory/provider/data/.DS_Store +distributed_event_factory/provider/eventselection/.DS_Store +distributed_event_factory/provider/transition/.DS_Store diff --git a/config/datasource/smart-factory-easier/d0-start.yaml b/config/datasource/smart-factory-easier/d0-start.yaml deleted file mode 100644 index 0c61401..0000000 --- a/config/datasource/smart-factory-easier/d0-start.yaml +++ /dev/null @@ -1,12 +0,0 @@ -kind: datasource -name: "" -spec: - name: "" - group: "factory" - type: default - selection: genericProbability - distribution: [1.0] - eventData: - - activity: "" - transition: "GoodsDelivery" - duration: 0 \ No newline at end of file diff --git a/distributed_event_factory/core/abstract_datasource.py b/distributed_event_factory/core/abstract_datasource.py index a8aa9a7..7ca6fbe 100644 --- a/distributed_event_factory/core/abstract_datasource.py +++ b/distributed_event_factory/core/abstract_datasource.py @@ -24,6 +24,6 @@ def get_id(self) -> DataSourceId: def get_event_log(self) -> List[Event]: pass - @abstractmethod - def get_input_objects(self): - pass + #@abstractmethod + #def get_input_objects(self): + # pass diff --git a/distributed_event_factory/core/abstract_object_source.py b/distributed_event_factory/core/abstract_object_source.py index 35138c7..a8e6a7f 100644 --- a/distributed_event_factory/core/abstract_object_source.py +++ b/distributed_event_factory/core/abstract_object_source.py @@ -16,6 +16,6 @@ def get_id(self) -> ObjectId: def get_object_type(self) -> str: pass - @abstractmethod - def get_input_objects(self) -> []: - pass + #@abstractmethod + #def get_input_objects(self) -> []: + # pass diff --git a/distributed_event_factory/core/core_decisions_datasource.py b/distributed_event_factory/core/core_decisions_datasource.py index ea0f9ee..24ea43d 100644 --- a/distributed_event_factory/core/core_decisions_datasource.py +++ b/distributed_event_factory/core/core_decisions_datasource.py @@ -8,4 +8,7 @@ def __init__( self.type_parser= type_parser def get_event_data(self): - return self.simulation_provider.get_event_data() \ No newline at end of file + return self.simulation_provider.get_event_data() + + def get_input_data(self): + return self.type_parser \ No newline at end of file diff --git a/distributed_event_factory/core/end_datasource.py b/distributed_event_factory/core/end_datasource.py index 595f41e..5a791c5 100644 --- a/distributed_event_factory/core/end_datasource.py +++ b/distributed_event_factory/core/end_datasource.py @@ -29,5 +29,5 @@ def get_id(self) -> DataSourceId: def get_event_log(self) -> List[Event]: return self.event_log - def get_input_objects(self): - return InputObjectProvider().get_input_objects() \ No newline at end of file + #def get_input_objects(self): + # return InputObjectProvider().get_input_objects() \ No newline at end of file diff --git a/distributed_event_factory/core/start_datasource.py b/distributed_event_factory/core/start_datasource.py index 39f190f..a8e5594 100644 --- a/distributed_event_factory/core/start_datasource.py +++ b/distributed_event_factory/core/start_datasource.py @@ -28,5 +28,5 @@ def get_id(self) -> DataSourceId: def get_event_log(self) -> List[AbstractEvent]: return self.event_log - def get_input_objects(self): - return None \ No newline at end of file + #def get_input_objects(self): + # return None \ No newline at end of file diff --git a/distributed_event_factory/simulation/process_simulation.py b/distributed_event_factory/simulation/process_simulation.py index f777857..c7ba458 100644 --- a/distributed_event_factory/simulation/process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -39,13 +39,22 @@ def simulate(self) -> Event: if token.data_source_id == START_SENSOR_ID: token.data_source_id = DataSourceId(self._get_sensor_with_id(START_SENSOR_ID).get_event_data().get_transition()) - + self.object_store["order"] = 1 + self.object_store["bar"] = 100 + self.object_store["screw"] = 100 current_data_source = self._get_sensor_with_id(token.data_source_id) event = current_data_source.get_event_data() + necessary_input = current_data_source.event_provider.type_parser + if not self.check_input_in_object_store(necessary_input): + raise ValueError("Input not found") next_datasource = event.get_transition() - next_input_necessary = current_data_source activity = event.get_activity_provider().get_activity() output = event.get_activity_provider().get_output() + if necessary_input is not None: + for element in necessary_input: + self.object_store[element.objectName] = self.object_store.get(element.objectName)-element.numberOfObject + if self.object_store.get(element.objectName) == 0: + self.object_store.pop(element.objectName) if output is not None: for element in output : self.object_store[element.objectName] = element.numberOfObject @@ -77,6 +86,12 @@ def _get_sensor_with_id(self, data_source_id) -> DataSource: if self.datasources[sensor].get_id() == data_source_id: return self.datasources[sensor] raise ValueError("Sensor not found") + + def check_input_in_object_store(self, input_objects): + for obj in input_objects: + if not self.object_store.__contains__(obj.objectName) or self.object_store.get(obj.objectName) is not obj.numberOfObject : + return False + return True class Token: From 4448d13ea35c878afaa481fdd7d2ad4c1bdd396a Mon Sep 17 00:00:00 2001 From: ulpi Date: Mon, 2 Jun 2025 15:14:53 +0200 Subject: [PATCH 066/124] add sinks and fix object adding and removing --- config/sink/console-sink.yaml | 5 +++ .../simulation/process_simulation.py | 38 +++++++++++++------ 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/config/sink/console-sink.yaml b/config/sink/console-sink.yaml index 314d4c4..e919d8b 100644 --- a/config/sink/console-sink.yaml +++ b/config/sink/console-sink.yaml @@ -11,6 +11,11 @@ spec: - "QualityControl" - "Packaging" - "Shipping" + - "OutgoingStock" + - "Assembly" + - "SawingBar" + - "DrillingBar" + - "SandingBar" - "A" - "B" - "C" diff --git a/distributed_event_factory/simulation/process_simulation.py b/distributed_event_factory/simulation/process_simulation.py index c7ba458..be75f51 100644 --- a/distributed_event_factory/simulation/process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -39,9 +39,7 @@ def simulate(self) -> Event: if token.data_source_id == START_SENSOR_ID: token.data_source_id = DataSourceId(self._get_sensor_with_id(START_SENSOR_ID).get_event_data().get_transition()) - self.object_store["order"] = 1 - self.object_store["bar"] = 100 - self.object_store["screw"] = 100 + self.add_start_supplies_in_warehouse() current_data_source = self._get_sensor_with_id(token.data_source_id) event = current_data_source.get_event_data() necessary_input = current_data_source.event_provider.type_parser @@ -50,14 +48,8 @@ def simulate(self) -> Event: next_datasource = event.get_transition() activity = event.get_activity_provider().get_activity() output = event.get_activity_provider().get_output() - if necessary_input is not None: - for element in necessary_input: - self.object_store[element.objectName] = self.object_store.get(element.objectName)-element.numberOfObject - if self.object_store.get(element.objectName) == 0: - self.object_store.pop(element.objectName) - if output is not None: - for element in output : - self.object_store[element.objectName] = element.numberOfObject + self.remove_used_input(necessary_input) + self.add_produced_output(output) token.add_to_last_timestamp(event.get_duration()) token.set_data_source_id(self.datasources[next_datasource].get_id()) self.last_timestamp = token.last_timestamp @@ -66,6 +58,28 @@ def simulate(self) -> Event: return emit_event + def add_start_supplies_in_warehouse(self): + self.object_store["order"] = 100 + self.object_store["bar"] = 1000 + self.object_store["screw"] = 1000 + + def add_produced_output(self, output): + if output is not None: + for element in output: + if self.object_store.get(element.objectName) is None: + self.object_store[element.objectName] = element.numberOfObject + else: + self.object_store[element.objectName] = self.object_store.get( + element.objectName) + element.numberOfObject + + def remove_used_input(self, necessary_input): + if necessary_input is not None: + for element in necessary_input: + self.object_store[element.objectName] = self.object_store.get( + element.objectName) - element.numberOfObject + if self.object_store.get(element.objectName) == 0: + self.object_store.pop(element.objectName) + def start_new_case(self): case_id = self.case_id_provider.get() token = Token(case_id, START_SENSOR_ID, self.last_timestamp, None) @@ -89,7 +103,7 @@ def _get_sensor_with_id(self, data_source_id) -> DataSource: def check_input_in_object_store(self, input_objects): for obj in input_objects: - if not self.object_store.__contains__(obj.objectName) or self.object_store.get(obj.objectName) is not obj.numberOfObject : + if not self.object_store.__contains__(obj.objectName) or self.object_store.get(obj.objectName) < obj.numberOfObject : return False return True From 26eafbdac0b0c82bb299a3507fac19aa3f4ccde9 Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 5 Jun 2025 08:48:05 +0200 Subject: [PATCH 067/124] add input and output objects to event log --- distributed_event_factory/event_factory.py | 2 +- .../provider/object/input/input_provider.py | 3 + .../transition/output/output_provider.py | 3 + .../simulation/countbased.py | 5 +- .../simulation/loadtest.py | 7 +- .../simulation/object_event.py | 20 ++++++ .../simulation/process_simulation.py | 67 ++++++++++++++----- .../simulation/stream.py | 5 +- 8 files changed, 88 insertions(+), 24 deletions(-) create mode 100644 distributed_event_factory/simulation/object_event.py diff --git a/distributed_event_factory/event_factory.py b/distributed_event_factory/event_factory.py index c8a53e3..7888df5 100644 --- a/distributed_event_factory/event_factory.py +++ b/distributed_event_factory/event_factory.py @@ -113,4 +113,4 @@ def add_file(self, filename): def run(self, hook=lambda: None): for simulation in self.simulations: - self.simulations[simulation].run_simulation(self.datasources, self.sinks, hook) \ No newline at end of file + self.simulations[simulation].run_simulation(self.datasources, self.sinks, self.objects, hook) \ No newline at end of file diff --git a/distributed_event_factory/provider/object/input/input_provider.py b/distributed_event_factory/provider/object/input/input_provider.py index 532aac6..f92d3ab 100644 --- a/distributed_event_factory/provider/object/input/input_provider.py +++ b/distributed_event_factory/provider/object/input/input_provider.py @@ -2,3 +2,6 @@ class InputObjectProvider: def __init__(self, objectName, numberOfObject): self.objectName = objectName self.numberOfObject = numberOfObject + + def __str__(self): + return str(self.__dict__) diff --git a/distributed_event_factory/provider/transition/output/output_provider.py b/distributed_event_factory/provider/transition/output/output_provider.py index 203711e..abad041 100644 --- a/distributed_event_factory/provider/transition/output/output_provider.py +++ b/distributed_event_factory/provider/transition/output/output_provider.py @@ -2,3 +2,6 @@ class OutputObjectProvider: def __init__(self, objectName, numberOfObject): self.objectName = objectName self.numberOfObject = numberOfObject + + def __str__(self): + return str(self.__dict__) \ No newline at end of file diff --git a/distributed_event_factory/simulation/countbased.py b/distributed_event_factory/simulation/countbased.py index 3880cff..3969a34 100644 --- a/distributed_event_factory/simulation/countbased.py +++ b/distributed_event_factory/simulation/countbased.py @@ -13,12 +13,13 @@ def __init__(self, simulation_steps: int, case_id_provider: CaseIdProvider, max_ self.sinks = dict() self.max_concurrent_cases = max_concurrent_cases - def run_simulation(self, datasources, sinks, hook=lambda: None): + def run_simulation(self, datasources, sinks, objects, hook=lambda: None): self.setup_datasource_sink_mapping(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=datasources, - max_concurrent_cases=self.max_concurrent_cases + max_concurrent_cases=self.max_concurrent_cases, + objects=objects ) for i in range(self.simulation_steps): diff --git a/distributed_event_factory/simulation/loadtest.py b/distributed_event_factory/simulation/loadtest.py index 0609eea..9ce7694 100644 --- a/distributed_event_factory/simulation/loadtest.py +++ b/distributed_event_factory/simulation/loadtest.py @@ -1,4 +1,6 @@ from typing import Dict + +from core.object import Object from distributed_event_factory.core.datasource import DataSource from distributed_event_factory.provider.data.case_provider import CaseIdProvider from distributed_event_factory.provider.data.count_provider import CountProvider @@ -35,7 +37,7 @@ def start_simulation(self, sinks): for sink in self.sink: sink.start() - def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_mapping: Dict[str, LoadTestHttpSink], + def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_mapping: Dict[str, LoadTestHttpSink], objects: Dict[str, Object], hook=lambda: None): self.setup_datasource_sink_mapping(datasource_sink_mapping) for sink in datasource_sink_mapping: @@ -44,7 +46,8 @@ def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_ma process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=data_sources, - max_concurrent_cases=self.max_concurrent_cases + max_concurrent_cases=self.max_concurrent_cases, + objects=objects ) iteration = 0 while True: diff --git a/distributed_event_factory/simulation/object_event.py b/distributed_event_factory/simulation/object_event.py new file mode 100644 index 0000000..658a1a5 --- /dev/null +++ b/distributed_event_factory/simulation/object_event.py @@ -0,0 +1,20 @@ +from process_mining_core.datastructure.core.event import Event + + +class ObjectEvent(Event): + def __init__(self, timestamp, activity, case_id, node, group_id, input, output): + Event.__init__(self, timestamp, activity, case_id, node, group_id) + self.input = input + self.output = output + + def getInput(self): + return self.input + + def getOutput(self): + return self.output + + def getDifference(self): + return self.input + "->" + self.output + + def __str__(self): + return str(self.__dict__) \ No newline at end of file diff --git a/distributed_event_factory/simulation/process_simulation.py b/distributed_event_factory/simulation/process_simulation.py index be75f51..d08c829 100644 --- a/distributed_event_factory/simulation/process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -1,21 +1,25 @@ import string from datetime import datetime, timedelta from queue import PriorityQueue -from typing import Dict +from typing import Dict, List +from core.object import Object from distributed_event_factory.provider.data.count_provider import CountProvider from process_mining_core.datastructure.core.event import Event from distributed_event_factory.core.datasource import DataSource from distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID, DataSourceId from distributed_event_factory.provider.data.case_provider import CaseIdProvider +from simulation.object_event import ObjectEvent + class ProcessSimulator: def __init__( self, data_sources: Dict[str, DataSource], case_id_provider: CaseIdProvider, - max_concurrent_cases: CountProvider + max_concurrent_cases: CountProvider, + objects: Dict[str, Object] ): self.max_concurrent_cases = max_concurrent_cases @@ -24,6 +28,8 @@ def __init__( self.case_id_provider = case_id_provider self.last_timestamp = datetime.now() self.object_store: Dict[str, int] = {} + self.object_store_objects: List[Object] = [] + self.objects = objects def simulate(self) -> Event: emit_event = None @@ -38,7 +44,8 @@ def simulate(self) -> Event: token = self.start_new_case() if token.data_source_id == START_SENSOR_ID: - token.data_source_id = DataSourceId(self._get_sensor_with_id(START_SENSOR_ID).get_event_data().get_transition()) + token.data_source_id = DataSourceId( + self._get_sensor_with_id(START_SENSOR_ID).get_event_data().get_transition()) self.add_start_supplies_in_warehouse() current_data_source = self._get_sensor_with_id(token.data_source_id) event = current_data_source.get_event_data() @@ -53,15 +60,23 @@ def simulate(self) -> Event: token.add_to_last_timestamp(event.get_duration()) token.set_data_source_id(self.datasources[next_datasource].get_id()) self.last_timestamp = token.last_timestamp - token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source) + if (necessary_input is not None and necessary_input) or output is not None: + token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source, + necessary_input, output) + else: + token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source) self.tokens.put(token) return emit_event def add_start_supplies_in_warehouse(self): self.object_store["order"] = 100 - self.object_store["bar"] = 1000 - self.object_store["screw"] = 1000 + self.object_store["bar"] = 100 + self.object_store["screw"] = 100 + for i in range(100): + self.object_store_objects.append(self.objects.get("order")) + self.object_store_objects.append(self.objects.get("bar")) + self.object_store_objects.append(self.objects.get("screw")) def add_produced_output(self, output): if output is not None: @@ -71,6 +86,8 @@ def add_produced_output(self, output): else: self.object_store[element.objectName] = self.object_store.get( element.objectName) + element.numberOfObject + for i in range(0, element.numberOfObject): + self.object_store_objects.append(self.objects.get(element.objectName)) def remove_used_input(self, necessary_input): if necessary_input is not None: @@ -80,30 +97,46 @@ def remove_used_input(self, necessary_input): if self.object_store.get(element.objectName) == 0: self.object_store.pop(element.objectName) + for i in range(0, element.numberOfObject): + self.object_store_objects.remove(self.objects.get(element.objectName)) + def start_new_case(self): case_id = self.case_id_provider.get() token = Token(case_id, START_SENSOR_ID, self.last_timestamp, None) return token - def _build_event(self, case, activity, timestamp, datasource): + def _build_event(self, case, activity, timestamp, datasource, input=None, output=None): if hasattr(datasource, "sensor_id"): - return Event( - timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), - activity=activity, - case_id=case, - node=datasource.sensor_id.get_name(), - group_id=datasource.group_id - ) + if input and output: + return ObjectEvent( + timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), + activity=activity, + case_id=case, + node=datasource.sensor_id.get_name(), + group_id=datasource.group_id, + input=", ".join(str(obj) for obj in input), + output=", ".join(str(obj) for obj in output) + ) + else: + return Event( + timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), + activity=activity, + case_id=case, + node=datasource.sensor_id.get_name(), + group_id=datasource.group_id + ) + return None def _get_sensor_with_id(self, data_source_id) -> DataSource: for sensor in self.datasources: if self.datasources[sensor].get_id() == data_source_id: return self.datasources[sensor] raise ValueError("Sensor not found") - + def check_input_in_object_store(self, input_objects): for obj in input_objects: - if not self.object_store.__contains__(obj.objectName) or self.object_store.get(obj.objectName) < obj.numberOfObject : + if not self.object_store.__contains__(obj.objectName) or self.object_store.get( + obj.objectName) < obj.numberOfObject: return False return True @@ -128,4 +161,4 @@ def add_to_last_timestamp(self, duration): self.last_timestamp += timedelta(minutes=duration) def __lt__(self, other): - return self.last_timestamp < other.last_timestamp \ No newline at end of file + return self.last_timestamp < other.last_timestamp diff --git a/distributed_event_factory/simulation/stream.py b/distributed_event_factory/simulation/stream.py index f4cddcb..03a0b6c 100644 --- a/distributed_event_factory/simulation/stream.py +++ b/distributed_event_factory/simulation/stream.py @@ -20,12 +20,13 @@ def __init__( self.max_concurrent_cases=max_concurrent_cases self.sinks = dict() - def run_simulation(self, datasources, sinks, hook): + def run_simulation(self, datasources, sinks, objects, hook): self.setup_datasource_sink_mapping(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=datasources, - max_concurrent_cases=self.max_concurrent_cases + max_concurrent_cases=self.max_concurrent_cases, + objects=objects, ) while True: with ScheduledThreadPoolExecutor() as executor: From dd80e455eed2f12e1eb491f0f8b3bc59cbf15ee3 Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 5 Jun 2025 11:17:37 +0200 Subject: [PATCH 068/124] add routing logic base --- .../e1-outgoing-stock.yaml | 4 ++-- .../smart-factory-easier/routing.yaml | 15 ++++++++++---- .../core/datasource_id.py | 1 + distributed_event_factory/core/route.py | 19 ++++++++++++++++-- distributed_event_factory/event_factory.py | 2 +- .../parser/route/route_parser.py | 2 +- .../simulation/countbased.py | 5 +++-- .../simulation/loadtest.py | 6 ++++-- .../simulation/process_simulation.py | 20 +++++++++++++++++-- .../simulation/stream.py | 3 ++- 10 files changed, 60 insertions(+), 17 deletions(-) diff --git a/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml b/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml index e090f9d..8195991 100644 --- a/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml +++ b/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml @@ -16,11 +16,11 @@ spec: - object: "barResource" number: 1 duration: 3 - transition: "SawingBar" + transition: "" - activity: name: "Sent to assembly station" output: - object: "screw" number: 13 duration: 2 - transition: "Assembly" \ No newline at end of file + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/routing.yaml b/config/datasource/smart-factory-easier/routing.yaml index 8d0ed4f..26f0048 100644 --- a/config/datasource/smart-factory-easier/routing.yaml +++ b/config/datasource/smart-factory-easier/routing.yaml @@ -2,10 +2,17 @@ kind: route name: "default" spec: routes: - - route: "Transfer from o0 - o1" - start: "Test1" - end: "OutgoingStock" + - routeForActivity: "Sent to sawing machine" + start: "OutgoingStock" + end: "SawingBar" transferObjects: - - name: "order" + - name: "barResource" + number: 1 + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "OutgoingStock" + end: "Assembly" + transferObjects: + - name: "barResource" number: 1 duration: 3 \ No newline at end of file diff --git a/distributed_event_factory/core/datasource_id.py b/distributed_event_factory/core/datasource_id.py index 58ab972..2c72e0b 100644 --- a/distributed_event_factory/core/datasource_id.py +++ b/distributed_event_factory/core/datasource_id.py @@ -14,3 +14,4 @@ def get_name(self): START_SENSOR_ID = DataSourceId("") END_DATA_SOURCE_ID = DataSourceId("") +ROUTING_ID = DataSourceId("") diff --git a/distributed_event_factory/core/route.py b/distributed_event_factory/core/route.py index 800c330..3a58afb 100644 --- a/distributed_event_factory/core/route.py +++ b/distributed_event_factory/core/route.py @@ -5,15 +5,30 @@ class Route: def __init__( self, - route_name: str, + route_for_activity: str, start: str, end: str, transfer_objects: List[Tuple[str, int]], duration: int ): - self.route_name : route_name + self.route_for_activity = route_for_activity self.start = start self.end = end self.transfer_objects = transfer_objects self.duration = duration + + def get_route_for_activity(self): + return self.route_for_activity + + def get_start(self): + return self.start + + def get_end(self): + return self.end + + def get_transfer_objects(self): + return self.transfer_objects + + def get_duration(self): + return self.duration \ No newline at end of file diff --git a/distributed_event_factory/event_factory.py b/distributed_event_factory/event_factory.py index 7888df5..dc1f8c9 100644 --- a/distributed_event_factory/event_factory.py +++ b/distributed_event_factory/event_factory.py @@ -113,4 +113,4 @@ def add_file(self, filename): def run(self, hook=lambda: None): for simulation in self.simulations: - self.simulations[simulation].run_simulation(self.datasources, self.sinks, self.objects, hook) \ No newline at end of file + self.simulations[simulation].run_simulation(self.datasources, self.sinks, self.objects, self.routes, hook) \ No newline at end of file diff --git a/distributed_event_factory/parser/route/route_parser.py b/distributed_event_factory/parser/route/route_parser.py index 4c38ed5..c33d5e7 100644 --- a/distributed_event_factory/parser/route/route_parser.py +++ b/distributed_event_factory/parser/route/route_parser.py @@ -16,7 +16,7 @@ def parse(self, config): route_list = [] for route in config["routes"]: route_list.append(Route( - route_name=route["route"], + route_for_activity=route["routeForActivity"], start=route["start"], end=route["end"], transfer_objects=route["transferObjects"], diff --git a/distributed_event_factory/simulation/countbased.py b/distributed_event_factory/simulation/countbased.py index 3969a34..2721d80 100644 --- a/distributed_event_factory/simulation/countbased.py +++ b/distributed_event_factory/simulation/countbased.py @@ -13,13 +13,14 @@ def __init__(self, simulation_steps: int, case_id_provider: CaseIdProvider, max_ self.sinks = dict() self.max_concurrent_cases = max_concurrent_cases - def run_simulation(self, datasources, sinks, objects, hook=lambda: None): + def run_simulation(self, datasources, sinks, objects, routes, hook=lambda: None): self.setup_datasource_sink_mapping(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=datasources, max_concurrent_cases=self.max_concurrent_cases, - objects=objects + objects=objects, + routes=routes ) for i in range(self.simulation_steps): diff --git a/distributed_event_factory/simulation/loadtest.py b/distributed_event_factory/simulation/loadtest.py index 9ce7694..41a321f 100644 --- a/distributed_event_factory/simulation/loadtest.py +++ b/distributed_event_factory/simulation/loadtest.py @@ -1,6 +1,7 @@ from typing import Dict from core.object import Object +from core.route import Route from distributed_event_factory.core.datasource import DataSource from distributed_event_factory.provider.data.case_provider import CaseIdProvider from distributed_event_factory.provider.data.count_provider import CountProvider @@ -37,7 +38,7 @@ def start_simulation(self, sinks): for sink in self.sink: sink.start() - def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_mapping: Dict[str, LoadTestHttpSink], objects: Dict[str, Object], + def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_mapping: Dict[str, LoadTestHttpSink], objects: Dict[str, Object], routes: Dict[str, Route], hook=lambda: None): self.setup_datasource_sink_mapping(datasource_sink_mapping) for sink in datasource_sink_mapping: @@ -47,7 +48,8 @@ def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_ma case_id_provider=self.case_id_provider, data_sources=data_sources, max_concurrent_cases=self.max_concurrent_cases, - objects=objects + objects=objects, + routes = routes ) iteration = 0 while True: diff --git a/distributed_event_factory/simulation/process_simulation.py b/distributed_event_factory/simulation/process_simulation.py index d08c829..645c8e7 100644 --- a/distributed_event_factory/simulation/process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -3,7 +3,9 @@ from queue import PriorityQueue from typing import Dict, List +from core.datasource_id import ROUTING_ID from core.object import Object +from core.route import Route from distributed_event_factory.provider.data.count_provider import CountProvider from process_mining_core.datastructure.core.event import Event @@ -19,7 +21,8 @@ def __init__( data_sources: Dict[str, DataSource], case_id_provider: CaseIdProvider, max_concurrent_cases: CountProvider, - objects: Dict[str, Object] + objects: Dict[str, Object], + routes: Dict[str, Route] ): self.max_concurrent_cases = max_concurrent_cases @@ -30,6 +33,7 @@ def __init__( self.object_store: Dict[str, int] = {} self.object_store_objects: List[Object] = [] self.objects = objects + self.routes = routes def simulate(self) -> Event: emit_event = None @@ -57,8 +61,8 @@ def simulate(self) -> Event: output = event.get_activity_provider().get_output() self.remove_used_input(necessary_input) self.add_produced_output(output) + self.set_next_datasource_token(activity, current_data_source, next_datasource, token) token.add_to_last_timestamp(event.get_duration()) - token.set_data_source_id(self.datasources[next_datasource].get_id()) self.last_timestamp = token.last_timestamp if (necessary_input is not None and necessary_input) or output is not None: token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source, @@ -69,6 +73,18 @@ def simulate(self) -> Event: return emit_event + def set_next_datasource_token(self, activity, current_data_source, next_datasource, token): + if next_datasource == ROUTING_ID.get_name(): + start_point = current_data_source.sensor_id.id + for route in self.routes.get("default"): + if route.get_route_for_activity() == activity and route.get_start() == start_point: + token.add_to_last_timestamp(route.get_duration()) + next_datasource = route.get_end() + token.set_data_source_id(self.datasources[next_datasource].get_id()) + return + else: + token.set_data_source_id(self.datasources[next_datasource].get_id()) + def add_start_supplies_in_warehouse(self): self.object_store["order"] = 100 self.object_store["bar"] = 100 diff --git a/distributed_event_factory/simulation/stream.py b/distributed_event_factory/simulation/stream.py index 03a0b6c..41dd78f 100644 --- a/distributed_event_factory/simulation/stream.py +++ b/distributed_event_factory/simulation/stream.py @@ -20,13 +20,14 @@ def __init__( self.max_concurrent_cases=max_concurrent_cases self.sinks = dict() - def run_simulation(self, datasources, sinks, objects, hook): + def run_simulation(self, datasources, sinks, objects, routes, hook): self.setup_datasource_sink_mapping(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=datasources, max_concurrent_cases=self.max_concurrent_cases, objects=objects, + routes=routes ) while True: with ScheduledThreadPoolExecutor() as executor: From da8252d96534d3e5f307a4fc4322e778c7afba66 Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 6 Jun 2025 14:35:28 +0200 Subject: [PATCH 069/124] add object states --- .../smart-factory-easier/e0-order.yaml | 2 + .../e1-outgoing-stock.yaml | 3 + .../smart-factory-easier/e2-sawing-bar.yaml | 2 + .../smart-factory-easier/e3-drilling-bar.yaml | 2 + .../smart-factory-easier/e4-sanding-Bar.yaml | 2 + .../smart-factory-easier/e5-assembly.yaml | 5 + .../smart-factory-easier/e7-shipping.yaml | 3 + .../smart-factory-easier/woodShelf.yaml | 4 +- distributed_event_factory/core/object.py | 20 ++- .../datasource/event/input/input_parser.py | 2 +- .../datasource/event/output/output_parser.py | 2 +- .../provider/object/input/input_provider.py | 3 +- .../transition/output/output_provider.py | 8 +- .../simulation/process_simulation.py | 141 ++++++++++++++---- 14 files changed, 159 insertions(+), 40 deletions(-) diff --git a/config/datasource/smart-factory-easier/e0-order.yaml b/config/datasource/smart-factory-easier/e0-order.yaml index 983cb08..13413ef 100644 --- a/config/datasource/smart-factory-easier/e0-order.yaml +++ b/config/datasource/smart-factory-easier/e0-order.yaml @@ -9,11 +9,13 @@ spec: input: - object: "order" number: 1 + lastState: "" eventData: - activity: name: "" output: - object: "order" number: "1" + change: "" transition: "OutgoingStock" duration: 0 diff --git a/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml b/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml index 8195991..2bc5623 100644 --- a/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml +++ b/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml @@ -9,12 +9,14 @@ spec: input: - object: "order" number: 1 + lastState: "" eventData: - activity: name: "Sent to sawing machine" output: - object: "barResource" number: 1 + change: "" duration: 3 transition: "" - activity: @@ -22,5 +24,6 @@ spec: output: - object: "screw" number: 13 + change: "" duration: 2 transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/e2-sawing-bar.yaml b/config/datasource/smart-factory-easier/e2-sawing-bar.yaml index f79e746..d7cd66a 100644 --- a/config/datasource/smart-factory-easier/e2-sawing-bar.yaml +++ b/config/datasource/smart-factory-easier/e2-sawing-bar.yaml @@ -9,11 +9,13 @@ spec: input: - object: "barResource" number: 1 + lastState: "" eventData: - activity: name: "Sawed" output: - object: "bar" number: 4 + change: "divided Resource" transition: "DrillingBar" duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/e3-drilling-bar.yaml b/config/datasource/smart-factory-easier/e3-drilling-bar.yaml index 639ea43..7173455 100644 --- a/config/datasource/smart-factory-easier/e3-drilling-bar.yaml +++ b/config/datasource/smart-factory-easier/e3-drilling-bar.yaml @@ -9,11 +9,13 @@ spec: input: - object: "bar" number: 1 + lastState: "divided Resource" eventData: - activity: name: "Drilled" output: - object: "bar" number: 1 + change: "drilled" transition: "SandingBar" duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/e4-sanding-Bar.yaml b/config/datasource/smart-factory-easier/e4-sanding-Bar.yaml index 84d5845..b6df4cb 100644 --- a/config/datasource/smart-factory-easier/e4-sanding-Bar.yaml +++ b/config/datasource/smart-factory-easier/e4-sanding-Bar.yaml @@ -9,11 +9,13 @@ spec: input: - object: "bar" number: 1 + lastState: "drilled" eventData: - activity: name: "Sanded bar" output: - object: "bar" number: 1 + change: "sanded" transition: "Assembly" duration: 5 diff --git a/config/datasource/smart-factory-easier/e5-assembly.yaml b/config/datasource/smart-factory-easier/e5-assembly.yaml index b6d12b7..eea58d5 100644 --- a/config/datasource/smart-factory-easier/e5-assembly.yaml +++ b/config/datasource/smart-factory-easier/e5-assembly.yaml @@ -9,14 +9,17 @@ spec: input: - object: "bar" number: 4 + lastState: "sanded" - object: "screw" number: 13 + lastState: "" eventData: - activity: name: "Assembling completed" output: - object: "woodShelf" number: 1 + change: "assembled" duration: 10 transition: "Shipping" - activity: @@ -24,6 +27,7 @@ spec: output: - object: "woodShelf" number: 1 + change: "overheated" transition: "" duration: 2 - activity: @@ -31,5 +35,6 @@ spec: output: - object: "woodShelf" number: 1 + change: "broke" transition: "" duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/e7-shipping.yaml b/config/datasource/smart-factory-easier/e7-shipping.yaml index 0949880..fd9ea47 100644 --- a/config/datasource/smart-factory-easier/e7-shipping.yaml +++ b/config/datasource/smart-factory-easier/e7-shipping.yaml @@ -9,12 +9,14 @@ spec: input: - object: "woodShelf" number: 1 + lastState: "" eventData: - activity: name: "Package waits for sending" output: - object: "woodShelf" number: 1 + change: "" transition: "Shipping" duration: 180 - activity: @@ -22,5 +24,6 @@ spec: output: - object: "woodShelf" number: 1 + change: "" transition: "" duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/woodShelf.yaml b/config/datasource/smart-factory-easier/woodShelf.yaml index ae2eb42..a25ac81 100644 --- a/config/datasource/smart-factory-easier/woodShelf.yaml +++ b/config/datasource/smart-factory-easier/woodShelf.yaml @@ -1,7 +1,7 @@ kind: object -name: "woodenShelf" +name: "woodShelf" spec: - name: "woodenShelf" + name: "woodShelf" type: "product" input: "[[4,bar],[13,screw]]" length: "" diff --git a/distributed_event_factory/core/object.py b/distributed_event_factory/core/object.py index 6ca0c49..176a2f3 100644 --- a/distributed_event_factory/core/object.py +++ b/distributed_event_factory/core/object.py @@ -3,17 +3,19 @@ from distributed_event_factory.core.abstract_object_source import ObjectSource from distributed_event_factory.core.object_id import ObjectId + class Object: def __init__( self, timestamp, - object_type: str, + object_state: str, object_id: ObjectId ): self.timestamp = timestamp - self.object_type = object_type + self.object_state = object_state self.object_id = object_id + class GenericObjectSource(ObjectSource): def __init__( @@ -25,7 +27,7 @@ def __init__( width: int ): - self.values_changed : List[Object] = [] + self.values_changed: List[Object] = [] self.object_id = object_id self.object_type = object_type self.input_objects = input_objects @@ -56,3 +58,15 @@ def get_length(self) -> int: def get_width(self) -> int: return self.width + def get_last_changed_value(self): + return self.values_changed[-1].object_state + + def add_change(self, change): + self.values_changed.append(change) + + def clone(self): + return GenericObjectSource(self.object_id, + self.object_type, + self.input_objects, + self.length, + self.width) diff --git a/distributed_event_factory/parser/datasource/event/input/input_parser.py b/distributed_event_factory/parser/datasource/event/input/input_parser.py index 18e9f71..696eab2 100644 --- a/distributed_event_factory/parser/datasource/event/input/input_parser.py +++ b/distributed_event_factory/parser/datasource/event/input/input_parser.py @@ -13,5 +13,5 @@ def add_dependency(self, key: str, dependency): def parse(self, config): object_list = [] for object_element in config["input"]: - object_list.append(InputObjectProvider(object_element["object"], object_element["number"])) + object_list.append(InputObjectProvider(object_element["object"], object_element["number"], object_element["lastState"])) return object_list \ No newline at end of file diff --git a/distributed_event_factory/parser/datasource/event/output/output_parser.py b/distributed_event_factory/parser/datasource/event/output/output_parser.py index 3eb5e67..fe5665d 100644 --- a/distributed_event_factory/parser/datasource/event/output/output_parser.py +++ b/distributed_event_factory/parser/datasource/event/output/output_parser.py @@ -13,7 +13,7 @@ def add_dependency(self, key: str, dependency): def parse(self, config): object_list = [] for object_element in config: - object_list.append(OutputObjectProvider(object_element["object"], object_element["number"])) + object_list.append(OutputObjectProvider(object_element["object"], object_element["number"], object_element["change"])) return object_list class DummyObjectParser(Parser): diff --git a/distributed_event_factory/provider/object/input/input_provider.py b/distributed_event_factory/provider/object/input/input_provider.py index f92d3ab..89cc3fd 100644 --- a/distributed_event_factory/provider/object/input/input_provider.py +++ b/distributed_event_factory/provider/object/input/input_provider.py @@ -1,7 +1,8 @@ class InputObjectProvider: - def __init__(self, objectName, numberOfObject): + def __init__(self, objectName, numberOfObject, lastState): self.objectName = objectName self.numberOfObject = numberOfObject + self.lastState = lastState def __str__(self): return str(self.__dict__) diff --git a/distributed_event_factory/provider/transition/output/output_provider.py b/distributed_event_factory/provider/transition/output/output_provider.py index abad041..ce2c83d 100644 --- a/distributed_event_factory/provider/transition/output/output_provider.py +++ b/distributed_event_factory/provider/transition/output/output_provider.py @@ -1,7 +1,11 @@ class OutputObjectProvider: - def __init__(self, objectName, numberOfObject): + def __init__(self, objectName, numberOfObject, change): self.objectName = objectName self.numberOfObject = numberOfObject + self.change = change def __str__(self): - return str(self.__dict__) \ No newline at end of file + if self.change: + return str(self.__dict__) + else: + return str({key: value for key, value in self.__dict__.items() if value}) \ No newline at end of file diff --git a/distributed_event_factory/simulation/process_simulation.py b/distributed_event_factory/simulation/process_simulation.py index 645c8e7..310e2ba 100644 --- a/distributed_event_factory/simulation/process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -34,6 +34,7 @@ def __init__( self.object_store_objects: List[Object] = [] self.objects = objects self.routes = routes + self.add_start_supplies_in_warehouse(self.last_timestamp) def simulate(self) -> Event: emit_event = None @@ -50,23 +51,34 @@ def simulate(self) -> Event: if token.data_source_id == START_SENSOR_ID: token.data_source_id = DataSourceId( self._get_sensor_with_id(START_SENSOR_ID).get_event_data().get_transition()) - self.add_start_supplies_in_warehouse() current_data_source = self._get_sensor_with_id(token.data_source_id) event = current_data_source.get_event_data() necessary_input = current_data_source.event_provider.type_parser if not self.check_input_in_object_store(necessary_input): - raise ValueError("Input not found") - next_datasource = event.get_transition() - activity = event.get_activity_provider().get_activity() - output = event.get_activity_provider().get_output() - self.remove_used_input(necessary_input) - self.add_produced_output(output) + next_datasource = token.event.node + activity = token.event.activity + output = eval(token.event.output) + if str(output).count("objectName") ==1: + output = [output] + necessary_input = eval(token.event.input) + if str(necessary_input).count("objectName") == 1: + necessary_input = [necessary_input] + current_data_source = self.datasources.get(token.event.node) + if not self.check_input_in_object_store(necessary_input): + raise ValueError("Input not found") + else: + next_datasource = event.get_transition() + activity = event.get_activity_provider().get_activity() + output = event.get_activity_provider().get_output() + input_objects = self.remove_used_input(necessary_input) self.set_next_datasource_token(activity, current_data_source, next_datasource, token) token.add_to_last_timestamp(event.get_duration()) self.last_timestamp = token.last_timestamp + self.add_produced_output(output, necessary_input, input_objects, self.last_timestamp) if (necessary_input is not None and necessary_input) or output is not None: token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source, necessary_input, output) + else: token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source) self.tokens.put(token) @@ -85,36 +97,97 @@ def set_next_datasource_token(self, activity, current_data_source, next_datasour else: token.set_data_source_id(self.datasources[next_datasource].get_id()) - def add_start_supplies_in_warehouse(self): + def add_start_supplies_in_warehouse(self, timestamp): self.object_store["order"] = 100 - self.object_store["bar"] = 100 - self.object_store["screw"] = 100 + self.object_store["barResource"] = 100 + self.object_store["screw"] = 500 + self.object_store["bar"] = 150 for i in range(100): - self.object_store_objects.append(self.objects.get("order")) - self.object_store_objects.append(self.objects.get("bar")) - self.object_store_objects.append(self.objects.get("screw")) + self.object_store_objects.append(self.objects.get("order").clone()) + self.object_store_objects.append(self.objects.get("barResource").clone()) + + for i in range(150): + obj = self.objects.get("bar").clone() + obj.add_change(Object(timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), object_state="sanded", + object_id=obj.object_id)) + self.object_store_objects.append(obj) - def add_produced_output(self, output): + for i in range(500): + self.object_store_objects.append(self.objects.get("screw").clone()) + + def add_produced_output(self, output, necessary_input, input_objects, timestamp): if output is not None: for element in output: - if self.object_store.get(element.objectName) is None: - self.object_store[element.objectName] = element.numberOfObject + if type(element) is not Dict: + element = eval(str(element)) + if self.object_store.get(element.get("objectName")) is None: + self.object_store[element.get("objectName")] = element.get("numberOfObject") else: - self.object_store[element.objectName] = self.object_store.get( - element.objectName) + element.numberOfObject - for i in range(0, element.numberOfObject): - self.object_store_objects.append(self.objects.get(element.objectName)) + self.object_store[element.get("objectName")] = self.object_store.get( + element.get("objectName")) + element.get("numberOfObject") + for i in range(0, element.get("numberOfObject")): + input_for_element = self.find_in_list_input_list(input_objects, element.get("objectName")) + if input_for_element: + if (element.get("change")): + input_info = self.find_in_necessary_input(necessary_input, element.get("objectName")) + output_object = self.find_in_list_input_list_with_state(input_objects, element.get("objectName"), + input_info.lastState) + output_object.add_change( + Object(timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), object_state=element.get("change"), + object_id=output_object.object_id)) + self.object_store_objects.append( + output_object) + else: + self.object_store_objects.append(input_objects.get(input_objects.index(element.get("objectName")))) + else: + if (element.get("change")): + output_object = self.objects.get(element.get("objectName")).clone() + output_object.add_change( + Object(timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), object_state=element.get("change"), + object_id=output_object.object_id)) + self.object_store_objects.append(output_object) + else: + self.object_store_objects.append(self.objects.get(element.get("objectName"))) + + def find_in_list_input_list_with_state(self, data, key, change_value): + return next((item for item in data if item.object_id.id == key and item.get_last_changed_value() == change_value), None) + + def find_in_necessary_input(self, necessary_input, key): + return next((item for item in necessary_input if item.objectName == key), None) + + def find_in_list_input_list(self, data, key): + return next((item for item in data if item.object_id.id == key), None) + + def find_in_list_without_changed_value(self, data, key): + return next((item for item in data if item.object_id.id == key and not item.values_changed), None) + + def find_in_list(self, data, key, change_value): + return next( + (item for item in data if item.object_id.id == key and item.get_last_changed_value() == change_value), None) def remove_used_input(self, necessary_input): if necessary_input is not None: + input_objects = [] for element in necessary_input: - self.object_store[element.objectName] = self.object_store.get( - element.objectName) - element.numberOfObject - if self.object_store.get(element.objectName) == 0: - self.object_store.pop(element.objectName) + if type(element) is not Dict: + element = eval(str(element)) + self.object_store[element.get("objectName")] = self.object_store.get( + element.get("objectName")) - element.get("numberOfObject") + if self.object_store.get(element.get("objectName")) == 0: + self.object_store.pop(element.get("objectName")) - for i in range(0, element.numberOfObject): - self.object_store_objects.remove(self.objects.get(element.objectName)) + for i in range(0, element.get("numberOfObject")): + if (element.get("lastState")): + object_from_store_index = self.object_store_objects.index( + self.find_in_list(self.object_store_objects, element.get("objectName"), element.get("lastState"))) + input_obj =self.object_store_objects.pop(object_from_store_index) + input_objects.append(input_obj) + else: + object_from_store_index = self.object_store_objects.index(self.find_in_list_without_changed_value(self.object_store_objects, element.get("objectName"))) + input_obj = self.object_store_objects.pop(object_from_store_index) + input_objects.append(input_obj) + return input_objects + return None def start_new_case(self): case_id = self.case_id_provider.get() @@ -149,10 +222,18 @@ def _get_sensor_with_id(self, data_source_id) -> DataSource: return self.datasources[sensor] raise ValueError("Sensor not found") - def check_input_in_object_store(self, input_objects): - for obj in input_objects: - if not self.object_store.__contains__(obj.objectName) or self.object_store.get( - obj.objectName) < obj.numberOfObject: + def check_input_in_object_store(self, necessary_inputs): + for obj in necessary_inputs: + if type(obj) is not Dict: + obj = eval(str(obj)) + if obj.get("lastState"): + if not self.object_store.__contains__(obj.get("objectName")) or self.object_store.get( + obj.get("objectName")) < obj.get("numberOfObject") or sum(1 for stored_obj in self.object_store_objects if + stored_obj.object_id.id == obj.get("objectName") and stored_obj.get_last_changed_value() == obj.get("lastState")) < obj.get("numberOfObject"): + return False + elif not self.object_store.__contains__(obj.get("objectName")) or self.object_store.get( + obj.get("objectName")) < obj.get("numberOfObject") or sum(1 for stored_obj in self.object_store_objects if + stored_obj.object_id.id == obj.get("objectName") and not stored_obj.values_changed) < obj.get("numberOfObject"): return False return True From abe5226515a1a23fea2b60096ace5435e08d67e4 Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 6 Jun 2025 15:09:27 +0200 Subject: [PATCH 070/124] refactor process simulation for readable reasons --- .../provider/object/input/input_provider.py | 5 +- .../simulation/process_simulation.py | 227 +++++++++--------- 2 files changed, 121 insertions(+), 111 deletions(-) diff --git a/distributed_event_factory/provider/object/input/input_provider.py b/distributed_event_factory/provider/object/input/input_provider.py index 89cc3fd..419a850 100644 --- a/distributed_event_factory/provider/object/input/input_provider.py +++ b/distributed_event_factory/provider/object/input/input_provider.py @@ -5,4 +5,7 @@ def __init__(self, objectName, numberOfObject, lastState): self.lastState = lastState def __str__(self): - return str(self.__dict__) + if self.lastState: + return str(self.__dict__) + else: + return str({key: value for key, value in self.__dict__.items() if value}) diff --git a/distributed_event_factory/simulation/process_simulation.py b/distributed_event_factory/simulation/process_simulation.py index 310e2ba..a9428bf 100644 --- a/distributed_event_factory/simulation/process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -14,6 +14,12 @@ from distributed_event_factory.provider.data.case_provider import CaseIdProvider from simulation.object_event import ObjectEvent +CHANGE = "change" +LAST_STATE = "lastState" +NUMBER_OF_OBJECT = "numberOfObject" +OBJECT_NAME = "objectName" +Y_M_D_H_M_S = "%Y-%m-%d %H:%M:%S" + class ProcessSimulator: def __init__( @@ -55,17 +61,8 @@ def simulate(self) -> Event: event = current_data_source.get_event_data() necessary_input = current_data_source.event_provider.type_parser if not self.check_input_in_object_store(necessary_input): - next_datasource = token.event.node - activity = token.event.activity - output = eval(token.event.output) - if str(output).count("objectName") ==1: - output = [output] - necessary_input = eval(token.event.input) - if str(necessary_input).count("objectName") == 1: - necessary_input = [necessary_input] - current_data_source = self.datasources.get(token.event.node) - if not self.check_input_in_object_store(necessary_input): - raise ValueError("Input not found") + activity, current_data_source, necessary_input, next_datasource, output = self.set_parameters_for_previous_event( + current_data_source, necessary_input, token) else: next_datasource = event.get_transition() activity = event.get_activity_provider().get_activity() @@ -78,92 +75,138 @@ def simulate(self) -> Event: if (necessary_input is not None and necessary_input) or output is not None: token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source, necessary_input, output) - else: token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source) self.tokens.put(token) return emit_event - def set_next_datasource_token(self, activity, current_data_source, next_datasource, token): - if next_datasource == ROUTING_ID.get_name(): - start_point = current_data_source.sensor_id.id - for route in self.routes.get("default"): - if route.get_route_for_activity() == activity and route.get_start() == start_point: - token.add_to_last_timestamp(route.get_duration()) - next_datasource = route.get_end() - token.set_data_source_id(self.datasources[next_datasource].get_id()) - return - else: - token.set_data_source_id(self.datasources[next_datasource].get_id()) + def start_new_case(self): + case_id = self.case_id_provider.get() + token = Token(case_id, START_SENSOR_ID, self.last_timestamp, None) + return token + + def _build_event(self, case, activity, timestamp, datasource, input=None, output=None): + if hasattr(datasource, "sensor_id"): + if input and output: + return ObjectEvent( + timestamp=timestamp.strftime(Y_M_D_H_M_S), + activity=activity, + case_id=case, + node=datasource.sensor_id.get_name(), + group_id=datasource.group_id, + input=", ".join(str(obj) for obj in input), + output=", ".join(str(obj) for obj in output) + ) + else: + return Event( + timestamp=timestamp.strftime(Y_M_D_H_M_S), + activity=activity, + case_id=case, + node=datasource.sensor_id.get_name(), + group_id=datasource.group_id + ) + return None + + def _get_sensor_with_id(self, data_source_id) -> DataSource: + for sensor in self.datasources: + if self.datasources[sensor].get_id() == data_source_id: + return self.datasources[sensor] + raise ValueError("Sensor not found") + + def check_input_in_object_store(self, necessary_inputs): + for obj in necessary_inputs: + if type(obj) is not Dict: + obj = eval(str(obj)) + if obj.get(LAST_STATE): + if not self.object_store.__contains__(obj.get(OBJECT_NAME)) or self.object_store.get( + obj.get(OBJECT_NAME)) < obj.get(NUMBER_OF_OBJECT) or sum(1 for stored_obj in self.object_store_objects if + stored_obj.object_id.id == obj.get(OBJECT_NAME) and stored_obj.get_last_changed_value() == obj.get( + LAST_STATE)) < obj.get(NUMBER_OF_OBJECT): + return False + elif not self.object_store.__contains__(obj.get(OBJECT_NAME)) or self.object_store.get( + obj.get(OBJECT_NAME)) < obj.get(NUMBER_OF_OBJECT) or sum(1 for stored_obj in self.object_store_objects if + stored_obj.object_id.id == obj.get(OBJECT_NAME) and not stored_obj.values_changed) < obj.get(NUMBER_OF_OBJECT): + return False + return True def add_start_supplies_in_warehouse(self, timestamp): self.object_store["order"] = 100 self.object_store["barResource"] = 100 self.object_store["screw"] = 500 - self.object_store["bar"] = 150 + self.object_store["bar"] = 200 for i in range(100): self.object_store_objects.append(self.objects.get("order").clone()) self.object_store_objects.append(self.objects.get("barResource").clone()) - for i in range(150): + for i in range(200): obj = self.objects.get("bar").clone() - obj.add_change(Object(timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), object_state="sanded", + obj.add_change(Object(timestamp=timestamp.strftime(Y_M_D_H_M_S), object_state="sanded", object_id=obj.object_id)) self.object_store_objects.append(obj) for i in range(500): self.object_store_objects.append(self.objects.get("screw").clone()) + def set_parameters_for_previous_event(self, current_data_source, necessary_input, token): + next_datasource = token.event.node + activity = token.event.activity + output = eval(token.event.output) + if str(output).count(OBJECT_NAME) == 1: + output = [output] + necessary_input = eval(token.event.input) + if str(necessary_input).count(OBJECT_NAME) == 1: + necessary_input = [necessary_input] + current_data_source = self.datasources.get(token.event.node) + if not self.check_input_in_object_store(necessary_input): + raise ValueError("Input not found") + return activity, current_data_source, necessary_input, next_datasource, output + + def set_next_datasource_token(self, activity, current_data_source, next_datasource, token): + if next_datasource == ROUTING_ID.get_name(): + start_point = current_data_source.sensor_id.id + for route in self.routes.get("default"): + if route.get_route_for_activity() == activity and route.get_start() == start_point: + token.add_to_last_timestamp(route.get_duration()) + next_datasource = route.get_end() + token.set_data_source_id(self.datasources[next_datasource].get_id()) + return + else: + token.set_data_source_id(self.datasources[next_datasource].get_id()) + def add_produced_output(self, output, necessary_input, input_objects, timestamp): if output is not None: for element in output: if type(element) is not Dict: element = eval(str(element)) - if self.object_store.get(element.get("objectName")) is None: - self.object_store[element.get("objectName")] = element.get("numberOfObject") + if self.object_store.get(element.get(OBJECT_NAME)) is None: + self.object_store[element.get(OBJECT_NAME)] = element.get(NUMBER_OF_OBJECT) else: - self.object_store[element.get("objectName")] = self.object_store.get( - element.get("objectName")) + element.get("numberOfObject") - for i in range(0, element.get("numberOfObject")): - input_for_element = self.find_in_list_input_list(input_objects, element.get("objectName")) + self.object_store[element.get(OBJECT_NAME)] = self.object_store.get( + element.get(OBJECT_NAME)) + element.get(NUMBER_OF_OBJECT) + for i in range(0, element.get(NUMBER_OF_OBJECT)): + input_for_element = self.find_in_list_input_list(input_objects, element.get(OBJECT_NAME)) if input_for_element: - if (element.get("change")): - input_info = self.find_in_necessary_input(necessary_input, element.get("objectName")) - output_object = self.find_in_list_input_list_with_state(input_objects, element.get("objectName"), + if (element.get(CHANGE)): + input_info = self.find_in_necessary_input(necessary_input, element.get(OBJECT_NAME)) + output_object = self.find_in_list_with_change_state(input_objects, element.get(OBJECT_NAME), input_info.lastState) output_object.add_change( - Object(timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), object_state=element.get("change"), + Object(timestamp=timestamp.strftime(Y_M_D_H_M_S), object_state=element.get(CHANGE), object_id=output_object.object_id)) self.object_store_objects.append( output_object) else: - self.object_store_objects.append(input_objects.get(input_objects.index(element.get("objectName")))) + self.object_store_objects.append(input_objects.get(input_objects.index(element.get(OBJECT_NAME)))) else: - if (element.get("change")): - output_object = self.objects.get(element.get("objectName")).clone() + if (element.get(CHANGE)): + output_object = self.objects.get(element.get(OBJECT_NAME)).clone() output_object.add_change( - Object(timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), object_state=element.get("change"), + Object(timestamp=timestamp.strftime(Y_M_D_H_M_S), object_state=element.get(CHANGE), object_id=output_object.object_id)) self.object_store_objects.append(output_object) else: - self.object_store_objects.append(self.objects.get(element.get("objectName"))) - - def find_in_list_input_list_with_state(self, data, key, change_value): - return next((item for item in data if item.object_id.id == key and item.get_last_changed_value() == change_value), None) - - def find_in_necessary_input(self, necessary_input, key): - return next((item for item in necessary_input if item.objectName == key), None) - - def find_in_list_input_list(self, data, key): - return next((item for item in data if item.object_id.id == key), None) - - def find_in_list_without_changed_value(self, data, key): - return next((item for item in data if item.object_id.id == key and not item.values_changed), None) - - def find_in_list(self, data, key, change_value): - return next( - (item for item in data if item.object_id.id == key and item.get_last_changed_value() == change_value), None) + self.object_store_objects.append(self.objects.get(element.get(OBJECT_NAME))) def remove_used_input(self, necessary_input): if necessary_input is not None: @@ -171,72 +214,36 @@ def remove_used_input(self, necessary_input): for element in necessary_input: if type(element) is not Dict: element = eval(str(element)) - self.object_store[element.get("objectName")] = self.object_store.get( - element.get("objectName")) - element.get("numberOfObject") - if self.object_store.get(element.get("objectName")) == 0: - self.object_store.pop(element.get("objectName")) + self.object_store[element.get(OBJECT_NAME)] = self.object_store.get( + element.get(OBJECT_NAME)) - element.get(NUMBER_OF_OBJECT) + if self.object_store.get(element.get(OBJECT_NAME)) == 0: + self.object_store.pop(element.get(OBJECT_NAME)) - for i in range(0, element.get("numberOfObject")): - if (element.get("lastState")): + for i in range(0, element.get(NUMBER_OF_OBJECT)): + if (element.get(LAST_STATE)): object_from_store_index = self.object_store_objects.index( - self.find_in_list(self.object_store_objects, element.get("objectName"), element.get("lastState"))) + self.find_in_list_with_change_state(self.object_store_objects, element.get(OBJECT_NAME), element.get(LAST_STATE))) input_obj =self.object_store_objects.pop(object_from_store_index) input_objects.append(input_obj) else: - object_from_store_index = self.object_store_objects.index(self.find_in_list_without_changed_value(self.object_store_objects, element.get("objectName"))) + object_from_store_index = self.object_store_objects.index(self.find_in_list_without_changed_value(self.object_store_objects, element.get(OBJECT_NAME))) input_obj = self.object_store_objects.pop(object_from_store_index) input_objects.append(input_obj) return input_objects return None - def start_new_case(self): - case_id = self.case_id_provider.get() - token = Token(case_id, START_SENSOR_ID, self.last_timestamp, None) - return token - - def _build_event(self, case, activity, timestamp, datasource, input=None, output=None): - if hasattr(datasource, "sensor_id"): - if input and output: - return ObjectEvent( - timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), - activity=activity, - case_id=case, - node=datasource.sensor_id.get_name(), - group_id=datasource.group_id, - input=", ".join(str(obj) for obj in input), - output=", ".join(str(obj) for obj in output) - ) - else: - return Event( - timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), - activity=activity, - case_id=case, - node=datasource.sensor_id.get_name(), - group_id=datasource.group_id - ) - return None + def find_in_necessary_input(self, necessary_input, key): + return next((item for item in necessary_input if item.objectName == key), None) - def _get_sensor_with_id(self, data_source_id) -> DataSource: - for sensor in self.datasources: - if self.datasources[sensor].get_id() == data_source_id: - return self.datasources[sensor] - raise ValueError("Sensor not found") + def find_in_list_input_list(self, data, key): + return next((item for item in data if item.object_id.id == key), None) - def check_input_in_object_store(self, necessary_inputs): - for obj in necessary_inputs: - if type(obj) is not Dict: - obj = eval(str(obj)) - if obj.get("lastState"): - if not self.object_store.__contains__(obj.get("objectName")) or self.object_store.get( - obj.get("objectName")) < obj.get("numberOfObject") or sum(1 for stored_obj in self.object_store_objects if - stored_obj.object_id.id == obj.get("objectName") and stored_obj.get_last_changed_value() == obj.get("lastState")) < obj.get("numberOfObject"): - return False - elif not self.object_store.__contains__(obj.get("objectName")) or self.object_store.get( - obj.get("objectName")) < obj.get("numberOfObject") or sum(1 for stored_obj in self.object_store_objects if - stored_obj.object_id.id == obj.get("objectName") and not stored_obj.values_changed) < obj.get("numberOfObject"): - return False - return True + def find_in_list_without_changed_value(self, data, key): + return next((item for item in data if item.object_id.id == key and not item.values_changed), None) + def find_in_list_with_change_state(self, data, key, change_value): + return next( + (item for item in data if item.object_id.id == key and item.get_last_changed_value() == change_value), None) class Token: def __init__( From 86c6269369eb8157212076382a8c282d41358dff Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 6 Jun 2025 15:18:49 +0200 Subject: [PATCH 071/124] refactor for methods in process simulation for readable reasons --- .../simulation/process_simulation.py | 72 ++++++++++--------- 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/distributed_event_factory/simulation/process_simulation.py b/distributed_event_factory/simulation/process_simulation.py index a9428bf..32a122e 100644 --- a/distributed_event_factory/simulation/process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -184,29 +184,32 @@ def add_produced_output(self, output, necessary_input, input_objects, timestamp) else: self.object_store[element.get(OBJECT_NAME)] = self.object_store.get( element.get(OBJECT_NAME)) + element.get(NUMBER_OF_OBJECT) - for i in range(0, element.get(NUMBER_OF_OBJECT)): - input_for_element = self.find_in_list_input_list(input_objects, element.get(OBJECT_NAME)) - if input_for_element: - if (element.get(CHANGE)): - input_info = self.find_in_necessary_input(necessary_input, element.get(OBJECT_NAME)) - output_object = self.find_in_list_with_change_state(input_objects, element.get(OBJECT_NAME), - input_info.lastState) - output_object.add_change( - Object(timestamp=timestamp.strftime(Y_M_D_H_M_S), object_state=element.get(CHANGE), - object_id=output_object.object_id)) - self.object_store_objects.append( - output_object) - else: - self.object_store_objects.append(input_objects.get(input_objects.index(element.get(OBJECT_NAME)))) - else: - if (element.get(CHANGE)): - output_object = self.objects.get(element.get(OBJECT_NAME)).clone() - output_object.add_change( - Object(timestamp=timestamp.strftime(Y_M_D_H_M_S), object_state=element.get(CHANGE), - object_id=output_object.object_id)) - self.object_store_objects.append(output_object) - else: - self.object_store_objects.append(self.objects.get(element.get(OBJECT_NAME))) + self.add_output_to_object_store_objects(element, input_objects, necessary_input, timestamp) + + def add_output_to_object_store_objects(self, element, input_objects, necessary_input, timestamp): + for i in range(0, element.get(NUMBER_OF_OBJECT)): + input_for_element = self.find_in_list_input_list(input_objects, element.get(OBJECT_NAME)) + if input_for_element: + if (element.get(CHANGE)): + input_info = self.find_in_necessary_input(necessary_input, element.get(OBJECT_NAME)) + output_object = self.find_in_list_with_change_state(input_objects, element.get(OBJECT_NAME), + input_info.lastState) + self.add_object_to_object_store_objects_with_change(element, output_object, timestamp) + else: + self.object_store_objects.append(input_objects.get(input_objects.index(element.get(OBJECT_NAME)))) + else: + if (element.get(CHANGE)): + output_object = self.objects.get(element.get(OBJECT_NAME)).clone() + self.add_object_to_object_store_objects_with_change(element, output_object, timestamp) + else: + self.object_store_objects.append(self.objects.get(element.get(OBJECT_NAME))) + + def add_object_to_object_store_objects_with_change(self, element, output_object, timestamp): + output_object.add_change( + Object(timestamp=timestamp.strftime(Y_M_D_H_M_S), object_state=element.get(CHANGE), + object_id=output_object.object_id)) + self.object_store_objects.append( + output_object) def remove_used_input(self, necessary_input): if necessary_input is not None: @@ -219,19 +222,22 @@ def remove_used_input(self, necessary_input): if self.object_store.get(element.get(OBJECT_NAME)) == 0: self.object_store.pop(element.get(OBJECT_NAME)) - for i in range(0, element.get(NUMBER_OF_OBJECT)): - if (element.get(LAST_STATE)): - object_from_store_index = self.object_store_objects.index( - self.find_in_list_with_change_state(self.object_store_objects, element.get(OBJECT_NAME), element.get(LAST_STATE))) - input_obj =self.object_store_objects.pop(object_from_store_index) - input_objects.append(input_obj) - else: - object_from_store_index = self.object_store_objects.index(self.find_in_list_without_changed_value(self.object_store_objects, element.get(OBJECT_NAME))) - input_obj = self.object_store_objects.pop(object_from_store_index) - input_objects.append(input_obj) + self.remove_input_from_object_store_objects(element, input_objects) return input_objects return None + def remove_input_from_object_store_objects(self, element, input_objects): + for i in range(0, element.get(NUMBER_OF_OBJECT)): + if (element.get(LAST_STATE)): + object_from_store_index = self.object_store_objects.index( + self.find_in_list_with_change_state(self.object_store_objects, element.get(OBJECT_NAME), + element.get(LAST_STATE))) + else: + object_from_store_index = self.object_store_objects.index( + self.find_in_list_without_changed_value(self.object_store_objects, element.get(OBJECT_NAME))) + input_obj = self.object_store_objects.pop(object_from_store_index) + input_objects.append(input_obj) + def find_in_necessary_input(self, necessary_input, key): return next((item for item in necessary_input if item.objectName == key), None) From a46b9ddfe55245926c5ccf1f1e9aed84bcf72656 Mon Sep 17 00:00:00 2001 From: ulpi Date: Sat, 7 Jun 2025 09:01:24 +0200 Subject: [PATCH 072/124] add configurable warehouse stock for simulation start --- .../smart-factory-easier/warehouse_stock.yaml | 16 ++++++++ distributed_event_factory/event_factory.py | 13 ++++++- .../parser/parser_registry.py | 7 +++- .../parser/stock/stock_parser.py | 21 ++++++++++ .../simulation/countbased.py | 5 ++- .../simulation/loadtest.py | 6 ++- .../simulation/process_simulation.py | 39 +++++++++---------- .../simulation/stream.py | 5 ++- 8 files changed, 84 insertions(+), 28 deletions(-) create mode 100644 config/datasource/smart-factory-easier/warehouse_stock.yaml create mode 100644 distributed_event_factory/parser/stock/stock_parser.py diff --git a/config/datasource/smart-factory-easier/warehouse_stock.yaml b/config/datasource/smart-factory-easier/warehouse_stock.yaml new file mode 100644 index 0000000..ba22ca7 --- /dev/null +++ b/config/datasource/smart-factory-easier/warehouse_stock.yaml @@ -0,0 +1,16 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 100 + lastState: + - object: "barResource" + number: 100 + lastState: + - object: "screw" + number: 500 + lastState: + - object: "bar" + number: 200 + lastState: "sanded" \ No newline at end of file diff --git a/distributed_event_factory/event_factory.py b/distributed_event_factory/event_factory.py index dc1f8c9..18ab3d4 100644 --- a/distributed_event_factory/event_factory.py +++ b/distributed_event_factory/event_factory.py @@ -12,11 +12,13 @@ from distributed_event_factory.provider.sink.sink_provider import Sink from parser.datasource.event.output.output_parser import OutputParser from parser.route.route_parser import RouteParser +from parser.stock.stock_parser import StockParser class EventFactory: def __init__(self): self.routes = dict() + self.stocks = dict() self.sinks = dict() self.simulations = dict() self.datasources = dict() @@ -58,6 +60,9 @@ def add_object_source_parser(self, key: str, parser: ObjectSourceParser): def add_route_parser(self, key: str, parser: RouteParser): self.parser.route_parser.add_dependency(key, parser) + def add_stock_parser(self, key: str, parser: StockParser): + self.parser.warehouse_stock_parser.add_dependency(key, parser) + def get_datasource(self, datasource_key): return self.datasources[datasource_key] @@ -93,6 +98,10 @@ def add_route(self,name, routes): self.routes[name] = routes return self + def add_stock(self,name, routes): + self.stocks[name] = routes + return self + def add_file(self, filename): with open(filename) as file: configuration = yaml.safe_load(file) @@ -109,8 +118,10 @@ def add_file(self, filename): self.add_object(name, parsed_object) elif kind == "route": self.add_route(name, parsed_object) + elif kind == "stock": + self.add_stock(name, parsed_object) return self def run(self, hook=lambda: None): for simulation in self.simulations: - self.simulations[simulation].run_simulation(self.datasources, self.sinks, self.objects, self.routes, hook) \ No newline at end of file + self.simulations[simulation].run_simulation(self.datasources, self.sinks, self.objects, self.routes, self.stocks, hook) \ No newline at end of file diff --git a/distributed_event_factory/parser/parser_registry.py b/distributed_event_factory/parser/parser_registry.py index 242d6c5..334f0a7 100644 --- a/distributed_event_factory/parser/parser_registry.py +++ b/distributed_event_factory/parser/parser_registry.py @@ -43,6 +43,7 @@ from parser.datasource.event.input.input_parser import InputParser from parser.datasource.event.output.output_parser import OutputParser, DummyObjectParser from parser.route.route_parser import RouteParser +from parser.stock.stock_parser import StockParser class ParserRegistry: @@ -129,6 +130,9 @@ def __init__(self): # Route self.route_parser = RouteParser() + # Warehouse Stocks + self.warehouse_stock_parser = StockParser() + ########## # Case self.increasing_case_id_parser = IncreasingCaseIdProvider() @@ -174,4 +178,5 @@ def __init__(self): .add_dependency("datasource", self.datasource_parser) .add_dependency("simulation", self.simulation_parser) .add_dependency("object", self.object_source_parser) - .add_dependency("route", self.route_parser)) + .add_dependency("route", self.route_parser) + .add_dependency("stock", self.warehouse_stock_parser)) diff --git a/distributed_event_factory/parser/stock/stock_parser.py b/distributed_event_factory/parser/stock/stock_parser.py new file mode 100644 index 0000000..7764599 --- /dev/null +++ b/distributed_event_factory/parser/stock/stock_parser.py @@ -0,0 +1,21 @@ +from parser.parser import Parser +from provider.object.input.input_provider import InputObjectProvider + + +class StockParser(Parser): + + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + stocks_list = [] + for stock in config["stocks"]: + stocks_list.append(InputObjectProvider( + objectName=stock["object"], + numberOfObject=stock["number"], + lastState=stock["lastState"] + )) + return stocks_list \ No newline at end of file diff --git a/distributed_event_factory/simulation/countbased.py b/distributed_event_factory/simulation/countbased.py index 2721d80..45cda00 100644 --- a/distributed_event_factory/simulation/countbased.py +++ b/distributed_event_factory/simulation/countbased.py @@ -13,14 +13,15 @@ def __init__(self, simulation_steps: int, case_id_provider: CaseIdProvider, max_ self.sinks = dict() self.max_concurrent_cases = max_concurrent_cases - def run_simulation(self, datasources, sinks, objects, routes, hook=lambda: None): + def run_simulation(self, datasources, sinks, objects, routes, stocks, hook=lambda: None): self.setup_datasource_sink_mapping(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=datasources, max_concurrent_cases=self.max_concurrent_cases, objects=objects, - routes=routes + routes=routes, + stocks=stocks, ) for i in range(self.simulation_steps): diff --git a/distributed_event_factory/simulation/loadtest.py b/distributed_event_factory/simulation/loadtest.py index 41a321f..20ee007 100644 --- a/distributed_event_factory/simulation/loadtest.py +++ b/distributed_event_factory/simulation/loadtest.py @@ -9,6 +9,7 @@ from distributed_event_factory.provider.sink.http.http_sink import LoadTestHttpSink from distributed_event_factory.simulation.abstract_simulation import Simulation from distributed_event_factory.simulation.process_simulation import ProcessSimulator +from provider.object.input.input_provider import InputObjectProvider class LoadTestSimulation(Simulation): @@ -38,7 +39,7 @@ def start_simulation(self, sinks): for sink in self.sink: sink.start() - def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_mapping: Dict[str, LoadTestHttpSink], objects: Dict[str, Object], routes: Dict[str, Route], + def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_mapping: Dict[str, LoadTestHttpSink], objects: Dict[str, Object], routes: Dict[str, Route], stocks: Dict[str, InputObjectProvider], hook=lambda: None): self.setup_datasource_sink_mapping(datasource_sink_mapping) for sink in datasource_sink_mapping: @@ -49,7 +50,8 @@ def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_ma data_sources=data_sources, max_concurrent_cases=self.max_concurrent_cases, objects=objects, - routes = routes + routes = routes, + stocks = stocks ) iteration = 0 while True: diff --git a/distributed_event_factory/simulation/process_simulation.py b/distributed_event_factory/simulation/process_simulation.py index 32a122e..8a86434 100644 --- a/distributed_event_factory/simulation/process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -12,6 +12,7 @@ from distributed_event_factory.core.datasource import DataSource from distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID, DataSourceId from distributed_event_factory.provider.data.case_provider import CaseIdProvider +from provider.object.input.input_provider import InputObjectProvider from simulation.object_event import ObjectEvent CHANGE = "change" @@ -28,7 +29,8 @@ def __init__( case_id_provider: CaseIdProvider, max_concurrent_cases: CountProvider, objects: Dict[str, Object], - routes: Dict[str, Route] + routes: Dict[str, Route], + stocks: Dict[str, InputObjectProvider] ): self.max_concurrent_cases = max_concurrent_cases @@ -40,7 +42,8 @@ def __init__( self.object_store_objects: List[Object] = [] self.objects = objects self.routes = routes - self.add_start_supplies_in_warehouse(self.last_timestamp) + self.stocks = stocks + self.add_configured_stocks_in_warehouse(self.last_timestamp) def simulate(self) -> Event: emit_event = None @@ -130,23 +133,19 @@ def check_input_in_object_store(self, necessary_inputs): return False return True - def add_start_supplies_in_warehouse(self, timestamp): - self.object_store["order"] = 100 - self.object_store["barResource"] = 100 - self.object_store["screw"] = 500 - self.object_store["bar"] = 200 - for i in range(100): - self.object_store_objects.append(self.objects.get("order").clone()) - self.object_store_objects.append(self.objects.get("barResource").clone()) - - for i in range(200): - obj = self.objects.get("bar").clone() - obj.add_change(Object(timestamp=timestamp.strftime(Y_M_D_H_M_S), object_state="sanded", - object_id=obj.object_id)) - self.object_store_objects.append(obj) - - for i in range(500): - self.object_store_objects.append(self.objects.get("screw").clone()) + def add_configured_stocks_in_warehouse(self, timestamp): + if not self.stocks: + return + for stock in self.stocks.get("default"): + for i in range(stock.numberOfObject): + if stock.lastState: + obj = self.objects.get(stock.objectName).clone() + obj.add_change(Object(timestamp=timestamp.strftime(Y_M_D_H_M_S), object_state=stock.lastState, + object_id=obj.object_id)) + self.object_store_objects.append(obj) + else: + self.object_store_objects.append(self.objects.get(stock.objectName).clone()) + self.object_store[stock.objectName] = stock.numberOfObject def set_parameters_for_previous_event(self, current_data_source, necessary_input, token): next_datasource = token.event.node @@ -168,7 +167,7 @@ def set_next_datasource_token(self, activity, current_data_source, next_datasour for route in self.routes.get("default"): if route.get_route_for_activity() == activity and route.get_start() == start_point: token.add_to_last_timestamp(route.get_duration()) - next_datasource = route.get_end() + next_datasource = route.get_end() #mehrere enden möglich machen in route (Liste) und datasource dann auch zu einer Liste machen token.set_data_source_id(self.datasources[next_datasource].get_id()) return else: diff --git a/distributed_event_factory/simulation/stream.py b/distributed_event_factory/simulation/stream.py index 41dd78f..9efabf9 100644 --- a/distributed_event_factory/simulation/stream.py +++ b/distributed_event_factory/simulation/stream.py @@ -20,14 +20,15 @@ def __init__( self.max_concurrent_cases=max_concurrent_cases self.sinks = dict() - def run_simulation(self, datasources, sinks, objects, routes, hook): + def run_simulation(self, datasources, sinks, objects, routes, stocks, hook): self.setup_datasource_sink_mapping(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=datasources, max_concurrent_cases=self.max_concurrent_cases, objects=objects, - routes=routes + routes=routes, + stocks=stocks, ) while True: with ScheduledThreadPoolExecutor() as executor: From 1aefb5bef455b56efdba0240ebc1a5e4c45df349 Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 19 Jun 2025 11:49:00 +0200 Subject: [PATCH 073/124] machine loop, order list, parallel event parsing --- .../smart-factory-easier/bar-resource.yaml | 5 +- .../datasource/smart-factory-easier/bar.yaml | 7 +- .../e1-outgoing-stock.yaml | 3 +- .../smart-factory-easier/order.yaml | 2 +- .../smart-factory-easier/routing.yaml | 4 +- .../smart-factory-easier/screw.yaml | 5 +- .../smart-factory-easier/woodShelf.yaml | 8 ++- config/simulation/countbased.yaml | 2 +- .../parallel_event_selection_parser.py | 14 ++++ .../parser/object/object_source_parser.py | 11 ++- .../parser/parser_registry.py | 4 ++ ...ic_probability_event_selection_provider.py | 2 +- .../parallel_selection_provider.py | 13 ++++ .../simulation/process_simulation.py | 71 +++++++++++++++++-- 14 files changed, 133 insertions(+), 18 deletions(-) create mode 100644 distributed_event_factory/parser/datasource/event/selection/parallel_event_selection_parser.py create mode 100644 distributed_event_factory/provider/eventselection/parallel_selection_provider.py diff --git a/config/datasource/smart-factory-easier/bar-resource.yaml b/config/datasource/smart-factory-easier/bar-resource.yaml index ebdbb2d..6b5d4e5 100644 --- a/config/datasource/smart-factory-easier/bar-resource.yaml +++ b/config/datasource/smart-factory-easier/bar-resource.yaml @@ -3,6 +3,9 @@ name: "barResource" spec: name: "barResource" type: "resource" - input: "[[1,order]]" + input: + - object: "order" + number: 1 + lastState: "" length: "5" width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/bar.yaml b/config/datasource/smart-factory-easier/bar.yaml index 4a83ddc..75a3cd9 100644 --- a/config/datasource/smart-factory-easier/bar.yaml +++ b/config/datasource/smart-factory-easier/bar.yaml @@ -2,7 +2,10 @@ kind: object name: "bar" spec: name: "bar" - type: "resource" - input: "[[1,barResource]]" + type: "processedResource" + input: + - object: "barResource" + number: 1 + lastState: "" length: "" width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml b/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml index 2bc5623..b466517 100644 --- a/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml +++ b/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml @@ -4,8 +4,7 @@ spec: name: "OutgoingStock" group: "factory" type: objectCentric - selection: genericProbability - distribution: [0.5, 0.5] + selection: parallel input: - object: "order" number: 1 diff --git a/config/datasource/smart-factory-easier/order.yaml b/config/datasource/smart-factory-easier/order.yaml index 8a59b84..caf3cdb 100644 --- a/config/datasource/smart-factory-easier/order.yaml +++ b/config/datasource/smart-factory-easier/order.yaml @@ -3,6 +3,6 @@ name: "order" spec: name: "order" type: "order" - input: "[[]]" + input: length: "" width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/routing.yaml b/config/datasource/smart-factory-easier/routing.yaml index 26f0048..7471d90 100644 --- a/config/datasource/smart-factory-easier/routing.yaml +++ b/config/datasource/smart-factory-easier/routing.yaml @@ -13,6 +13,6 @@ spec: start: "OutgoingStock" end: "Assembly" transferObjects: - - name: "barResource" - number: 1 + - name: "screw" + number: 13 duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/screw.yaml b/config/datasource/smart-factory-easier/screw.yaml index b9d0501..1690f6c 100644 --- a/config/datasource/smart-factory-easier/screw.yaml +++ b/config/datasource/smart-factory-easier/screw.yaml @@ -3,6 +3,9 @@ name: "screw" spec: name: "screw" type: "smallComponent" - input: "[[1,order]]" + input: + - object: "order" + number: 1 + lastState: "" length: "" width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/woodShelf.yaml b/config/datasource/smart-factory-easier/woodShelf.yaml index a25ac81..eafa7a9 100644 --- a/config/datasource/smart-factory-easier/woodShelf.yaml +++ b/config/datasource/smart-factory-easier/woodShelf.yaml @@ -3,6 +3,12 @@ name: "woodShelf" spec: name: "woodShelf" type: "product" - input: "[[4,bar],[13,screw]]" + input: + - object: "bar" + number: 4 + lastState: "sanded" + - object: "screw" + number: 13 + lastState: "" length: "" width: "" \ No newline at end of file diff --git a/config/simulation/countbased.yaml b/config/simulation/countbased.yaml index c0accdd..a43bafc 100644 --- a/config/simulation/countbased.yaml +++ b/config/simulation/countbased.yaml @@ -4,4 +4,4 @@ spec: type: countBased steps: 100 caseId: increasing - maxConcurrentCases: 5 \ No newline at end of file + maxConcurrentCases: 10 \ No newline at end of file diff --git a/distributed_event_factory/parser/datasource/event/selection/parallel_event_selection_parser.py b/distributed_event_factory/parser/datasource/event/selection/parallel_event_selection_parser.py new file mode 100644 index 0000000..8b3020a --- /dev/null +++ b/distributed_event_factory/parser/datasource/event/selection/parallel_event_selection_parser.py @@ -0,0 +1,14 @@ +from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.eventselection.parallel_selection_provider import ParallelEventSelectionProvider + + +class ParallelEventSelectionParser(Parser): + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + return ParallelEventSelectionProvider(self.dependencies["eventData"].parse(config["eventData"])) \ No newline at end of file diff --git a/distributed_event_factory/parser/object/object_source_parser.py b/distributed_event_factory/parser/object/object_source_parser.py index c2e4ccf..ca2d091 100644 --- a/distributed_event_factory/parser/object/object_source_parser.py +++ b/distributed_event_factory/parser/object/object_source_parser.py @@ -1,6 +1,7 @@ from distributed_event_factory.core.object import GenericObjectSource from distributed_event_factory.core.object_id import ObjectId from distributed_event_factory.parser.parser import Parser +from distributed_event_factory.provider.object.input.input_provider import InputObjectProvider class ObjectSourceParser(Parser): @@ -11,10 +12,18 @@ def add_dependency(self, key: str, dependency): pass def parse(self, config): + input_list = [] + if config["input"]: + for input in config["input"]: + input_list.append(InputObjectProvider( + objectName=input["object"], + numberOfObject=input["number"], + lastState=input["lastState"] + )) return GenericObjectSource( object_id=ObjectId(config["name"]), object_type=config["type"], - input_objects=config["input"].split(","), + input_objects=input_list, length=config["length"], width=config["width"] ) diff --git a/distributed_event_factory/parser/parser_registry.py b/distributed_event_factory/parser/parser_registry.py index 334f0a7..1eb62aa 100644 --- a/distributed_event_factory/parser/parser_registry.py +++ b/distributed_event_factory/parser/parser_registry.py @@ -13,6 +13,7 @@ GenericProbabilityEventSelectionParser from distributed_event_factory.parser.datasource.event.selection.ordered_event_selection_parser import \ OrderedEventSelectionParser +from distributed_event_factory.parser.datasource.event.selection.parallel_event_selection_parser import ParallelEventSelectionParser from distributed_event_factory.parser.datasource.event.selection.uniform_event_selection import \ UniformEventSelectionParser from distributed_event_factory.parser.datasource.event.transition.transition_parser import TransitionParser @@ -102,6 +103,8 @@ def __init__(self): self.uniform_event_selection_parser = (UniformEventSelectionParser()) self.ordered_event_selection_parser = (OrderedEventSelectionParser()) + self.parallel_event_selection_parser = (ParallelEventSelectionParser() + .add_dependency("eventData", self.event_data_list_parser)) self.drifting_selection_parser = (DriftingProbabilityEventSelectionParser() .add_dependency("distribution", self.distribution_parser) @@ -117,6 +120,7 @@ def __init__(self): .add_dependency("uniform", self.uniform_event_selection_parser) .add_dependency("genericProbability", self.probability_selection_parser) .add_dependency("driftingProbability", self.drifting_selection_parser) + .add_dependency("parallel", self.parallel_event_selection_parser) .add_dependency("objectCentric", self.input_parser) .add_dependency("default", self.dummy_object_parser)) diff --git a/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py b/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py index 47a220b..be4ff2e 100644 --- a/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py +++ b/distributed_event_factory/provider/eventselection/generic_probability_event_selection_provider.py @@ -13,4 +13,4 @@ def __init__(self, probability_distribution: List[float], potential_events: List def get_event_data(self): index = random.choice(len(self.potential_events), p=self.probability_distribution) - return self.potential_events[index] + return self.potential_events diff --git a/distributed_event_factory/provider/eventselection/parallel_selection_provider.py b/distributed_event_factory/provider/eventselection/parallel_selection_provider.py new file mode 100644 index 0000000..5b75d0c --- /dev/null +++ b/distributed_event_factory/provider/eventselection/parallel_selection_provider.py @@ -0,0 +1,13 @@ +from typing import List + +from distributed_event_factory.provider.event.event_provider import EventDataProvider +from distributed_event_factory.provider.eventselection.event_selection_provider import EventSelectionProvider + + +class ParallelEventSelectionProvider(EventSelectionProvider): + + def __init__(self, potential_events: List[EventDataProvider]): + self.potential_events = potential_events + + def get_event_data(self): + return self.potential_events[0] \ No newline at end of file diff --git a/distributed_event_factory/simulation/process_simulation.py b/distributed_event_factory/simulation/process_simulation.py index 8a86434..3c1b532 100644 --- a/distributed_event_factory/simulation/process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -2,10 +2,12 @@ from datetime import datetime, timedelta from queue import PriorityQueue from typing import Dict, List +import math from core.datasource_id import ROUTING_ID from core.object import Object from core.route import Route +from distributed_event_factory.core.end_datasource import EndDataSource from distributed_event_factory.provider.data.count_provider import CountProvider from process_mining_core.datastructure.core.event import Event @@ -34,7 +36,7 @@ def __init__( ): self.max_concurrent_cases = max_concurrent_cases - self.tokens: PriorityQueue[Token] = PriorityQueue(self.max_concurrent_cases.get()) + self.tokens: PriorityQueue[Token] = PriorityQueue() self.datasources: Dict[str, DataSource] = data_sources self.case_id_provider = case_id_provider self.last_timestamp = datetime.now() @@ -43,6 +45,8 @@ def __init__( self.objects = objects self.routes = routes self.stocks = stocks + self.processes : Dict[str, datetime] = {} + self.orders : List[str] = [] self.add_configured_stocks_in_warehouse(self.last_timestamp) def simulate(self) -> Event: @@ -54,14 +58,37 @@ def simulate(self) -> Event: token = self.tokens.get() emit_event = token.event + if type(token.data_source_id) is List: + copy_of_data_sources = token.data_source_id + for data_source_id in copy_of_data_sources: + token.data_source_id = data_source_id + self.tokens.put(token.clone()) + self.tokens.get() if token.data_source_id == END_DATA_SOURCE_ID: token = self.start_new_case() if token.data_source_id == START_SENSOR_ID: token.data_source_id = DataSourceId( - self._get_sensor_with_id(START_SENSOR_ID).get_event_data().get_transition()) + self._get_sensor_with_id(START_SENSOR_ID).get_event_data()[0].get_transition()) + #TODO create different product orders + orderObject = self.objects.get("woodShelf") + self.orders.append(orderObject) + self.append_order(orderObject) current_data_source = self._get_sensor_with_id(token.data_source_id) + self.processes[current_data_source.sensor_id.id] = token.last_timestamp event = current_data_source.get_event_data() + if type(event) is list: + first = True + for e in event: + if first: + first = False + else: + pass + # handling unsure because of the need to put a builded event into tokens + #new_token = token.clone() + #token.event = e + #self.tokens.put(new_token) + event = event[0] necessary_input = current_data_source.event_provider.type_parser if not self.check_input_in_object_store(necessary_input): activity, current_data_source, necessary_input, next_datasource, output = self.set_parameters_for_previous_event( @@ -71,7 +98,6 @@ def simulate(self) -> Event: activity = event.get_activity_provider().get_activity() output = event.get_activity_provider().get_output() input_objects = self.remove_used_input(necessary_input) - self.set_next_datasource_token(activity, current_data_source, next_datasource, token) token.add_to_last_timestamp(event.get_duration()) self.last_timestamp = token.last_timestamp self.add_produced_output(output, necessary_input, input_objects, self.last_timestamp) @@ -80,7 +106,29 @@ def simulate(self) -> Event: necessary_input, output) else: token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source) - self.tokens.put(token) + self.set_next_datasource_token(activity, current_data_source, next_datasource, token) + if self.objects: + numberOfTokens = self.tokens.qsize() + input_of_following_event = self._get_sensor_with_id(token.data_source_id) + first_output = output[0] + if type(first_output) is not Dict: + first_output = eval(str(first_output)) + if not isinstance(input_of_following_event, EndDataSource) and str(first_output.get(OBJECT_NAME)) != "order": + input_of_following_event = input_of_following_event.event_provider.type_parser + for output_elem in output: + if type(output_elem) is not Dict: + output_elem = eval(str(output_elem)) + if self.find_in_necessary_input(input_of_following_event, output_elem.get(OBJECT_NAME)): + num_of_input_following_event = self.find_in_necessary_input(input_of_following_event, output_elem.get(OBJECT_NAME)).numberOfObject + if output_elem.get(NUMBER_OF_OBJECT) > num_of_input_following_event: + self.set_next_datasource_token(activity, current_data_source, next_datasource, token) + loop_times = math.ceil(output_elem.get(NUMBER_OF_OBJECT)/num_of_input_following_event) + for x in range(loop_times): + self.tokens.put(token.clone()) + if numberOfTokens == self.tokens.qsize(): + self.tokens.put(token) + else: + self.tokens.put(token) return emit_event @@ -116,6 +164,13 @@ def _get_sensor_with_id(self, data_source_id) -> DataSource: if self.datasources[sensor].get_id() == data_source_id: return self.datasources[sensor] raise ValueError("Sensor not found") + + def append_order(self, orderObject): + if orderObject.input_objects: + for input in orderObject.input_objects: + for i in range (0, input.numberOfObject): + self.orders.append(self.objects.get(input.objectName)) + self.append_order(self.objects.get(input.objectName)) def check_input_in_object_store(self, necessary_inputs): for obj in necessary_inputs: @@ -167,7 +222,7 @@ def set_next_datasource_token(self, activity, current_data_source, next_datasour for route in self.routes.get("default"): if route.get_route_for_activity() == activity and route.get_start() == start_point: token.add_to_last_timestamp(route.get_duration()) - next_datasource = route.get_end() #mehrere enden möglich machen in route (Liste) und datasource dann auch zu einer Liste machen + next_datasource = route.get_end() token.set_data_source_id(self.datasources[next_datasource].get_id()) return else: @@ -271,3 +326,9 @@ def add_to_last_timestamp(self, duration): def __lt__(self, other): return self.last_timestamp < other.last_timestamp + + def clone(self): + return Token(self.case, + self.data_source_id, + self.last_timestamp, + self.event) From 7eedf1df2f9e035858002a1d9f93174854651f4c Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 19 Jun 2025 15:48:44 +0200 Subject: [PATCH 074/124] refactoring and bug fixing of duplicates for input and timing in waiting loop --- .../simulation/process_simulation.py | 154 ++++++++++-------- 1 file changed, 87 insertions(+), 67 deletions(-) diff --git a/distributed_event_factory/simulation/process_simulation.py b/distributed_event_factory/simulation/process_simulation.py index 3c1b532..1fda809 100644 --- a/distributed_event_factory/simulation/process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -14,6 +14,7 @@ from distributed_event_factory.core.datasource import DataSource from distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID, DataSourceId from distributed_event_factory.provider.data.case_provider import CaseIdProvider +from provider.event.event_provider import EventDataProvider from provider.object.input.input_provider import InputObjectProvider from simulation.object_event import ObjectEvent @@ -45,8 +46,7 @@ def __init__( self.objects = objects self.routes = routes self.stocks = stocks - self.processes : Dict[str, datetime] = {} - self.orders : List[str] = [] + self.orders: List[str] = [] self.add_configured_stocks_in_warehouse(self.last_timestamp) def simulate(self) -> Event: @@ -62,76 +62,52 @@ def simulate(self) -> Event: copy_of_data_sources = token.data_source_id for data_source_id in copy_of_data_sources: token.data_source_id = data_source_id - self.tokens.put(token.clone()) + self.tokens.put(token.clone()) self.tokens.get() if token.data_source_id == END_DATA_SOURCE_ID: token = self.start_new_case() if token.data_source_id == START_SENSOR_ID: + # Only one start allowed token.data_source_id = DataSourceId( self._get_sensor_with_id(START_SENSOR_ID).get_event_data()[0].get_transition()) - #TODO create different product orders + # TODO create different product orders (at the moment not used) orderObject = self.objects.get("woodShelf") self.orders.append(orderObject) self.append_order(orderObject) current_data_source = self._get_sensor_with_id(token.data_source_id) - self.processes[current_data_source.sensor_id.id] = token.last_timestamp event = current_data_source.get_event_data() if type(event) is list: - first = True for e in event: - if first: - first = False - else: - pass - # handling unsure because of the need to put a builded event into tokens - #new_token = token.clone() - #token.event = e - #self.tokens.put(new_token) - event = event[0] - necessary_input = current_data_source.event_provider.type_parser - if not self.check_input_in_object_store(necessary_input): - activity, current_data_source, necessary_input, next_datasource, output = self.set_parameters_for_previous_event( - current_data_source, necessary_input, token) + self.inner_simulation_per_event(current_data_source, e, token) else: - next_datasource = event.get_transition() - activity = event.get_activity_provider().get_activity() - output = event.get_activity_provider().get_output() - input_objects = self.remove_used_input(necessary_input) - token.add_to_last_timestamp(event.get_duration()) - self.last_timestamp = token.last_timestamp - self.add_produced_output(output, necessary_input, input_objects, self.last_timestamp) - if (necessary_input is not None and necessary_input) or output is not None: - token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source, - necessary_input, output) - else: - token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source) - self.set_next_datasource_token(activity, current_data_source, next_datasource, token) - if self.objects: - numberOfTokens = self.tokens.qsize() - input_of_following_event = self._get_sensor_with_id(token.data_source_id) - first_output = output[0] - if type(first_output) is not Dict: - first_output = eval(str(first_output)) - if not isinstance(input_of_following_event, EndDataSource) and str(first_output.get(OBJECT_NAME)) != "order": - input_of_following_event = input_of_following_event.event_provider.type_parser - for output_elem in output: - if type(output_elem) is not Dict: - output_elem = eval(str(output_elem)) - if self.find_in_necessary_input(input_of_following_event, output_elem.get(OBJECT_NAME)): - num_of_input_following_event = self.find_in_necessary_input(input_of_following_event, output_elem.get(OBJECT_NAME)).numberOfObject - if output_elem.get(NUMBER_OF_OBJECT) > num_of_input_following_event: - self.set_next_datasource_token(activity, current_data_source, next_datasource, token) - loop_times = math.ceil(output_elem.get(NUMBER_OF_OBJECT)/num_of_input_following_event) - for x in range(loop_times): - self.tokens.put(token.clone()) - if numberOfTokens == self.tokens.qsize(): - self.tokens.put(token) - else: - self.tokens.put(token) + self.inner_simulation_per_event(current_data_source, event, token) return emit_event + def inner_simulation_per_event(self, current_data_source, event, token): + if True: + pass + necessary_input = current_data_source.event_provider.type_parser + if not self.check_input_in_object_store(necessary_input): + activity, current_data_source, necessary_input, next_datasource, output = self.set_parameters_for_previous_event( + current_data_source, necessary_input, token) + else: + next_datasource = event.get_transition() + activity = event.get_activity_provider().get_activity() + output = event.get_activity_provider().get_output() + input_objects = self.remove_used_input(necessary_input) + token.add_to_last_timestamp(event.get_duration()) + self.last_timestamp = token.last_timestamp + self.add_produced_output(output, necessary_input, input_objects, self.last_timestamp) + if (necessary_input is not None and necessary_input) or output is not None: + token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source, + necessary_input, output) + else: + token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source) + self.set_next_datasource_token(activity, current_data_source, next_datasource, token) + self.add_tokens(activity, current_data_source, next_datasource, output, token) + def start_new_case(self): case_id = self.case_id_provider.get() token = Token(case_id, START_SENSOR_ID, self.last_timestamp, None) @@ -164,11 +140,11 @@ def _get_sensor_with_id(self, data_source_id) -> DataSource: if self.datasources[sensor].get_id() == data_source_id: return self.datasources[sensor] raise ValueError("Sensor not found") - + def append_order(self, orderObject): if orderObject.input_objects: for input in orderObject.input_objects: - for i in range (0, input.numberOfObject): + for i in range(0, input.numberOfObject): self.orders.append(self.objects.get(input.objectName)) self.append_order(self.objects.get(input.objectName)) @@ -178,13 +154,16 @@ def check_input_in_object_store(self, necessary_inputs): obj = eval(str(obj)) if obj.get(LAST_STATE): if not self.object_store.__contains__(obj.get(OBJECT_NAME)) or self.object_store.get( - obj.get(OBJECT_NAME)) < obj.get(NUMBER_OF_OBJECT) or sum(1 for stored_obj in self.object_store_objects if - stored_obj.object_id.id == obj.get(OBJECT_NAME) and stored_obj.get_last_changed_value() == obj.get( - LAST_STATE)) < obj.get(NUMBER_OF_OBJECT): + obj.get(OBJECT_NAME)) < obj.get(NUMBER_OF_OBJECT) or sum( + 1 for stored_obj in self.object_store_objects if + stored_obj.object_id.id == obj.get(OBJECT_NAME) and stored_obj.get_last_changed_value() == obj.get( + LAST_STATE)) < obj.get(NUMBER_OF_OBJECT): return False elif not self.object_store.__contains__(obj.get(OBJECT_NAME)) or self.object_store.get( - obj.get(OBJECT_NAME)) < obj.get(NUMBER_OF_OBJECT) or sum(1 for stored_obj in self.object_store_objects if - stored_obj.object_id.id == obj.get(OBJECT_NAME) and not stored_obj.values_changed) < obj.get(NUMBER_OF_OBJECT): + obj.get(OBJECT_NAME)) < obj.get(NUMBER_OF_OBJECT) or sum( + 1 for stored_obj in self.object_store_objects if + stored_obj.object_id.id == obj.get(OBJECT_NAME) and not stored_obj.values_changed) < obj.get( + NUMBER_OF_OBJECT): return False return True @@ -213,7 +192,7 @@ def set_parameters_for_previous_event(self, current_data_source, necessary_input necessary_input = [necessary_input] current_data_source = self.datasources.get(token.event.node) if not self.check_input_in_object_store(necessary_input): - raise ValueError("Input not found") + raise ValueError("Input not found", necessary_input) return activity, current_data_source, necessary_input, next_datasource, output def set_next_datasource_token(self, activity, current_data_source, next_datasource, token): @@ -222,7 +201,7 @@ def set_next_datasource_token(self, activity, current_data_source, next_datasour for route in self.routes.get("default"): if route.get_route_for_activity() == activity and route.get_start() == start_point: token.add_to_last_timestamp(route.get_duration()) - next_datasource = route.get_end() + next_datasource = route.get_end() token.set_data_source_id(self.datasources[next_datasource].get_id()) return else: @@ -292,6 +271,46 @@ def remove_input_from_object_store_objects(self, element, input_objects): input_obj = self.object_store_objects.pop(object_from_store_index) input_objects.append(input_obj) + def add_tokens(self, activity, current_data_source, next_datasource, output, token): + if self.objects: + number_of_tokens = self.tokens.qsize() + input_of_following_event = self._get_sensor_with_id(token.data_source_id) + first_output = output[0] + if type(first_output) is not Dict: + first_output = eval(str(first_output)) + + if not isinstance(input_of_following_event, EndDataSource) and str( + first_output.get(OBJECT_NAME)) != "order": + input_of_following_event = input_of_following_event.event_provider.type_parser + for output_elem in output: + if type(output_elem) is not Dict: + output_elem = eval(str(output_elem)) + if self.find_in_necessary_input(input_of_following_event, output_elem.get(OBJECT_NAME)): + num_of_input_following_event = self.find_in_necessary_input(input_of_following_event, + output_elem.get( + OBJECT_NAME)).numberOfObject + + if output_elem.get(NUMBER_OF_OBJECT) > num_of_input_following_event: + self.set_next_datasource_token(activity, current_data_source, next_datasource, token) + output_input_factor = math.ceil( + output_elem.get(NUMBER_OF_OBJECT) / num_of_input_following_event) + event_data = self.datasources[next_datasource].get_event_data() + if type(event_data) is list and len(event_data) == 1: + duration_following_activity = event_data[0].get_duration() + elif type(event_data) is EventDataProvider: + duration_following_activity = event_data.get_duration() + else: + raise ValueError("Duration not known, multiple events after loop of events") + for x in range(output_input_factor): + if x != 0: + token.event = None + token.add_to_last_timestamp(x * duration_following_activity) + self.tokens.put(token.clone()) + if number_of_tokens == self.tokens.qsize(): + self.tokens.put(token) + else: + self.tokens.put(token) + def find_in_necessary_input(self, necessary_input, key): return next((item for item in necessary_input if item.objectName == key), None) @@ -305,6 +324,7 @@ def find_in_list_with_change_state(self, data, key, change_value): return next( (item for item in data if item.object_id.id == key and item.get_last_changed_value() == change_value), None) + class Token: def __init__( self, @@ -326,9 +346,9 @@ def add_to_last_timestamp(self, duration): def __lt__(self, other): return self.last_timestamp < other.last_timestamp - + def clone(self): return Token(self.case, - self.data_source_id, - self.last_timestamp, - self.event) + self.data_source_id, + self.last_timestamp, + self.event) From e966dd3ebc4dd58066477167f1db18ca5ef33dda Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 20 Jun 2025 14:24:00 +0200 Subject: [PATCH 075/124] Comments + Emission of multiple events --- .../core/core_decisions_datasource.py | 6 +- distributed_event_factory/core/datasource.py | 2 +- distributed_event_factory/core/object.py | 1 + distributed_event_factory/event_factory.py | 1 - .../parallel_selection_provider.py | 2 +- .../simulation/process_simulation.py | 70 ++++++++++++------- 6 files changed, 51 insertions(+), 31 deletions(-) diff --git a/distributed_event_factory/core/core_decisions_datasource.py b/distributed_event_factory/core/core_decisions_datasource.py index 24ea43d..3c6bf15 100644 --- a/distributed_event_factory/core/core_decisions_datasource.py +++ b/distributed_event_factory/core/core_decisions_datasource.py @@ -2,13 +2,13 @@ class GenericDecisions: def __init__( self, simulation_provider, - type_parser + input_objects ): self.simulation_provider = simulation_provider - self.type_parser= type_parser + self.input_objects= input_objects def get_event_data(self): return self.simulation_provider.get_event_data() def get_input_data(self): - return self.type_parser \ No newline at end of file + return self.input_objects \ No newline at end of file diff --git a/distributed_event_factory/core/datasource.py b/distributed_event_factory/core/datasource.py index 90e4493..26d9eb7 100644 --- a/distributed_event_factory/core/datasource.py +++ b/distributed_event_factory/core/datasource.py @@ -15,7 +15,7 @@ def __init__( ): self.sensor_id: DataSourceId = data_source_id self.group_id: str = group_id - self.event_provider = event_provider + self.event_provider: EventSelectionProvider = event_provider self.event_log: List[Event] = [] def get_id(self) -> DataSourceId: diff --git a/distributed_event_factory/core/object.py b/distributed_event_factory/core/object.py index 176a2f3..18dfd9d 100644 --- a/distributed_event_factory/core/object.py +++ b/distributed_event_factory/core/object.py @@ -13,6 +13,7 @@ def __init__( ): self.timestamp = timestamp self.object_state = object_state + # Maybe call that object type self.object_id = object_id diff --git a/distributed_event_factory/event_factory.py b/distributed_event_factory/event_factory.py index 18ab3d4..8e703c5 100644 --- a/distributed_event_factory/event_factory.py +++ b/distributed_event_factory/event_factory.py @@ -14,7 +14,6 @@ from parser.route.route_parser import RouteParser from parser.stock.stock_parser import StockParser - class EventFactory: def __init__(self): self.routes = dict() diff --git a/distributed_event_factory/provider/eventselection/parallel_selection_provider.py b/distributed_event_factory/provider/eventselection/parallel_selection_provider.py index 5b75d0c..cf0dacd 100644 --- a/distributed_event_factory/provider/eventselection/parallel_selection_provider.py +++ b/distributed_event_factory/provider/eventselection/parallel_selection_provider.py @@ -10,4 +10,4 @@ def __init__(self, potential_events: List[EventDataProvider]): self.potential_events = potential_events def get_event_data(self): - return self.potential_events[0] \ No newline at end of file + return self.potential_events \ No newline at end of file diff --git a/distributed_event_factory/simulation/process_simulation.py b/distributed_event_factory/simulation/process_simulation.py index 1fda809..00bd729 100644 --- a/distributed_event_factory/simulation/process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -37,33 +37,44 @@ def __init__( ): self.max_concurrent_cases = max_concurrent_cases + # Add all interactions with token to the token class self.tokens: PriorityQueue[Token] = PriorityQueue() self.datasources: Dict[str, DataSource] = data_sources - self.case_id_provider = case_id_provider + self.case_id_provider: CaseIdProvider = case_id_provider self.last_timestamp = datetime.now() + + # Refactor to one own class, two methods get_objects, get_object_count self.object_store: Dict[str, int] = {} self.object_store_objects: List[Object] = [] - self.objects = objects - self.routes = routes - self.stocks = stocks + + self.objects: Dict[str, Object] = objects + self.routes: Dict[str, Route] = routes + self.stocks: Dict[str, InputObjectProvider] = stocks + + # Are that also objects? self.orders: List[str] = [] self.add_configured_stocks_in_warehouse(self.last_timestamp) + self.buffered_events = [] def simulate(self) -> Event: - emit_event = None + if not self.buffered_events: + new_events = self.simulate_next_steps() + self.buffered_events = new_events + return self.buffered_events.pop() + + def simulate_next_steps(self) -> List[Event]: + emit_event = [] + + # Potentially get stuck if no emit_event found while not emit_event: if len(self.tokens.queue) < self.max_concurrent_cases.get(): token = self.start_new_case() else: token = self.tokens.get() - emit_event = token.event - if type(token.data_source_id) is List: - copy_of_data_sources = token.data_source_id - for data_source_id in copy_of_data_sources: - token.data_source_id = data_source_id - self.tokens.put(token.clone()) - self.tokens.get() + if token.event: + emit_event.append(token.event) + if token.data_source_id == END_DATA_SOURCE_ID: token = self.start_new_case() @@ -85,24 +96,27 @@ def simulate(self) -> Event: return emit_event + # def inner_simulation_per_event(self, current_data_source, event, token): - if True: - pass - necessary_input = current_data_source.event_provider.type_parser - if not self.check_input_in_object_store(necessary_input): - activity, current_data_source, necessary_input, next_datasource, output = self.set_parameters_for_previous_event( - current_data_source, necessary_input, token) + required_input_objects = current_data_source.event_provider.input_objects # type parser is a weird word + + # This line can be nicer after the refactoring to an object class + if not self.check_input_in_object_store(required_input_objects): + activity, current_data_source, required_input_objects, next_datasource, output = self.set_parameters_for_previous_event( + current_data_source, required_input_objects, token) else: next_datasource = event.get_transition() activity = event.get_activity_provider().get_activity() output = event.get_activity_provider().get_output() - input_objects = self.remove_used_input(necessary_input) + + # to object store class + input_objects = self.remove_used_input(required_input_objects) token.add_to_last_timestamp(event.get_duration()) self.last_timestamp = token.last_timestamp - self.add_produced_output(output, necessary_input, input_objects, self.last_timestamp) - if (necessary_input is not None and necessary_input) or output is not None: + self.add_produced_output(output, required_input_objects, input_objects, self.last_timestamp) + if (required_input_objects is not None and required_input_objects) or output is not None: token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source, - necessary_input, output) + required_input_objects, output) else: token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source) self.set_next_datasource_token(activity, current_data_source, next_datasource, token) @@ -198,7 +212,10 @@ def set_parameters_for_previous_event(self, current_data_source, necessary_input def set_next_datasource_token(self, activity, current_data_source, next_datasource, token): if next_datasource == ROUTING_ID.get_name(): start_point = current_data_source.sensor_id.id + + # This is for many route files, currently only one route is configured for route in self.routes.get("default"): + # Consider using a dictionary where activity if route.get_route_for_activity() == activity and route.get_start() == start_point: token.add_to_last_timestamp(route.get_duration()) next_datasource = route.get_end() @@ -239,8 +256,11 @@ def add_output_to_object_store_objects(self, element, input_objects, necessary_i def add_object_to_object_store_objects_with_change(self, element, output_object, timestamp): output_object.add_change( - Object(timestamp=timestamp.strftime(Y_M_D_H_M_S), object_state=element.get(CHANGE), - object_id=output_object.object_id)) + Object( + timestamp=timestamp.strftime(Y_M_D_H_M_S), + object_state=element.get(CHANGE), + object_id=output_object.object_id) + ) self.object_store_objects.append( output_object) @@ -281,7 +301,7 @@ def add_tokens(self, activity, current_data_source, next_datasource, output, tok if not isinstance(input_of_following_event, EndDataSource) and str( first_output.get(OBJECT_NAME)) != "order": - input_of_following_event = input_of_following_event.event_provider.type_parser + input_of_following_event = input_of_following_event.event_provider.input_objects for output_elem in output: if type(output_elem) is not Dict: output_elem = eval(str(output_elem)) From f3cc5e8f93d46e80306dccfddd8f84938840c3cd Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 20 Jun 2025 15:28:37 +0200 Subject: [PATCH 076/124] new approach by checking available workstations --- .../e1-outgoing-stock.yaml | 9 +---- .../smart-factory-easier/routing.yaml | 2 +- .../parser/datasource/data_source_parser.py | 2 +- .../datasource/data_source_registry.py | 2 +- .../simulation/object_event.py | 4 +- .../simulation/ocel_sim_test.py | 36 ++++++++++++++++++ .../process_simulation_object_centric.py | 29 +++++++++++++++ .../simulator_objects/object_storage.py | 18 +++++++++ .../simulator_objects/workprocessstep.py | 37 +++++++++++++++++++ .../simulator_objects/workstation_service.py | 20 ++++++++++ 10 files changed, 147 insertions(+), 12 deletions(-) create mode 100644 distributed_event_factory/simulation/ocel_sim_test.py create mode 100644 distributed_event_factory/simulation/process_simulation_object_centric.py create mode 100644 distributed_event_factory/simulation/simulator_objects/object_storage.py create mode 100644 distributed_event_factory/simulation/simulator_objects/workprocessstep.py create mode 100644 distributed_event_factory/simulation/simulator_objects/workstation_service.py diff --git a/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml b/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml index b466517..5541fde 100644 --- a/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml +++ b/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml @@ -11,18 +11,13 @@ spec: lastState: "" eventData: - activity: - name: "Sent to sawing machine" + name: "retrieve resources" output: - object: "barResource" number: 1 change: "" - duration: 3 - transition: "" - - activity: - name: "Sent to assembly station" - output: - object: "screw" number: 13 change: "" - duration: 2 + duration: 3 transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/routing.yaml b/config/datasource/smart-factory-easier/routing.yaml index 7471d90..2457205 100644 --- a/config/datasource/smart-factory-easier/routing.yaml +++ b/config/datasource/smart-factory-easier/routing.yaml @@ -2,7 +2,7 @@ kind: route name: "default" spec: routes: - - routeForActivity: "Sent to sawing machine" + - routeForActivity: "retrieve resources" start: "OutgoingStock" end: "SawingBar" transferObjects: diff --git a/distributed_event_factory/parser/datasource/data_source_parser.py b/distributed_event_factory/parser/datasource/data_source_parser.py index fd624d6..6d73966 100644 --- a/distributed_event_factory/parser/datasource/data_source_parser.py +++ b/distributed_event_factory/parser/datasource/data_source_parser.py @@ -14,7 +14,7 @@ def add_dependency(self, key: str, dependency): def parse(self, config): return GenericDataSource( data_source_id=DataSourceId(config["name"]), - group_id=config["group"], + group_id=config["group_id"], event_provider=self.dependencies["eventData"].parse(config) ) diff --git a/distributed_event_factory/provider/datasource/data_source_registry.py b/distributed_event_factory/provider/datasource/data_source_registry.py index 95cff6c..2dfebd8 100644 --- a/distributed_event_factory/provider/datasource/data_source_registry.py +++ b/distributed_event_factory/provider/datasource/data_source_registry.py @@ -22,7 +22,7 @@ def get(self, data_source_definitions: List[str], default_sink: SinkProvider): data_sources.append( GenericDataSource( data_source_id=DataSourceId(sensor_id), - group_id=definition.get("groupId", "default group"), + group_id=definition.get("groupId", "default group_id"), event_provider=EventSelectionProviderRegistry().get(config=definition["eventGeneration"]), sink=self.get_sink(definition, sensor_id, default_sink) ) diff --git a/distributed_event_factory/simulation/object_event.py b/distributed_event_factory/simulation/object_event.py index 658a1a5..9fe0d0e 100644 --- a/distributed_event_factory/simulation/object_event.py +++ b/distributed_event_factory/simulation/object_event.py @@ -2,8 +2,8 @@ class ObjectEvent(Event): - def __init__(self, timestamp, activity, case_id, node, group_id, input, output): - Event.__init__(self, timestamp, activity, case_id, node, group_id) + def __init__(self, timestamp, activity, node, group_id, input, output): + Event.__init__(self, timestamp, activity, None, node, group_id) self.input = input self.output = output diff --git a/distributed_event_factory/simulation/ocel_sim_test.py b/distributed_event_factory/simulation/ocel_sim_test.py new file mode 100644 index 0000000..d9bbc90 --- /dev/null +++ b/distributed_event_factory/simulation/ocel_sim_test.py @@ -0,0 +1,36 @@ +from simulation.process_simulation_object_centric import ProcessSimulationObjectCentric +from simulation.simulator_objects.object_storage import ObjectStorage +from simulation.simulator_objects.workprocessstep import WorkProcessStep + +if __name__ == '__main__': + simulator: ProcessSimulationObjectCentric = ProcessSimulationObjectCentric( + object_storage=ObjectStorage(), + workstation_steps=[ + WorkProcessStep( + activity="A", + node="W1", + group_id="W1", + input_objects=[], + output_objects=["O1"], + duration=60, + ), + WorkProcessStep( + activity="B", + node="W2", + group_id="W2", + input_objects=["O1"], + output_objects=["O2"], + duration=20, + ), + WorkProcessStep( + activity="C", + node="W3", + group_id="W3", + input_objects=["O1", "O2"], + output_objects=[], + duration=10, + ) + ] + ) + for i in range(10): + print(simulator.simulate()) \ No newline at end of file diff --git a/distributed_event_factory/simulation/process_simulation_object_centric.py b/distributed_event_factory/simulation/process_simulation_object_centric.py new file mode 100644 index 0000000..6ce4bb3 --- /dev/null +++ b/distributed_event_factory/simulation/process_simulation_object_centric.py @@ -0,0 +1,29 @@ +from datetime import datetime +from typing import List + +from process_mining_core.datastructure.core.event import Event +from simulation.simulator_objects.object_storage import ObjectStorage +from simulation.simulator_objects.workprocessstep import WorkProcessStep +from simulation.simulator_objects.workstation_service import WorkstationService + + +class ProcessSimulationObjectCentric: + def __init__( + self, + workstation_steps: List[WorkProcessStep], + object_storage: ObjectStorage + ): + self.workstation_steps = workstation_steps + self.workstation_service = WorkstationService() + self.current_timestamp = datetime.now() + self.object_storage = object_storage + + def simulate(self) -> Event: + available_steps: List[WorkProcessStep] = ( + self.workstation_service.get_activatable_workstations(self.workstation_steps, self.object_storage)) + next_step: WorkProcessStep = self.workstation_service.get_workstation(available_steps) + event = next_step.produce_event(self.current_timestamp) + self.object_storage.add_object(event.output) + return event + + diff --git a/distributed_event_factory/simulation/simulator_objects/object_storage.py b/distributed_event_factory/simulation/simulator_objects/object_storage.py new file mode 100644 index 0000000..6e0e7c9 --- /dev/null +++ b/distributed_event_factory/simulation/simulator_objects/object_storage.py @@ -0,0 +1,18 @@ +from typing import List + +from core.object import Object + + +class ObjectStorage: + + def __init__(self): + self.objects: List[str] = [] + + def contains_all_objects(self, objects: List[Object]): + for obj in objects: + if not obj in self.objects: + return False + return True + + def add_object(self, obj: str): + self.objects.extend(obj) diff --git a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py new file mode 100644 index 0000000..36cfc20 --- /dev/null +++ b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py @@ -0,0 +1,37 @@ +from datetime import timedelta + +from process_mining_core.datastructure.core.event import Event + +from simulation.object_event import ObjectEvent + + +class WorkProcessStep: + + def __init__( + self, + activity, + input_objects, + output_objects, + duration, + node, + group_id + ): + self.input_objects = input_objects + self.output_objects = output_objects + self.duration = duration + self.activity = activity + self.node = node + self.group_id = group_id + + def produce_event(self, current_timestamp) -> ObjectEvent: + return ObjectEvent( + timestamp=self.add_to_last_timestamp(current_timestamp, self.duration), + activity=self.activity, + node=self.node, + group_id=self.group_id, + input=self.input_objects, + output=self.output_objects + ) + + def add_to_last_timestamp(self, current_timestamp, duration): + return current_timestamp + timedelta(seconds=duration) diff --git a/distributed_event_factory/simulation/simulator_objects/workstation_service.py b/distributed_event_factory/simulation/simulator_objects/workstation_service.py new file mode 100644 index 0000000..b977e36 --- /dev/null +++ b/distributed_event_factory/simulation/simulator_objects/workstation_service.py @@ -0,0 +1,20 @@ +import random +from typing import List + +from simulation.simulator_objects.object_storage import ObjectStorage +from simulation.simulator_objects.workprocessstep import WorkProcessStep + + +class WorkstationService: + + def get_activatable_workstations(self, workstations: List[WorkProcessStep], object_storage: ObjectStorage): + activatable_workstations = [] + + for workstation in workstations: + if object_storage.contains_all_objects(workstation.input_objects): + activatable_workstations.append(workstation) + + return activatable_workstations + + def get_workstation(self, workstations: List[WorkProcessStep]) -> WorkProcessStep: + return workstations[random.randint(0, len(workstations) - 1)] \ No newline at end of file From 74bfc3f8e5d957d8c6ccaf4e995871bc4505c205 Mon Sep 17 00:00:00 2001 From: ulpi Date: Wed, 25 Jun 2025 15:12:20 +0200 Subject: [PATCH 077/124] use info of yaml for new approach --- distributed_event_factory/core/object.py | 8 ++-- .../parser/datasource/data_source_parser.py | 2 +- .../simulation/countbased.py | 22 +++++++--- .../simulation/loadtest.py | 4 +- .../simulation/ocel_sim_test.py | 5 ++- .../simulation/process_simulation.py | 14 +++--- .../process_simulation_object_centric.py | 43 ++++++++++++++++--- .../simulator_objects/object_storage.py | 22 +++++++--- .../simulator_objects/object_utility.py | 16 +++++++ .../simulator_objects/workprocessstep.py | 7 +-- .../simulator_objects/workstation_service.py | 2 +- 11 files changed, 109 insertions(+), 36 deletions(-) create mode 100644 distributed_event_factory/simulation/simulator_objects/object_utility.py diff --git a/distributed_event_factory/core/object.py b/distributed_event_factory/core/object.py index 18dfd9d..bdb67b7 100644 --- a/distributed_event_factory/core/object.py +++ b/distributed_event_factory/core/object.py @@ -4,7 +4,7 @@ from distributed_event_factory.core.object_id import ObjectId -class Object: +class ObjectData: def __init__( self, timestamp, @@ -28,15 +28,15 @@ def __init__( width: int ): - self.values_changed: List[Object] = [] + self.values_changed: List[ObjectData] = [] self.object_id = object_id self.object_type = object_type self.input_objects = input_objects self.length = length self.width = width - def emit_object(self, id, object_name, timestamp) -> Object: - object = Object( + def emit_object(self, id, object_name, timestamp) -> ObjectData: + object = ObjectData( timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), object_type=self.object_type, object_id=self.object_id diff --git a/distributed_event_factory/parser/datasource/data_source_parser.py b/distributed_event_factory/parser/datasource/data_source_parser.py index 6d73966..fd624d6 100644 --- a/distributed_event_factory/parser/datasource/data_source_parser.py +++ b/distributed_event_factory/parser/datasource/data_source_parser.py @@ -14,7 +14,7 @@ def add_dependency(self, key: str, dependency): def parse(self, config): return GenericDataSource( data_source_id=DataSourceId(config["name"]), - group_id=config["group_id"], + group_id=config["group"], event_provider=self.dependencies["eventData"].parse(config) ) diff --git a/distributed_event_factory/simulation/countbased.py b/distributed_event_factory/simulation/countbased.py index 45cda00..81c937e 100644 --- a/distributed_event_factory/simulation/countbased.py +++ b/distributed_event_factory/simulation/countbased.py @@ -2,6 +2,9 @@ from distributed_event_factory.provider.data.count_provider import CountProvider from distributed_event_factory.simulation.abstract_simulation import Simulation from distributed_event_factory.simulation.process_simulation import ProcessSimulator +from simulation.process_simulation_object_centric import ProcessSimulationObjectCentric +from simulation.simulator_objects.object_storage import ObjectStorage +from simulation.simulator_objects.workprocessstep import WorkProcessStep class CountBasedSimulation(Simulation): @@ -15,16 +18,21 @@ def __init__(self, simulation_steps: int, case_id_provider: CaseIdProvider, max_ def run_simulation(self, datasources, sinks, objects, routes, stocks, hook=lambda: None): self.setup_datasource_sink_mapping(sinks) - process_simulator = ProcessSimulator( - case_id_provider=self.case_id_provider, + # process_simulator = ProcessSimulator( + # case_id_provider=self.case_id_provider, + # data_sources=datasources, + # max_concurrent_cases=self.max_concurrent_cases, + # objects=objects, + # routes=routes, + # stocks=stocks, + process_simulator = ProcessSimulationObjectCentric( + object_storage=ObjectStorage(), data_sources=datasources, - max_concurrent_cases=self.max_concurrent_cases, objects=objects, - routes=routes, - stocks=stocks, + stocks=stocks ) - for i in range(self.simulation_steps): + for i in range(10): event = process_simulator.simulate() self.send_event(event) - hook() + hook() diff --git a/distributed_event_factory/simulation/loadtest.py b/distributed_event_factory/simulation/loadtest.py index 20ee007..016d45b 100644 --- a/distributed_event_factory/simulation/loadtest.py +++ b/distributed_event_factory/simulation/loadtest.py @@ -1,6 +1,6 @@ from typing import Dict -from core.object import Object +from core.object import ObjectData from core.route import Route from distributed_event_factory.core.datasource import DataSource from distributed_event_factory.provider.data.case_provider import CaseIdProvider @@ -39,7 +39,7 @@ def start_simulation(self, sinks): for sink in self.sink: sink.start() - def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_mapping: Dict[str, LoadTestHttpSink], objects: Dict[str, Object], routes: Dict[str, Route], stocks: Dict[str, InputObjectProvider], + def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_mapping: Dict[str, LoadTestHttpSink], objects: Dict[str, ObjectData], routes: Dict[str, Route], stocks: Dict[str, InputObjectProvider], hook=lambda: None): self.setup_datasource_sink_mapping(datasource_sink_mapping) for sink in datasource_sink_mapping: diff --git a/distributed_event_factory/simulation/ocel_sim_test.py b/distributed_event_factory/simulation/ocel_sim_test.py index d9bbc90..0fd3855 100644 --- a/distributed_event_factory/simulation/ocel_sim_test.py +++ b/distributed_event_factory/simulation/ocel_sim_test.py @@ -30,7 +30,10 @@ output_objects=[], duration=10, ) - ] + ], + data_sources=None, + objects=None, + stocks=None ) for i in range(10): print(simulator.simulate()) \ No newline at end of file diff --git a/distributed_event_factory/simulation/process_simulation.py b/distributed_event_factory/simulation/process_simulation.py index 00bd729..5422678 100644 --- a/distributed_event_factory/simulation/process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -5,7 +5,7 @@ import math from core.datasource_id import ROUTING_ID -from core.object import Object +from core.object import ObjectData from core.route import Route from distributed_event_factory.core.end_datasource import EndDataSource from distributed_event_factory.provider.data.count_provider import CountProvider @@ -31,7 +31,7 @@ def __init__( data_sources: Dict[str, DataSource], case_id_provider: CaseIdProvider, max_concurrent_cases: CountProvider, - objects: Dict[str, Object], + objects: Dict[str, ObjectData], routes: Dict[str, Route], stocks: Dict[str, InputObjectProvider] ): @@ -45,9 +45,9 @@ def __init__( # Refactor to one own class, two methods get_objects, get_object_count self.object_store: Dict[str, int] = {} - self.object_store_objects: List[Object] = [] + self.object_store_objects: List[ObjectData] = [] - self.objects: Dict[str, Object] = objects + self.objects: Dict[str, ObjectData] = objects self.routes: Dict[str, Route] = routes self.stocks: Dict[str, InputObjectProvider] = stocks @@ -188,8 +188,8 @@ def add_configured_stocks_in_warehouse(self, timestamp): for i in range(stock.numberOfObject): if stock.lastState: obj = self.objects.get(stock.objectName).clone() - obj.add_change(Object(timestamp=timestamp.strftime(Y_M_D_H_M_S), object_state=stock.lastState, - object_id=obj.object_id)) + obj.add_change(ObjectData(timestamp=timestamp.strftime(Y_M_D_H_M_S), object_state=stock.lastState, + object_id=obj.object_id)) self.object_store_objects.append(obj) else: self.object_store_objects.append(self.objects.get(stock.objectName).clone()) @@ -256,7 +256,7 @@ def add_output_to_object_store_objects(self, element, input_objects, necessary_i def add_object_to_object_store_objects_with_change(self, element, output_object, timestamp): output_object.add_change( - Object( + ObjectData( timestamp=timestamp.strftime(Y_M_D_H_M_S), object_state=element.get(CHANGE), object_id=output_object.object_id) diff --git a/distributed_event_factory/simulation/process_simulation_object_centric.py b/distributed_event_factory/simulation/process_simulation_object_centric.py index 6ce4bb3..6f90617 100644 --- a/distributed_event_factory/simulation/process_simulation_object_centric.py +++ b/distributed_event_factory/simulation/process_simulation_object_centric.py @@ -1,24 +1,37 @@ from datetime import datetime -from typing import List +from typing import List, Dict from process_mining_core.datastructure.core.event import Event + +from core.abstract_datasource import DataSource +from core.datasource_id import DataSourceId +from core.object import ObjectData +from provider.object.input.input_provider import InputObjectProvider from simulation.simulator_objects.object_storage import ObjectStorage +from simulation.simulator_objects.object_utility import ObjectUtility from simulation.simulator_objects.workprocessstep import WorkProcessStep from simulation.simulator_objects.workstation_service import WorkstationService class ProcessSimulationObjectCentric: def __init__( - self, - workstation_steps: List[WorkProcessStep], - object_storage: ObjectStorage + self, + object_storage: ObjectStorage, + data_sources: Dict[str, DataSource], + objects: Dict[str, ObjectData], + stocks: Dict[str, InputObjectProvider] ): - self.workstation_steps = workstation_steps + self.workstation_steps = [] self.workstation_service = WorkstationService() self.current_timestamp = datetime.now() self.object_storage = object_storage + self.objects = objects + self.data_sources = data_sources + self.stocks: Dict[str, InputObjectProvider] = stocks def simulate(self) -> Event: + self.configureWorkStationsAndSteps() + self.add_configured_stocks_in_warehouse() available_steps: List[WorkProcessStep] = ( self.workstation_service.get_activatable_workstations(self.workstation_steps, self.object_storage)) next_step: WorkProcessStep = self.workstation_service.get_workstation(available_steps) @@ -26,4 +39,24 @@ def simulate(self) -> Event: self.object_storage.add_object(event.output) return event + def add_configured_stocks_in_warehouse(self): + for stock in self.stocks.get("default"): + self.object_storage.add_objects(ObjectUtility().convert_object_data_to_generic_objects(generic_objects_possible=self.objects, object_data=stock)) + + def configureWorkStationsAndSteps(self): + for data_source in self.data_sources: + if data_source != "" and data_source != "": + data_source_id = DataSourceId(data_source) + events = self._get_sensor_with_id(DataSourceId("Assembly")).get_event_data() + input_objects = self._get_sensor_with_id(DataSourceId("Assembly")).event_provider.input_objects + for e in events: + self.workstation_steps.append(WorkProcessStep(activity=e.get_activity_provider().get_activity(), node=data_source_id.get_name(), + group_id=self._get_sensor_with_id(data_source_id).group_id, + input_objects=input_objects, output_objects=e.get_activity_provider().get_output(), + duration=e.get_duration())) + def _get_sensor_with_id(self, data_source_id) -> DataSource: + for sensor in self.data_sources: + if self.data_sources[sensor].get_id() == data_source_id: + return self.data_sources[sensor] + raise ValueError("Sensor not found") diff --git a/distributed_event_factory/simulation/simulator_objects/object_storage.py b/distributed_event_factory/simulation/simulator_objects/object_storage.py index 6e0e7c9..f426f2f 100644 --- a/distributed_event_factory/simulation/simulator_objects/object_storage.py +++ b/distributed_event_factory/simulation/simulator_objects/object_storage.py @@ -1,18 +1,30 @@ from typing import List -from core.object import Object +from core.object import ObjectData, GenericObjectSource +from provider.object.input.input_provider import InputObjectProvider class ObjectStorage: def __init__(self): - self.objects: List[str] = [] + self.objects: List[GenericObjectSource] = [] - def contains_all_objects(self, objects: List[Object]): + def contains_all_objects(self, objects: List[GenericObjectSource]): for obj in objects: if not obj in self.objects: return False return True - def add_object(self, obj: str): - self.objects.extend(obj) + def contains_all_object_of_data(self, objects: List[InputObjectProvider]): + for obj in objects: + for i in range(obj.numberOfObject): + if not next((item for item in self.objects if item.object_id.id == obj.objectName), None): + return False + return True + + def add_object(self, obj: GenericObjectSource): + self.objects.append(obj) + + def add_objects(self, objects: List[GenericObjectSource]): + for obj in objects: + self.add_object(obj) diff --git a/distributed_event_factory/simulation/simulator_objects/object_utility.py b/distributed_event_factory/simulation/simulator_objects/object_utility.py new file mode 100644 index 0000000..4b25cee --- /dev/null +++ b/distributed_event_factory/simulation/simulator_objects/object_utility.py @@ -0,0 +1,16 @@ +from core.object import GenericObjectSource, ObjectData +from typing import Dict, List + + +class ObjectUtility: + + def convert_object_data_to_generic_objects(self, generic_objects_possible:Dict[str,GenericObjectSource], object_data:ObjectData): + objects:List[GenericObjectSource]=[] + obj = generic_objects_possible[object_data.objectName] + for i in range(object_data.numberOfObject): + objects.append(obj.clone()) + return objects + + def convert_object_name_to_generic_object(self, generic_objects_possible: Dict[str,GenericObjectSource], + object_name: str): + return generic_objects_possible[object_name] diff --git a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py index 36cfc20..bbaa3a1 100644 --- a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py +++ b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py @@ -4,6 +4,7 @@ from simulation.object_event import ObjectEvent +Y_M_D_H_M_S = "%Y-%m-%d %H:%M:%S" class WorkProcessStep: @@ -25,12 +26,12 @@ def __init__( def produce_event(self, current_timestamp) -> ObjectEvent: return ObjectEvent( - timestamp=self.add_to_last_timestamp(current_timestamp, self.duration), + timestamp=self.add_to_last_timestamp(current_timestamp, self.duration).strftime(Y_M_D_H_M_S), activity=self.activity, node=self.node, group_id=self.group_id, - input=self.input_objects, - output=self.output_objects + input=", ".join(str(obj) for obj in self.input_objects), + output=", ".join(str(obj) for obj in self.output_objects) ) def add_to_last_timestamp(self, current_timestamp, duration): diff --git a/distributed_event_factory/simulation/simulator_objects/workstation_service.py b/distributed_event_factory/simulation/simulator_objects/workstation_service.py index b977e36..142f429 100644 --- a/distributed_event_factory/simulation/simulator_objects/workstation_service.py +++ b/distributed_event_factory/simulation/simulator_objects/workstation_service.py @@ -11,7 +11,7 @@ def get_activatable_workstations(self, workstations: List[WorkProcessStep], obje activatable_workstations = [] for workstation in workstations: - if object_storage.contains_all_objects(workstation.input_objects): + if object_storage.contains_all_object_of_data(workstation.input_objects): activatable_workstations.append(workstation) return activatable_workstations From 8164c315ed383b6cabad1fab4fe8881920296ad0 Mon Sep 17 00:00:00 2001 From: ulpi Date: Wed, 25 Jun 2025 22:53:30 +0200 Subject: [PATCH 078/124] add input and output change --- .../process_simulation_object_centric.py | 23 +++++--- .../simulator_objects/object_storage.py | 56 ++++++++++++++++++- .../simulator_objects/object_utility.py | 10 +++- 3 files changed, 75 insertions(+), 14 deletions(-) diff --git a/distributed_event_factory/simulation/process_simulation_object_centric.py b/distributed_event_factory/simulation/process_simulation_object_centric.py index 6f90617..4d9cf28 100644 --- a/distributed_event_factory/simulation/process_simulation_object_centric.py +++ b/distributed_event_factory/simulation/process_simulation_object_centric.py @@ -36,24 +36,31 @@ def simulate(self) -> Event: self.workstation_service.get_activatable_workstations(self.workstation_steps, self.object_storage)) next_step: WorkProcessStep = self.workstation_service.get_workstation(available_steps) event = next_step.produce_event(self.current_timestamp) - self.object_storage.add_object(event.output) + self.object_storage.manage_input_and_output_of_steps(next_step.input_objects, next_step.output_objects, + self.objects, self.current_timestamp) return event def add_configured_stocks_in_warehouse(self): for stock in self.stocks.get("default"): - self.object_storage.add_objects(ObjectUtility().convert_object_data_to_generic_objects(generic_objects_possible=self.objects, object_data=stock)) + self.object_storage.add_objects( + ObjectUtility().convert_object_data_to_generic_objects(generic_objects_possible=self.objects, + object_data=stock, + timestamp=self.current_timestamp)) def configureWorkStationsAndSteps(self): for data_source in self.data_sources: if data_source != "" and data_source != "": data_source_id = DataSourceId(data_source) - events = self._get_sensor_with_id(DataSourceId("Assembly")).get_event_data() - input_objects = self._get_sensor_with_id(DataSourceId("Assembly")).event_provider.input_objects + events = self._get_sensor_with_id(DataSourceId(data_source)).get_event_data() + input_objects = self._get_sensor_with_id(DataSourceId(data_source)).event_provider.input_objects for e in events: - self.workstation_steps.append(WorkProcessStep(activity=e.get_activity_provider().get_activity(), node=data_source_id.get_name(), - group_id=self._get_sensor_with_id(data_source_id).group_id, - input_objects=input_objects, output_objects=e.get_activity_provider().get_output(), - duration=e.get_duration())) + self.workstation_steps.append(WorkProcessStep(activity=e.get_activity_provider().get_activity(), + node=data_source_id.get_name(), + group_id=self._get_sensor_with_id( + data_source_id).group_id, + input_objects=input_objects, + output_objects=e.get_activity_provider().get_output(), + duration=e.get_duration())) def _get_sensor_with_id(self, data_source_id) -> DataSource: for sensor in self.data_sources: diff --git a/distributed_event_factory/simulation/simulator_objects/object_storage.py b/distributed_event_factory/simulation/simulator_objects/object_storage.py index f426f2f..eade912 100644 --- a/distributed_event_factory/simulation/simulator_objects/object_storage.py +++ b/distributed_event_factory/simulation/simulator_objects/object_storage.py @@ -1,7 +1,9 @@ -from typing import List +from typing import List, Dict from core.object import ObjectData, GenericObjectSource from provider.object.input.input_provider import InputObjectProvider +from provider.transition.output.output_provider import OutputObjectProvider +from simulation.simulator_objects.object_utility import ObjectUtility class ObjectStorage: @@ -17,8 +19,14 @@ def contains_all_objects(self, objects: List[GenericObjectSource]): def contains_all_object_of_data(self, objects: List[InputObjectProvider]): for obj in objects: - for i in range(obj.numberOfObject): - if not next((item for item in self.objects if item.object_id.id == obj.objectName), None): + if not obj.lastState: + if sum(1 for item in self.objects if + item.object_id.id == obj.objectName and not item.values_changed) < obj.numberOfObject: + return False + else: + if (sum(1 for item in self.objects if + item.object_id.id == obj.objectName and item.get_last_changed_value() == obj.lastState) + < obj.numberOfObject): return False return True @@ -28,3 +36,45 @@ def add_object(self, obj: GenericObjectSource): def add_objects(self, objects: List[GenericObjectSource]): for obj in objects: self.add_object(obj) + + def find_object_of_data_in_storage(self, obj): + if obj.lastState: + return next((item for item in self.objects if + item.object_id.id == obj.objectName and item.get_last_changed_value() == obj.lastState), None) + else: + return next((item for item in self.objects if + item.object_id.id == obj.objectName and not item.values_changed), None) + + def find_object_in_input_objects(self, obj, objects): + return next((item for item in objects if + item.objectName == obj.objectName), None) + + def manage_input_and_output_of_steps(self, input_objects: List[InputObjectProvider], + output_objects: List[OutputObjectProvider], + object_templates: Dict[str, ObjectData], timestamp): + objects = [] + for input_object in input_objects: + for i in range(input_object.numberOfObject): + obj = self.find_object_of_data_in_storage(input_object) + objects.append(obj) + self.objects.remove(obj) + self.add_output_changed_objects_to_store(input_objects, object_templates, output_objects, timestamp) + + def add_output_changed_objects_to_store(self, input_objects, object_templates, output_objects, timestamp): + for output_object in output_objects: + for i in range(output_object.numberOfObject): + obj = self.find_object_in_input_objects(output_object, input_objects) + if obj: + if output_object.change: + obj.add_change(ObjectData(timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), + object_state=output_object.change, + object_id=obj.object_id)) + self.add_object(obj) + else: + obj = ObjectUtility().convert_object_name_to_generic_object(object_templates, + output_object.objectName).clone() + if output_object.change: + obj.add_change(ObjectData(timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), + object_state=output_object.change, + object_id=obj.object_id)) + self.add_object(obj) diff --git a/distributed_event_factory/simulation/simulator_objects/object_utility.py b/distributed_event_factory/simulation/simulator_objects/object_utility.py index 4b25cee..f706dcf 100644 --- a/distributed_event_factory/simulation/simulator_objects/object_utility.py +++ b/distributed_event_factory/simulation/simulator_objects/object_utility.py @@ -4,11 +4,15 @@ class ObjectUtility: - def convert_object_data_to_generic_objects(self, generic_objects_possible:Dict[str,GenericObjectSource], object_data:ObjectData): + def convert_object_data_to_generic_objects(self, generic_objects_possible:Dict[str,GenericObjectSource], object_data:ObjectData, timestamp): objects:List[GenericObjectSource]=[] - obj = generic_objects_possible[object_data.objectName] + obj = generic_objects_possible[object_data.objectName].clone() for i in range(object_data.numberOfObject): - objects.append(obj.clone()) + obj = obj.clone() + if object_data.lastState: + obj.add_change(ObjectData(timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), object_state=object_data.lastState, + object_id=obj.object_id)) + objects.append(obj) return objects def convert_object_name_to_generic_object(self, generic_objects_possible: Dict[str,GenericObjectSource], From 276b2191dd7c53f05098c8c8657809af1997243b Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 26 Jun 2025 09:07:57 +0200 Subject: [PATCH 079/124] bug fixes and independent scenario --- .../smart-factory-parallel/bar-resource.yaml | 11 +++++ .../smart-factory-parallel/bar.yaml | 11 +++++ .../smart-factory-parallel/e0-order.yaml | 21 ++++++++++ .../e1-outgoing-stock.yaml | 23 +++++++++++ .../smart-factory-parallel/e2-sawing-bar.yaml | 21 ++++++++++ .../e3-drilling-bar.yaml | 21 ++++++++++ .../e4-sanding-Bar.yaml | 21 ++++++++++ .../smart-factory-parallel/e5-assembly.yaml | 40 +++++++++++++++++++ .../smart-factory-parallel/e7-shipping.yaml | 29 ++++++++++++++ .../smart-factory-parallel/order.yaml | 8 ++++ .../smart-factory-parallel/resourceOrder.yaml | 8 ++++ .../smart-factory-parallel/routing.yaml | 18 +++++++++ .../smart-factory-parallel/screw.yaml | 11 +++++ .../warehouse_stock.yaml | 7 ++++ .../smart-factory-parallel/woodShelf.yaml | 14 +++++++ config/sink/console-sink.yaml | 1 + .../simulator_objects/object_storage.py | 8 ++-- .../simulator_objects/workstation_service.py | 1 + 18 files changed, 270 insertions(+), 4 deletions(-) create mode 100644 config/datasource/smart-factory-parallel/bar-resource.yaml create mode 100644 config/datasource/smart-factory-parallel/bar.yaml create mode 100644 config/datasource/smart-factory-parallel/e0-order.yaml create mode 100644 config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-parallel/e2-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-parallel/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-parallel/e5-assembly.yaml create mode 100644 config/datasource/smart-factory-parallel/e7-shipping.yaml create mode 100644 config/datasource/smart-factory-parallel/order.yaml create mode 100644 config/datasource/smart-factory-parallel/resourceOrder.yaml create mode 100644 config/datasource/smart-factory-parallel/routing.yaml create mode 100644 config/datasource/smart-factory-parallel/screw.yaml create mode 100644 config/datasource/smart-factory-parallel/warehouse_stock.yaml create mode 100644 config/datasource/smart-factory-parallel/woodShelf.yaml diff --git a/config/datasource/smart-factory-parallel/bar-resource.yaml b/config/datasource/smart-factory-parallel/bar-resource.yaml new file mode 100644 index 0000000..6b5d4e5 --- /dev/null +++ b/config/datasource/smart-factory-parallel/bar-resource.yaml @@ -0,0 +1,11 @@ +kind: object +name: "barResource" +spec: + name: "barResource" + type: "resource" + input: + - object: "order" + number: 1 + lastState: "" + length: "5" + width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/bar.yaml b/config/datasource/smart-factory-parallel/bar.yaml new file mode 100644 index 0000000..75a3cd9 --- /dev/null +++ b/config/datasource/smart-factory-parallel/bar.yaml @@ -0,0 +1,11 @@ +kind: object +name: "bar" +spec: + name: "bar" + type: "processedResource" + input: + - object: "barResource" + number: 1 + lastState: "" + length: "" + width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e0-order.yaml b/config/datasource/smart-factory-parallel/e0-order.yaml new file mode 100644 index 0000000..a12ecb4 --- /dev/null +++ b/config/datasource/smart-factory-parallel/e0-order.yaml @@ -0,0 +1,21 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + transition: "OutgoingStock" + duration: 0 diff --git a/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml b/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml new file mode 100644 index 0000000..40ac6d9 --- /dev/null +++ b/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml @@ -0,0 +1,23 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + selection: parallel + input: + - object: "resourceOrder" + number: 1 + lastState: "" + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barResource" + number: 1 + change: "" + - object: "screw" + number: 13 + change: "" + duration: 3 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml b/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml new file mode 100644 index 0000000..d7cd66a --- /dev/null +++ b/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml @@ -0,0 +1,21 @@ +kind: datasource +name: "SawingBar" +spec: + name: "SawingBar" + group: "factory" + type: objectCentric + selection: genericProbability + distribution: [1.0] + input: + - object: "barResource" + number: 1 + lastState: "" + eventData: + - activity: + name: "Sawed" + output: + - object: "bar" + number: 4 + change: "divided Resource" + transition: "DrillingBar" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml b/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml new file mode 100644 index 0000000..7173455 --- /dev/null +++ b/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml @@ -0,0 +1,21 @@ +kind: datasource +name: "DrillingBar" +spec: + name: "DrillingBar" + group: "factory" + type: objectCentric + selection: genericProbability + distribution: [1.0] + input: + - object: "bar" + number: 1 + lastState: "divided Resource" + eventData: + - activity: + name: "Drilled" + output: + - object: "bar" + number: 1 + change: "drilled" + transition: "SandingBar" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml b/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml new file mode 100644 index 0000000..b6df4cb --- /dev/null +++ b/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml @@ -0,0 +1,21 @@ +kind: datasource +name: "SandingBar" +spec: + name: "SandingBar" + group: "factory" + type: objectCentric + selection: genericProbability + distribution: [1.0] + input: + - object: "bar" + number: 1 + lastState: "drilled" + eventData: + - activity: + name: "Sanded bar" + output: + - object: "bar" + number: 1 + change: "sanded" + transition: "Assembly" + duration: 5 diff --git a/config/datasource/smart-factory-parallel/e5-assembly.yaml b/config/datasource/smart-factory-parallel/e5-assembly.yaml new file mode 100644 index 0000000..eea58d5 --- /dev/null +++ b/config/datasource/smart-factory-parallel/e5-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "Assembly" +spec: + name: "Assembly" + group: "factory" + type: objectCentric + selection: genericProbability + distribution: [ 0.8, 0.1, 0.1 ] + input: + - object: "bar" + number: 4 + lastState: "sanded" + - object: "screw" + number: 13 + lastState: "" + eventData: + - activity: + name: "Assembling completed" + output: + - object: "woodShelf" + number: 1 + change: "assembled" + duration: 10 + transition: "Shipping" + - activity: + name: "Overheating" + output: + - object: "woodShelf" + number: 1 + change: "overheated" + transition: "" + duration: 2 + - activity: + name: "Item broke" + output: + - object: "woodShelf" + number: 1 + change: "broke" + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e7-shipping.yaml b/config/datasource/smart-factory-parallel/e7-shipping.yaml new file mode 100644 index 0000000..fd9ea47 --- /dev/null +++ b/config/datasource/smart-factory-parallel/e7-shipping.yaml @@ -0,0 +1,29 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + type: objectCentric + selection: genericProbability + distribution: [ 0.8, 0.2 ] + input: + - object: "woodShelf" + number: 1 + lastState: "" + eventData: + - activity: + name: "Package waits for sending" + output: + - object: "woodShelf" + number: 1 + change: "" + transition: "Shipping" + duration: 180 + - activity: + name: "Package sent" + output: + - object: "woodShelf" + number: 1 + change: "" + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/order.yaml b/config/datasource/smart-factory-parallel/order.yaml new file mode 100644 index 0000000..caf3cdb --- /dev/null +++ b/config/datasource/smart-factory-parallel/order.yaml @@ -0,0 +1,8 @@ +kind: object +name: "order" +spec: + name: "order" + type: "order" + input: + length: "" + width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/resourceOrder.yaml b/config/datasource/smart-factory-parallel/resourceOrder.yaml new file mode 100644 index 0000000..0ab492a --- /dev/null +++ b/config/datasource/smart-factory-parallel/resourceOrder.yaml @@ -0,0 +1,8 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "order" + input: + length: "" + width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/routing.yaml b/config/datasource/smart-factory-parallel/routing.yaml new file mode 100644 index 0000000..2457205 --- /dev/null +++ b/config/datasource/smart-factory-parallel/routing.yaml @@ -0,0 +1,18 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "OutgoingStock" + end: "SawingBar" + transferObjects: + - name: "barResource" + number: 1 + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "OutgoingStock" + end: "Assembly" + transferObjects: + - name: "screw" + number: 13 + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/screw.yaml b/config/datasource/smart-factory-parallel/screw.yaml new file mode 100644 index 0000000..1690f6c --- /dev/null +++ b/config/datasource/smart-factory-parallel/screw.yaml @@ -0,0 +1,11 @@ +kind: object +name: "screw" +spec: + name: "screw" + type: "smallComponent" + input: + - object: "order" + number: 1 + lastState: "" + length: "" + width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/warehouse_stock.yaml b/config/datasource/smart-factory-parallel/warehouse_stock.yaml new file mode 100644 index 0000000..805787e --- /dev/null +++ b/config/datasource/smart-factory-parallel/warehouse_stock.yaml @@ -0,0 +1,7 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 100 + lastState: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/woodShelf.yaml b/config/datasource/smart-factory-parallel/woodShelf.yaml new file mode 100644 index 0000000..eafa7a9 --- /dev/null +++ b/config/datasource/smart-factory-parallel/woodShelf.yaml @@ -0,0 +1,14 @@ +kind: object +name: "woodShelf" +spec: + name: "woodShelf" + type: "product" + input: + - object: "bar" + number: 4 + lastState: "sanded" + - object: "screw" + number: 13 + lastState: "" + length: "" + width: "" \ No newline at end of file diff --git a/config/sink/console-sink.yaml b/config/sink/console-sink.yaml index e919d8b..b181728 100644 --- a/config/sink/console-sink.yaml +++ b/config/sink/console-sink.yaml @@ -16,6 +16,7 @@ spec: - "SawingBar" - "DrillingBar" - "SandingBar" + - "OrderPlacement" - "A" - "B" - "C" diff --git a/distributed_event_factory/simulation/simulator_objects/object_storage.py b/distributed_event_factory/simulation/simulator_objects/object_storage.py index eade912..d54ec18 100644 --- a/distributed_event_factory/simulation/simulator_objects/object_storage.py +++ b/distributed_event_factory/simulation/simulator_objects/object_storage.py @@ -47,7 +47,7 @@ def find_object_of_data_in_storage(self, obj): def find_object_in_input_objects(self, obj, objects): return next((item for item in objects if - item.objectName == obj.objectName), None) + item.object_id.id == obj.objectName), None) def manage_input_and_output_of_steps(self, input_objects: List[InputObjectProvider], output_objects: List[OutputObjectProvider], @@ -58,12 +58,12 @@ def manage_input_and_output_of_steps(self, input_objects: List[InputObjectProvid obj = self.find_object_of_data_in_storage(input_object) objects.append(obj) self.objects.remove(obj) - self.add_output_changed_objects_to_store(input_objects, object_templates, output_objects, timestamp) + self.add_output_changed_objects_to_store(objects, object_templates, output_objects, timestamp) - def add_output_changed_objects_to_store(self, input_objects, object_templates, output_objects, timestamp): + def add_output_changed_objects_to_store(self, objects, object_templates, output_objects, timestamp): for output_object in output_objects: for i in range(output_object.numberOfObject): - obj = self.find_object_in_input_objects(output_object, input_objects) + obj = self.find_object_in_input_objects(output_object, objects) if obj: if output_object.change: obj.add_change(ObjectData(timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), diff --git a/distributed_event_factory/simulation/simulator_objects/workstation_service.py b/distributed_event_factory/simulation/simulator_objects/workstation_service.py index 142f429..bcb7764 100644 --- a/distributed_event_factory/simulation/simulator_objects/workstation_service.py +++ b/distributed_event_factory/simulation/simulator_objects/workstation_service.py @@ -17,4 +17,5 @@ def get_activatable_workstations(self, workstations: List[WorkProcessStep], obje return activatable_workstations def get_workstation(self, workstations: List[WorkProcessStep]) -> WorkProcessStep: + # vielleicht irgendwas mit der transition return workstations[random.randint(0, len(workstations) - 1)] \ No newline at end of file From 73339c3d4bec8059b83a0362ed8678cdeb237c81 Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 26 Jun 2025 09:42:59 +0200 Subject: [PATCH 080/124] add transport --- .../smart-factory-parallel/e2-sawing-bar.yaml | 3 +++ .../smart-factory-parallel/e5-assembly.yaml | 6 +++++ .../smart-factory-parallel/handover.yaml | 11 +++++++++ .../smart-factory-parallel/handoverStock.yaml | 11 +++++++++ .../t0-stock-to-machine.yaml | 24 +++++++++++++++++++ .../t1-machine-to-assembly.yaml | 24 +++++++++++++++++++ .../t1-stock-to-assembly.yaml | 24 +++++++++++++++++++ config/sink/console-sink.yaml | 3 +++ .../process_simulation_object_centric.py | 4 ++-- 9 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 config/datasource/smart-factory-parallel/handover.yaml create mode 100644 config/datasource/smart-factory-parallel/handoverStock.yaml create mode 100644 config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml diff --git a/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml b/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml index d7cd66a..3b03015 100644 --- a/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml +++ b/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml @@ -10,6 +10,9 @@ spec: - object: "barResource" number: 1 lastState: "" + - object: "handover" + number: 1 + lastState: "" eventData: - activity: name: "Sawed" diff --git a/config/datasource/smart-factory-parallel/e5-assembly.yaml b/config/datasource/smart-factory-parallel/e5-assembly.yaml index eea58d5..0f4f58c 100644 --- a/config/datasource/smart-factory-parallel/e5-assembly.yaml +++ b/config/datasource/smart-factory-parallel/e5-assembly.yaml @@ -13,6 +13,12 @@ spec: - object: "screw" number: 13 lastState: "" + - object: "handover" + number: 1 + lastState: "" + - object: "handoverStock" + number: 1 + lastState: "" eventData: - activity: name: "Assembling completed" diff --git a/config/datasource/smart-factory-parallel/handover.yaml b/config/datasource/smart-factory-parallel/handover.yaml new file mode 100644 index 0000000..3139710 --- /dev/null +++ b/config/datasource/smart-factory-parallel/handover.yaml @@ -0,0 +1,11 @@ +kind: object +name: "handover" +spec: + name: "handover" + type: "transport" + input: + - object: + number: + lastState: + length: "" + width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/handoverStock.yaml b/config/datasource/smart-factory-parallel/handoverStock.yaml new file mode 100644 index 0000000..f07bf77 --- /dev/null +++ b/config/datasource/smart-factory-parallel/handoverStock.yaml @@ -0,0 +1,11 @@ +kind: object +name: "handoverStock" +spec: + name: "handoverStock" + type: "transport" + input: + - object: + number: + lastState: + length: "" + width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml b/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml new file mode 100644 index 0000000..2cb1444 --- /dev/null +++ b/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml @@ -0,0 +1,24 @@ +kind: datasource +name: "TransportM1" +spec: + name: "TransportM1" + group: "transport" + type: objectCentric + selection: genericProbability + distribution: [1.0] + input: + - object: "barResource" + number: 1 + lastState: "" + eventData: + - activity: + name: "transport from stock to M1" + output: + - object: "barResource" + number: 1 + change: "" + - object: "handover" + number: 1 + change: "" + transition: "SawingBar" + duration: 10 diff --git a/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml b/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml new file mode 100644 index 0000000..931216a --- /dev/null +++ b/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml @@ -0,0 +1,24 @@ +kind: datasource +name: "TransportM1A" +spec: + name: "TransportM1A" + group: "transport" + type: objectCentric + selection: genericProbability + distribution: [1.0] + input: + - object: "bar" + number: 4 + lastState: "sanded" + eventData: + - activity: + name: "transport from M1 to assembly" + output: + - object: "bar" + number: 4 + change: "sanded" + - object: "handover" + number: 1 + change: "" + transition: "Assembly" + duration: 10 diff --git a/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml new file mode 100644 index 0000000..6b779cd --- /dev/null +++ b/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml @@ -0,0 +1,24 @@ +kind: datasource +name: "TransportSA" +spec: + name: "TransportSA" + group: "transport" + type: objectCentric + selection: genericProbability + distribution: [1.0] + input: + - object: "screw" + number: 13 + lastState: "" + eventData: + - activity: + name: "transport from stock to assembly" + output: + - object: "screw" + number: 13 + change: "" + - object: "handoverStock" + number: 1 + change: "" + transition: "Assembly" + duration: 10 diff --git a/config/sink/console-sink.yaml b/config/sink/console-sink.yaml index b181728..8e2649e 100644 --- a/config/sink/console-sink.yaml +++ b/config/sink/console-sink.yaml @@ -17,6 +17,9 @@ spec: - "DrillingBar" - "SandingBar" - "OrderPlacement" + - "TransportM1" + - "TransportM1A" + - "TransportSA" - "A" - "B" - "C" diff --git a/distributed_event_factory/simulation/process_simulation_object_centric.py b/distributed_event_factory/simulation/process_simulation_object_centric.py index 4d9cf28..560405d 100644 --- a/distributed_event_factory/simulation/process_simulation_object_centric.py +++ b/distributed_event_factory/simulation/process_simulation_object_centric.py @@ -28,10 +28,10 @@ def __init__( self.objects = objects self.data_sources = data_sources self.stocks: Dict[str, InputObjectProvider] = stocks - - def simulate(self) -> Event: self.configureWorkStationsAndSteps() self.add_configured_stocks_in_warehouse() + + def simulate(self) -> Event: available_steps: List[WorkProcessStep] = ( self.workstation_service.get_activatable_workstations(self.workstation_steps, self.object_storage)) next_step: WorkProcessStep = self.workstation_service.get_workstation(available_steps) From bf18667e419c4141d338f44971c073667b25ff22 Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 26 Jun 2025 11:22:00 +0200 Subject: [PATCH 081/124] add preferences in workstation selection --- .../e1-outgoing-stock.yaml | 2 +- .../e4-sanding-Bar.yaml | 2 +- .../smart-factory-parallel/e5-assembly.yaml | 4 +- .../smart-factory-parallel/e7-shipping.yaml | 2 +- .../process_simulation_object_centric.py | 40 +++++++++++++++---- .../simulator_objects/workstation_service.py | 14 ++++++- 6 files changed, 50 insertions(+), 14 deletions(-) diff --git a/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml b/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml index 40ac6d9..c7c934e 100644 --- a/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml +++ b/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml @@ -20,4 +20,4 @@ spec: number: 13 change: "" duration: 3 - transition: "" \ No newline at end of file + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml b/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml index b6df4cb..67c8623 100644 --- a/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml +++ b/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml @@ -17,5 +17,5 @@ spec: - object: "bar" number: 1 change: "sanded" - transition: "Assembly" + transition: "TransportM1A" duration: 5 diff --git a/config/datasource/smart-factory-parallel/e5-assembly.yaml b/config/datasource/smart-factory-parallel/e5-assembly.yaml index 0f4f58c..9470644 100644 --- a/config/datasource/smart-factory-parallel/e5-assembly.yaml +++ b/config/datasource/smart-factory-parallel/e5-assembly.yaml @@ -34,7 +34,7 @@ spec: - object: "woodShelf" number: 1 change: "overheated" - transition: "" + transition: "" duration: 2 - activity: name: "Item broke" @@ -42,5 +42,5 @@ spec: - object: "woodShelf" number: 1 change: "broke" - transition: "" + transition: "" duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e7-shipping.yaml b/config/datasource/smart-factory-parallel/e7-shipping.yaml index fd9ea47..df715d5 100644 --- a/config/datasource/smart-factory-parallel/e7-shipping.yaml +++ b/config/datasource/smart-factory-parallel/e7-shipping.yaml @@ -25,5 +25,5 @@ spec: - object: "woodShelf" number: 1 change: "" - transition: "" + transition: "" duration: 1 \ No newline at end of file diff --git a/distributed_event_factory/simulation/process_simulation_object_centric.py b/distributed_event_factory/simulation/process_simulation_object_centric.py index 560405d..8d133af 100644 --- a/distributed_event_factory/simulation/process_simulation_object_centric.py +++ b/distributed_event_factory/simulation/process_simulation_object_centric.py @@ -30,23 +30,54 @@ def __init__( self.stocks: Dict[str, InputObjectProvider] = stocks self.configureWorkStationsAndSteps() self.add_configured_stocks_in_warehouse() + self.prior_step : str = "" def simulate(self) -> Event: available_steps: List[WorkProcessStep] = ( self.workstation_service.get_activatable_workstations(self.workstation_steps, self.object_storage)) - next_step: WorkProcessStep = self.workstation_service.get_workstation(available_steps) + next_step = self.get_next_step(available_steps) + self.prior_step = next_step.node event = next_step.produce_event(self.current_timestamp) self.object_storage.manage_input_and_output_of_steps(next_step.input_objects, next_step.output_objects, self.objects, self.current_timestamp) return event + def _get_next_step_by_event_provider(self, data_source) -> List[str]: + events = self._get_sensor_with_id(DataSourceId(data_source)).get_event_data() + if len(events) == 1: + return [events[0].transition_provider.next_sensor_index] + elif len(events) > 1: + next_sensors = [] + for e in events: + next_sensors.append(e.transition_provider.next_sensor_index) + return next_sensors + return None + + def get_next_step(self, available_steps): + if self.prior_step: + next_available_steps = self._get_next_step_by_event_provider(self.prior_step) + if next_available_steps: + next_step: WorkProcessStep = self.workstation_service.get_workstation_preselected(available_steps, + next_available_steps) + else: + next_step: WorkProcessStep = self.workstation_service.get_random_workstation(available_steps) + else: + next_step: WorkProcessStep = self.workstation_service.get_random_workstation(available_steps) + return next_step + + def _get_sensor_with_id(self, data_source_id) -> DataSource: + for sensor in self.data_sources: + if self.data_sources[sensor].get_id() == data_source_id: + return self.data_sources[sensor] + raise ValueError("Sensor not found") + + ### preparing methods ### def add_configured_stocks_in_warehouse(self): for stock in self.stocks.get("default"): self.object_storage.add_objects( ObjectUtility().convert_object_data_to_generic_objects(generic_objects_possible=self.objects, object_data=stock, timestamp=self.current_timestamp)) - def configureWorkStationsAndSteps(self): for data_source in self.data_sources: if data_source != "" and data_source != "": @@ -62,8 +93,3 @@ def configureWorkStationsAndSteps(self): output_objects=e.get_activity_provider().get_output(), duration=e.get_duration())) - def _get_sensor_with_id(self, data_source_id) -> DataSource: - for sensor in self.data_sources: - if self.data_sources[sensor].get_id() == data_source_id: - return self.data_sources[sensor] - raise ValueError("Sensor not found") diff --git a/distributed_event_factory/simulation/simulator_objects/workstation_service.py b/distributed_event_factory/simulation/simulator_objects/workstation_service.py index bcb7764..893d7b5 100644 --- a/distributed_event_factory/simulation/simulator_objects/workstation_service.py +++ b/distributed_event_factory/simulation/simulator_objects/workstation_service.py @@ -16,6 +16,16 @@ def get_activatable_workstations(self, workstations: List[WorkProcessStep], obje return activatable_workstations - def get_workstation(self, workstations: List[WorkProcessStep]) -> WorkProcessStep: - # vielleicht irgendwas mit der transition + def get_random_workstation(self, workstations: List[WorkProcessStep]) -> WorkProcessStep: + return workstations[random.randint(0, len(workstations) - 1)] + + def get_workstation_preselected(self, workstations: List[WorkProcessStep], prefered_workstations: List[str]): + workstations_selected = [] + for workstation in workstations: + if workstation.node in prefered_workstations: + workstations_selected.append(workstation) + if len(workstations_selected) ==1: + return workstations_selected[0] + elif len(workstations_selected) > 1: + return random.choice(workstations_selected) return workstations[random.randint(0, len(workstations) - 1)] \ No newline at end of file From 7b036d2ec69d4eac3d436132920941c68d1d81aa Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 27 Jun 2025 14:39:42 +0200 Subject: [PATCH 082/124] add workstation layer and first attempt to fix the time --- .../smart-factory-parallel/e0-order.yaml | 1 + .../e1-outgoing-stock.yaml | 1 + .../smart-factory-parallel/e2-sawing-bar.yaml | 1 + .../e3-drilling-bar.yaml | 1 + .../e4-sanding-Bar.yaml | 1 + .../smart-factory-parallel/e5-assembly.yaml | 1 + .../smart-factory-parallel/e7-shipping.yaml | 1 + .../t0-stock-to-machine.yaml | 1 + .../t1-machine-to-assembly.yaml | 1 + .../t1-stock-to-assembly.yaml | 1 + .../core/core_decisions_datasource.py | 9 ++- .../event/event_selection_parser.py | 3 +- .../process_simulation_object_centric.py | 33 ++++++---- .../simulator_objects/workprocessstep.py | 10 +-- .../simulator_objects/workstation.py | 62 +++++++++++++++++++ .../simulator_objects/workstation_service.py | 25 ++++---- 16 files changed, 121 insertions(+), 31 deletions(-) create mode 100644 distributed_event_factory/simulation/simulator_objects/workstation.py diff --git a/config/datasource/smart-factory-parallel/e0-order.yaml b/config/datasource/smart-factory-parallel/e0-order.yaml index a12ecb4..c54d6dd 100644 --- a/config/datasource/smart-factory-parallel/e0-order.yaml +++ b/config/datasource/smart-factory-parallel/e0-order.yaml @@ -4,6 +4,7 @@ spec: name: "OrderPlacement" group: "factory" type: objectCentric + workstation: "groupname" selection: genericProbability distribution: [1.0] input: diff --git a/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml b/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml index c7c934e..89d33e9 100644 --- a/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml +++ b/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml @@ -4,6 +4,7 @@ spec: name: "OutgoingStock" group: "factory" type: objectCentric + workstation: "groupname" selection: parallel input: - object: "resourceOrder" diff --git a/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml b/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml index 3b03015..2b83087 100644 --- a/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml +++ b/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml @@ -4,6 +4,7 @@ spec: name: "SawingBar" group: "factory" type: objectCentric + workstation: "groupname" selection: genericProbability distribution: [1.0] input: diff --git a/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml b/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml index 7173455..85572fb 100644 --- a/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml +++ b/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml @@ -4,6 +4,7 @@ spec: name: "DrillingBar" group: "factory" type: objectCentric + workstation: "groupname" selection: genericProbability distribution: [1.0] input: diff --git a/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml b/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml index 67c8623..f7ac7d6 100644 --- a/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml +++ b/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml @@ -4,6 +4,7 @@ spec: name: "SandingBar" group: "factory" type: objectCentric + workstation: "groupname" selection: genericProbability distribution: [1.0] input: diff --git a/config/datasource/smart-factory-parallel/e5-assembly.yaml b/config/datasource/smart-factory-parallel/e5-assembly.yaml index 9470644..648fcc3 100644 --- a/config/datasource/smart-factory-parallel/e5-assembly.yaml +++ b/config/datasource/smart-factory-parallel/e5-assembly.yaml @@ -4,6 +4,7 @@ spec: name: "Assembly" group: "factory" type: objectCentric + workstation: "groupname" selection: genericProbability distribution: [ 0.8, 0.1, 0.1 ] input: diff --git a/config/datasource/smart-factory-parallel/e7-shipping.yaml b/config/datasource/smart-factory-parallel/e7-shipping.yaml index df715d5..7a57295 100644 --- a/config/datasource/smart-factory-parallel/e7-shipping.yaml +++ b/config/datasource/smart-factory-parallel/e7-shipping.yaml @@ -4,6 +4,7 @@ spec: name: "Shipping" group: "factory" type: objectCentric + workstation: "groupname" selection: genericProbability distribution: [ 0.8, 0.2 ] input: diff --git a/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml b/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml index 2cb1444..5dccbd2 100644 --- a/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml +++ b/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml @@ -4,6 +4,7 @@ spec: name: "TransportM1" group: "transport" type: objectCentric + workstation: "groupname" selection: genericProbability distribution: [1.0] input: diff --git a/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml b/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml index 931216a..5df6457 100644 --- a/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml +++ b/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml @@ -4,6 +4,7 @@ spec: name: "TransportM1A" group: "transport" type: objectCentric + workstation: "groupname" selection: genericProbability distribution: [1.0] input: diff --git a/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml index 6b779cd..ad4bb72 100644 --- a/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml +++ b/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml @@ -4,6 +4,7 @@ spec: name: "TransportSA" group: "transport" type: objectCentric + workstation: "groupname" selection: genericProbability distribution: [1.0] input: diff --git a/distributed_event_factory/core/core_decisions_datasource.py b/distributed_event_factory/core/core_decisions_datasource.py index 3c6bf15..761e379 100644 --- a/distributed_event_factory/core/core_decisions_datasource.py +++ b/distributed_event_factory/core/core_decisions_datasource.py @@ -2,13 +2,18 @@ class GenericDecisions: def __init__( self, simulation_provider, - input_objects + input_objects, + workstation ): self.simulation_provider = simulation_provider self.input_objects= input_objects + self.workstation = workstation def get_event_data(self): return self.simulation_provider.get_event_data() def get_input_data(self): - return self.input_objects \ No newline at end of file + return self.input_objects + + def get_workstation(self): + return self.workstation \ No newline at end of file diff --git a/distributed_event_factory/parser/datasource/event/event_selection_parser.py b/distributed_event_factory/parser/datasource/event/event_selection_parser.py index d85ba85..af54733 100644 --- a/distributed_event_factory/parser/datasource/event/event_selection_parser.py +++ b/distributed_event_factory/parser/datasource/event/event_selection_parser.py @@ -13,4 +13,5 @@ def add_dependency(self, key: str, dependency): def parse(self, config): return GenericDecisions(self.dependencies[config['selection']].parse(config), - self.dependencies[config['type']].parse(config)) + self.dependencies[config['type']].parse(config), + config['workstation']) diff --git a/distributed_event_factory/simulation/process_simulation_object_centric.py b/distributed_event_factory/simulation/process_simulation_object_centric.py index 8d133af..6a7511e 100644 --- a/distributed_event_factory/simulation/process_simulation_object_centric.py +++ b/distributed_event_factory/simulation/process_simulation_object_centric.py @@ -10,6 +10,7 @@ from simulation.simulator_objects.object_storage import ObjectStorage from simulation.simulator_objects.object_utility import ObjectUtility from simulation.simulator_objects.workprocessstep import WorkProcessStep +from simulation.simulator_objects.workstation import WorkStation from simulation.simulator_objects.workstation_service import WorkstationService @@ -21,7 +22,7 @@ def __init__( objects: Dict[str, ObjectData], stocks: Dict[str, InputObjectProvider] ): - self.workstation_steps = [] + self.workstations = [] self.workstation_service = WorkstationService() self.current_timestamp = datetime.now() self.object_storage = object_storage @@ -33,13 +34,14 @@ def __init__( self.prior_step : str = "" def simulate(self) -> Event: - available_steps: List[WorkProcessStep] = ( - self.workstation_service.get_activatable_workstations(self.workstation_steps, self.object_storage)) - next_step = self.get_next_step(available_steps) + available_workstations: List[WorkStation] = ( + self.workstation_service.get_activatable_workstations(self.workstations, self.object_storage)) + next_step, next_workstation = self.get_next_workstation(available_workstations) self.prior_step = next_step.node - event = next_step.produce_event(self.current_timestamp) + event = next_step.produce_event(self.current_timestamp, next_workstation.work_station_name) self.object_storage.manage_input_and_output_of_steps(next_step.input_objects, next_step.output_objects, self.objects, self.current_timestamp) + self.current_timestamp = next_step.last_event_end_timestamp return event def _get_next_step_by_event_provider(self, data_source) -> List[str]: @@ -53,17 +55,20 @@ def _get_next_step_by_event_provider(self, data_source) -> List[str]: return next_sensors return None - def get_next_step(self, available_steps): + def get_next_workstation(self, available_workstations): if self.prior_step: next_available_steps = self._get_next_step_by_event_provider(self.prior_step) if next_available_steps: - next_step: WorkProcessStep = self.workstation_service.get_workstation_preselected(available_steps, - next_available_steps) + next_workstation: WorkStation = self.workstation_service.get_workstation_preselected(available_workstations, + next_available_steps, self.object_storage) + next_step = next_workstation.get_workstation_preselected(object_storage=self.object_storage, prefered_workstation_steps=next_available_steps) else: - next_step: WorkProcessStep = self.workstation_service.get_random_workstation(available_steps) + next_workstation: WorkStation = self.workstation_service.get_random_workstation(available_workstations) + next_step = next_workstation.get_random_workstation_step() else: - next_step: WorkProcessStep = self.workstation_service.get_random_workstation(available_steps) - return next_step + next_workstation: WorkStation = self.workstation_service.get_random_workstation(available_workstations) + next_step = next_workstation.get_random_workstation_step() + return next_step, next_workstation def _get_sensor_with_id(self, data_source_id) -> DataSource: for sensor in self.data_sources: @@ -84,8 +89,10 @@ def configureWorkStationsAndSteps(self): data_source_id = DataSourceId(data_source) events = self._get_sensor_with_id(DataSourceId(data_source)).get_event_data() input_objects = self._get_sensor_with_id(DataSourceId(data_source)).event_provider.input_objects + workstation = self._get_sensor_with_id(DataSourceId(data_source)).event_provider.workstation + workstation_steps = [] for e in events: - self.workstation_steps.append(WorkProcessStep(activity=e.get_activity_provider().get_activity(), + workstation_steps.append(WorkProcessStep(activity=e.get_activity_provider().get_activity(), node=data_source_id.get_name(), group_id=self._get_sensor_with_id( data_source_id).group_id, @@ -93,3 +100,5 @@ def configureWorkStationsAndSteps(self): output_objects=e.get_activity_provider().get_output(), duration=e.get_duration())) + self.workstations.append(WorkStation(work_station_name=workstation ,work_process_steps=workstation_steps)) + diff --git a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py index bbaa3a1..49723cd 100644 --- a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py +++ b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py @@ -1,4 +1,4 @@ -from datetime import timedelta +from datetime import timedelta, datetime from process_mining_core.datastructure.core.event import Event @@ -23,16 +23,18 @@ def __init__( self.activity = activity self.node = node self.group_id = group_id + self.last_event_end_timestamp = None - def produce_event(self, current_timestamp) -> ObjectEvent: + def produce_event(self, current_timestamp, workstation) -> ObjectEvent: return ObjectEvent( timestamp=self.add_to_last_timestamp(current_timestamp, self.duration).strftime(Y_M_D_H_M_S), activity=self.activity, node=self.node, - group_id=self.group_id, + group_id=workstation, input=", ".join(str(obj) for obj in self.input_objects), output=", ".join(str(obj) for obj in self.output_objects) ) def add_to_last_timestamp(self, current_timestamp, duration): - return current_timestamp + timedelta(seconds=duration) + self.last_event_end_timestamp = current_timestamp + timedelta(seconds=duration) + return self.last_event_end_timestamp diff --git a/distributed_event_factory/simulation/simulator_objects/workstation.py b/distributed_event_factory/simulation/simulator_objects/workstation.py new file mode 100644 index 0000000..77b4247 --- /dev/null +++ b/distributed_event_factory/simulation/simulator_objects/workstation.py @@ -0,0 +1,62 @@ +import random +from typing import List + +from simulation.simulator_objects.object_storage import ObjectStorage +from simulation.simulator_objects.workprocessstep import WorkProcessStep + +class WorkStation: + def __init__(self, work_station_name:str, work_process_steps: List[WorkProcessStep]): + self.work_station_name = work_station_name + self.work_process_steps = work_process_steps + + def _is_activatable(self, object_storage: ObjectStorage): + for workstation_step in self.work_process_steps: + if object_storage.contains_all_object_of_data(workstation_step.input_objects): + return True + + return False + + def get_activatable_work_steps(self, object_storage: ObjectStorage): + activatable_workstations = [] + + for workstation_step in self.work_process_steps: + if object_storage.contains_all_object_of_data(workstation_step.input_objects): + activatable_workstations.append(workstation_step) + + return activatable_workstations + + def get_prefered_activatable_work_steps(self, object_storage: ObjectStorage, prefered_workstation_steps: List[str]): + activatable_steps = self.get_activatable_work_steps(object_storage) + workstation_selected = [] + + for workstation_step in activatable_steps: + if workstation_step.node in prefered_workstation_steps: + workstation_selected.append(workstation_step) + + return workstation_selected + + def workstation_has_preselected_activatable_steps(self, object_storage: ObjectStorage, prefered_workstation_steps: List[str]) -> bool: + activatable_steps = self.get_activatable_work_steps(object_storage) + + for workstation_step in activatable_steps: + if workstation_step.node in prefered_workstation_steps: + return True + + return False + + def get_random_workstation_step(self) -> WorkProcessStep: + return self.work_process_steps[random.randint(0, len(self.work_process_steps) - 1)] + + def get_workstation_preselected(self, prefered_workstation_steps: List[str], object_storage: ObjectStorage) -> WorkProcessStep: + workstation_steps_selected = [] + prefered_process_steps = self.get_prefered_activatable_work_steps(object_storage, prefered_workstation_steps) + if prefered_process_steps: + for process_step in self.work_process_steps: + workstation_steps_selected.append(process_step) + if len(workstation_steps_selected) == 1: + return workstation_steps_selected[0] + elif len(workstation_steps_selected) > 1: + return random.choice(workstation_steps_selected) + + all_possible_steps = self.get_activatable_work_steps(object_storage) + return all_possible_steps[random.randint(0, len(all_possible_steps) - 1)] \ No newline at end of file diff --git a/distributed_event_factory/simulation/simulator_objects/workstation_service.py b/distributed_event_factory/simulation/simulator_objects/workstation_service.py index 893d7b5..3c8239b 100644 --- a/distributed_event_factory/simulation/simulator_objects/workstation_service.py +++ b/distributed_event_factory/simulation/simulator_objects/workstation_service.py @@ -2,30 +2,31 @@ from typing import List from simulation.simulator_objects.object_storage import ObjectStorage -from simulation.simulator_objects.workprocessstep import WorkProcessStep +from simulation.simulator_objects.workstation import WorkStation class WorkstationService: - def get_activatable_workstations(self, workstations: List[WorkProcessStep], object_storage: ObjectStorage): + def get_activatable_workstations(self, workstations: List[WorkStation], object_storage: ObjectStorage): activatable_workstations = [] for workstation in workstations: - if object_storage.contains_all_object_of_data(workstation.input_objects): + if workstation._is_activatable(object_storage): activatable_workstations.append(workstation) return activatable_workstations - def get_random_workstation(self, workstations: List[WorkProcessStep]) -> WorkProcessStep: + def get_random_workstation(self, workstations: List[WorkStation]) -> WorkStation: return workstations[random.randint(0, len(workstations) - 1)] - def get_workstation_preselected(self, workstations: List[WorkProcessStep], prefered_workstations: List[str]): - workstations_selected = [] + def get_workstation_preselected(self, workstations: List[WorkStation], prefered_workstation_steps: List[str], object_storage: ObjectStorage) -> WorkStation: + workstation_selected = [] for workstation in workstations: - if workstation.node in prefered_workstations: - workstations_selected.append(workstation) - if len(workstations_selected) ==1: - return workstations_selected[0] - elif len(workstations_selected) > 1: - return random.choice(workstations_selected) + if workstation.workstation_has_preselected_activatable_steps(object_storage=object_storage, prefered_workstation_steps=prefered_workstation_steps): + workstation_selected.append(workstation) + if len(workstation_selected) == 1: + return workstation_selected[0] + elif len(workstation_selected) > 1: + return random.choice(workstation_selected) + return workstations[random.randint(0, len(workstations) - 1)] \ No newline at end of file From 7b8e401bf5fc14d278472f164665c994bebe5bac Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 27 Jun 2025 15:56:32 +0200 Subject: [PATCH 083/124] shift time to workstation and add history of timestamps in simulation for later parallel events --- .../process_simulation_object_centric.py | 14 +++++++------- .../simulator_objects/workprocessstep.py | 7 +------ .../simulation/simulator_objects/workstation.py | 9 +++++++-- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/distributed_event_factory/simulation/process_simulation_object_centric.py b/distributed_event_factory/simulation/process_simulation_object_centric.py index 6a7511e..bd1de12 100644 --- a/distributed_event_factory/simulation/process_simulation_object_centric.py +++ b/distributed_event_factory/simulation/process_simulation_object_centric.py @@ -24,7 +24,7 @@ def __init__( ): self.workstations = [] self.workstation_service = WorkstationService() - self.current_timestamp = datetime.now() + self.timestamp_history = [datetime.now()] self.object_storage = object_storage self.objects = objects self.data_sources = data_sources @@ -36,12 +36,12 @@ def __init__( def simulate(self) -> Event: available_workstations: List[WorkStation] = ( self.workstation_service.get_activatable_workstations(self.workstations, self.object_storage)) - next_step, next_workstation = self.get_next_workstation(available_workstations) + next_step, next_workstation = self.get_next_workstation_and_step(available_workstations) self.prior_step = next_step.node - event = next_step.produce_event(self.current_timestamp, next_workstation.work_station_name) + self.timestamp_history.append(next_workstation.add_to_last_timestamp(self.timestamp_history[len(self.timestamp_history)-1], next_step.duration)) + event = next_step.produce_event(self.timestamp_history[len(self.timestamp_history)-1], next_workstation.work_station_name) self.object_storage.manage_input_and_output_of_steps(next_step.input_objects, next_step.output_objects, - self.objects, self.current_timestamp) - self.current_timestamp = next_step.last_event_end_timestamp + self.objects, self.timestamp_history[len(self.timestamp_history)-1]) return event def _get_next_step_by_event_provider(self, data_source) -> List[str]: @@ -55,7 +55,7 @@ def _get_next_step_by_event_provider(self, data_source) -> List[str]: return next_sensors return None - def get_next_workstation(self, available_workstations): + def get_next_workstation_and_step(self, available_workstations): if self.prior_step: next_available_steps = self._get_next_step_by_event_provider(self.prior_step) if next_available_steps: @@ -82,7 +82,7 @@ def add_configured_stocks_in_warehouse(self): self.object_storage.add_objects( ObjectUtility().convert_object_data_to_generic_objects(generic_objects_possible=self.objects, object_data=stock, - timestamp=self.current_timestamp)) + timestamp=self.timestamp_history)) def configureWorkStationsAndSteps(self): for data_source in self.data_sources: if data_source != "" and data_source != "": diff --git a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py index 49723cd..4929c75 100644 --- a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py +++ b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py @@ -23,18 +23,13 @@ def __init__( self.activity = activity self.node = node self.group_id = group_id - self.last_event_end_timestamp = None def produce_event(self, current_timestamp, workstation) -> ObjectEvent: return ObjectEvent( - timestamp=self.add_to_last_timestamp(current_timestamp, self.duration).strftime(Y_M_D_H_M_S), + timestamp=current_timestamp.strftime(Y_M_D_H_M_S), activity=self.activity, node=self.node, group_id=workstation, input=", ".join(str(obj) for obj in self.input_objects), output=", ".join(str(obj) for obj in self.output_objects) ) - - def add_to_last_timestamp(self, current_timestamp, duration): - self.last_event_end_timestamp = current_timestamp + timedelta(seconds=duration) - return self.last_event_end_timestamp diff --git a/distributed_event_factory/simulation/simulator_objects/workstation.py b/distributed_event_factory/simulation/simulator_objects/workstation.py index 77b4247..a52ab19 100644 --- a/distributed_event_factory/simulation/simulator_objects/workstation.py +++ b/distributed_event_factory/simulation/simulator_objects/workstation.py @@ -1,6 +1,6 @@ import random from typing import List - +from datetime import timedelta from simulation.simulator_objects.object_storage import ObjectStorage from simulation.simulator_objects.workprocessstep import WorkProcessStep @@ -8,6 +8,7 @@ class WorkStation: def __init__(self, work_station_name:str, work_process_steps: List[WorkProcessStep]): self.work_station_name = work_station_name self.work_process_steps = work_process_steps + self.last_event_end_timestamp = None def _is_activatable(self, object_storage: ObjectStorage): for workstation_step in self.work_process_steps: @@ -59,4 +60,8 @@ def get_workstation_preselected(self, prefered_workstation_steps: List[str], obj return random.choice(workstation_steps_selected) all_possible_steps = self.get_activatable_work_steps(object_storage) - return all_possible_steps[random.randint(0, len(all_possible_steps) - 1)] \ No newline at end of file + return all_possible_steps[random.randint(0, len(all_possible_steps) - 1)] + + def add_to_last_timestamp(self, current_timestamp, duration): + self.last_event_end_timestamp = current_timestamp + timedelta(seconds=duration) + return self.last_event_end_timestamp \ No newline at end of file From 9174456d70ed9c2c57e89d39b46abb9e333bdd53 Mon Sep 17 00:00:00 2001 From: ulpi Date: Wed, 2 Jul 2025 15:22:10 +0200 Subject: [PATCH 084/124] add unique object id --- distributed_event_factory/core/object.py | 7 +++--- distributed_event_factory/core/object_id.py | 2 ++ .../parser/object/object_source_parser.py | 2 +- .../process_simulation_object_centric.py | 5 +++-- .../simulator_objects/object_storage.py | 22 ++++++++++++------- .../simulator_objects/workprocessstep.py | 6 ++--- 6 files changed, 27 insertions(+), 17 deletions(-) diff --git a/distributed_event_factory/core/object.py b/distributed_event_factory/core/object.py index bdb67b7..1bf0496 100644 --- a/distributed_event_factory/core/object.py +++ b/distributed_event_factory/core/object.py @@ -21,7 +21,7 @@ class GenericObjectSource(ObjectSource): def __init__( self, - object_id: ObjectId, + object_id_name: str, object_type: str, input_objects: [], length: int, @@ -29,7 +29,8 @@ def __init__( ): self.values_changed: List[ObjectData] = [] - self.object_id = object_id + self.object_id_name = object_id_name + self.object_id = ObjectId(object_id_name) self.object_type = object_type self.input_objects = input_objects self.length = length @@ -66,7 +67,7 @@ def add_change(self, change): self.values_changed.append(change) def clone(self): - return GenericObjectSource(self.object_id, + return GenericObjectSource(self.object_id_name, self.object_type, self.input_objects, self.length, diff --git a/distributed_event_factory/core/object_id.py b/distributed_event_factory/core/object_id.py index 678368f..0432aac 100644 --- a/distributed_event_factory/core/object_id.py +++ b/distributed_event_factory/core/object_id.py @@ -1,6 +1,8 @@ +import uuid class ObjectId: def __init__(self, data_source_id: str): self.id: str = data_source_id + self.unique_id = str(uuid.uuid4()) def __eq__(self, other): return hasattr(other, "id") and self.id == other.id diff --git a/distributed_event_factory/parser/object/object_source_parser.py b/distributed_event_factory/parser/object/object_source_parser.py index ca2d091..1b38c06 100644 --- a/distributed_event_factory/parser/object/object_source_parser.py +++ b/distributed_event_factory/parser/object/object_source_parser.py @@ -21,7 +21,7 @@ def parse(self, config): lastState=input["lastState"] )) return GenericObjectSource( - object_id=ObjectId(config["name"]), + object_id_name=ObjectId(config["name"]), object_type=config["type"], input_objects=input_list, length=config["length"], diff --git a/distributed_event_factory/simulation/process_simulation_object_centric.py b/distributed_event_factory/simulation/process_simulation_object_centric.py index bd1de12..91e9a10 100644 --- a/distributed_event_factory/simulation/process_simulation_object_centric.py +++ b/distributed_event_factory/simulation/process_simulation_object_centric.py @@ -39,9 +39,10 @@ def simulate(self) -> Event: next_step, next_workstation = self.get_next_workstation_and_step(available_workstations) self.prior_step = next_step.node self.timestamp_history.append(next_workstation.add_to_last_timestamp(self.timestamp_history[len(self.timestamp_history)-1], next_step.duration)) - event = next_step.produce_event(self.timestamp_history[len(self.timestamp_history)-1], next_workstation.work_station_name) - self.object_storage.manage_input_and_output_of_steps(next_step.input_objects, next_step.output_objects, + ingoing_objects, outgoing_objects = self.object_storage.manage_input_and_output_of_steps(next_step.input_objects, next_step.output_objects, self.objects, self.timestamp_history[len(self.timestamp_history)-1]) + event = next_step.produce_event(self.timestamp_history[len(self.timestamp_history) - 1], + next_workstation.work_station_name, ingoing_objects, outgoing_objects) return event def _get_next_step_by_event_provider(self, data_source) -> List[str]: diff --git a/distributed_event_factory/simulation/simulator_objects/object_storage.py b/distributed_event_factory/simulation/simulator_objects/object_storage.py index d54ec18..01c34c7 100644 --- a/distributed_event_factory/simulation/simulator_objects/object_storage.py +++ b/distributed_event_factory/simulation/simulator_objects/object_storage.py @@ -21,11 +21,11 @@ def contains_all_object_of_data(self, objects: List[InputObjectProvider]): for obj in objects: if not obj.lastState: if sum(1 for item in self.objects if - item.object_id.id == obj.objectName and not item.values_changed) < obj.numberOfObject: + item.object_id.id.id == obj.objectName and not item.values_changed) < obj.numberOfObject: return False else: if (sum(1 for item in self.objects if - item.object_id.id == obj.objectName and item.get_last_changed_value() == obj.lastState) + item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState) < obj.numberOfObject): return False return True @@ -40,27 +40,29 @@ def add_objects(self, objects: List[GenericObjectSource]): def find_object_of_data_in_storage(self, obj): if obj.lastState: return next((item for item in self.objects if - item.object_id.id == obj.objectName and item.get_last_changed_value() == obj.lastState), None) + item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState), None) else: return next((item for item in self.objects if - item.object_id.id == obj.objectName and not item.values_changed), None) + item.object_id.id.id == obj.objectName and not item.values_changed), None) def find_object_in_input_objects(self, obj, objects): return next((item for item in objects if - item.object_id.id == obj.objectName), None) + item.object_id.id.id == obj.objectName), None) def manage_input_and_output_of_steps(self, input_objects: List[InputObjectProvider], output_objects: List[OutputObjectProvider], object_templates: Dict[str, ObjectData], timestamp): - objects = [] + ingoing_objects = [] for input_object in input_objects: for i in range(input_object.numberOfObject): obj = self.find_object_of_data_in_storage(input_object) - objects.append(obj) + ingoing_objects.append(obj) self.objects.remove(obj) - self.add_output_changed_objects_to_store(objects, object_templates, output_objects, timestamp) + outgoing_objects = self.add_output_changed_objects_to_store(ingoing_objects, object_templates, output_objects, timestamp) + return ingoing_objects, outgoing_objects def add_output_changed_objects_to_store(self, objects, object_templates, output_objects, timestamp): + outgoing_objects = [] for output_object in output_objects: for i in range(output_object.numberOfObject): obj = self.find_object_in_input_objects(output_object, objects) @@ -70,6 +72,8 @@ def add_output_changed_objects_to_store(self, objects, object_templates, output_ object_state=output_object.change, object_id=obj.object_id)) self.add_object(obj) + outgoing_objects.append(obj) + objects.remove(obj) else: obj = ObjectUtility().convert_object_name_to_generic_object(object_templates, output_object.objectName).clone() @@ -78,3 +82,5 @@ def add_output_changed_objects_to_store(self, objects, object_templates, output_ object_state=output_object.change, object_id=obj.object_id)) self.add_object(obj) + outgoing_objects.append(obj) + return outgoing_objects diff --git a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py index 4929c75..027e1a1 100644 --- a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py +++ b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py @@ -24,12 +24,12 @@ def __init__( self.node = node self.group_id = group_id - def produce_event(self, current_timestamp, workstation) -> ObjectEvent: + def produce_event(self, current_timestamp, workstation, ingoing_objects, outgoing_objects) -> ObjectEvent: return ObjectEvent( timestamp=current_timestamp.strftime(Y_M_D_H_M_S), activity=self.activity, node=self.node, group_id=workstation, - input=", ".join(str(obj) for obj in self.input_objects), - output=", ".join(str(obj) for obj in self.output_objects) + input=", ".join([str(obj) for obj in self.input_objects] +["objectIds: " + ", ".join(obj.object_id.unique_id for obj in ingoing_objects)]), + output=", ".join([str(obj) for obj in self.output_objects] +["objectIds: " + ", ".join(obj.object_id.unique_id for obj in outgoing_objects)]) ) From ad5af8ac08b17e8bf67c5cceb6844de7c5c08ee3 Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 3 Jul 2025 16:51:19 +0200 Subject: [PATCH 085/124] first attempt of parallel steps --- .../process_simulation_object_centric.py | 48 ++++++++++++++----- .../simulator_objects/object_storage.py | 40 +++++++++++++--- .../simulator_objects/workstation.py | 33 ++++++++++++- .../simulator_objects/workstation_service.py | 33 +++++++++++-- 4 files changed, 130 insertions(+), 24 deletions(-) diff --git a/distributed_event_factory/simulation/process_simulation_object_centric.py b/distributed_event_factory/simulation/process_simulation_object_centric.py index 91e9a10..5ae7fae 100644 --- a/distributed_event_factory/simulation/process_simulation_object_centric.py +++ b/distributed_event_factory/simulation/process_simulation_object_centric.py @@ -24,7 +24,7 @@ def __init__( ): self.workstations = [] self.workstation_service = WorkstationService() - self.timestamp_history = [datetime.now()] + self.last_timestamp = datetime.now() self.object_storage = object_storage self.objects = objects self.data_sources = data_sources @@ -32,16 +32,20 @@ def __init__( self.configureWorkStationsAndSteps() self.add_configured_stocks_in_warehouse() self.prior_step : str = "" + self.parallel_workstation_step_start_time = [] def simulate(self) -> Event: - available_workstations: List[WorkStation] = ( + if self.parallel_workstation_step_start_time: + next_step, next_workstation, self.last_timestamp = self.parallel_workstation_step_start_time[0] + else: + available_workstations: List[WorkStation] = ( self.workstation_service.get_activatable_workstations(self.workstations, self.object_storage)) - next_step, next_workstation = self.get_next_workstation_and_step(available_workstations) + next_step, next_workstation = self.get_next_workstation_and_step(available_workstations) self.prior_step = next_step.node - self.timestamp_history.append(next_workstation.add_to_last_timestamp(self.timestamp_history[len(self.timestamp_history)-1], next_step.duration)) + self.last_timestamp = next_workstation.add_to_last_timestamp(self.last_timestamp, next_step.duration) ingoing_objects, outgoing_objects = self.object_storage.manage_input_and_output_of_steps(next_step.input_objects, next_step.output_objects, - self.objects, self.timestamp_history[len(self.timestamp_history)-1]) - event = next_step.produce_event(self.timestamp_history[len(self.timestamp_history) - 1], + self.objects, self.last_timestamp) + event = next_step.produce_event(self.last_timestamp, next_workstation.work_station_name, ingoing_objects, outgoing_objects) return event @@ -57,18 +61,40 @@ def _get_next_step_by_event_provider(self, data_source) -> List[str]: return None def get_next_workstation_and_step(self, available_workstations): + parallel_workstations = self.workstation_service.get_next_workstations_sorted_duration_ascending(object_storage=self.object_storage, workstations=available_workstations) + if self.prior_step: next_available_steps = self._get_next_step_by_event_provider(self.prior_step) if next_available_steps: - next_workstation: WorkStation = self.workstation_service.get_workstation_preselected(available_workstations, + next_workstation = self.workstation_service.get_workstations_preselected(available_workstations, next_available_steps, self.object_storage) + if not next_workstation: + next_workstation : WorkStation = self.workstation_service.get_random_workstation(available_workstations) + elif type(next_workstation) is not WorkStation: + parallel_workstations = self.workstation_service.get_next_workstations_sorted_duration_ascending(object_storage=self.object_storage, workstations=next_workstation) + next_workstation = parallel_workstations[0] + for workstation in parallel_workstations: + step = workstation.get_workstation_preselected(object_storage=self.object_storage, prefered_workstation_steps=next_available_steps) + self.parallel_workstation_step_start_time.append((workstation, step, self.last_timestamp)) next_step = next_workstation.get_workstation_preselected(object_storage=self.object_storage, prefered_workstation_steps=next_available_steps) else: - next_workstation: WorkStation = self.workstation_service.get_random_workstation(available_workstations) - next_step = next_workstation.get_random_workstation_step() + next_step, next_workstation = self.get_random_workstation_step_or_parallel_start(available_workstations, + parallel_workstations) + else: + next_step, next_workstation = self.get_random_workstation_step_or_parallel_start(available_workstations, + parallel_workstations) + return next_step, next_workstation + + def get_random_workstation_step_or_parallel_start(self, available_workstations, parallel_workstations): + if len(parallel_workstations) > 1: + next_workstation = parallel_workstations[0] + for workstation in parallel_workstations: + step = workstation.get_fastest_available_step(object_storage=ObjectStorage) + self.parallel_workstation_step_start_time.append( + (workstation, step, self.last_timestamp)) else: next_workstation: WorkStation = self.workstation_service.get_random_workstation(available_workstations) - next_step = next_workstation.get_random_workstation_step() + next_step = next_workstation.get_random_workstation_step(object_storage=self.object_storage) return next_step, next_workstation def _get_sensor_with_id(self, data_source_id) -> DataSource: @@ -83,7 +109,7 @@ def add_configured_stocks_in_warehouse(self): self.object_storage.add_objects( ObjectUtility().convert_object_data_to_generic_objects(generic_objects_possible=self.objects, object_data=stock, - timestamp=self.timestamp_history)) + timestamp=self.last_timestamp)) def configureWorkStationsAndSteps(self): for data_source in self.data_sources: if data_source != "" and data_source != "": diff --git a/distributed_event_factory/simulation/simulator_objects/object_storage.py b/distributed_event_factory/simulation/simulator_objects/object_storage.py index 01c34c7..f467301 100644 --- a/distributed_event_factory/simulation/simulator_objects/object_storage.py +++ b/distributed_event_factory/simulation/simulator_objects/object_storage.py @@ -4,6 +4,7 @@ from provider.object.input.input_provider import InputObjectProvider from provider.transition.output.output_provider import OutputObjectProvider from simulation.simulator_objects.object_utility import ObjectUtility +from simulation.simulator_objects.workprocessstep import WorkProcessStep class ObjectStorage: @@ -30,6 +31,28 @@ def contains_all_object_of_data(self, objects: List[InputObjectProvider]): return False return True + def contains_all_object_of_data_for_steps(self, steps: List[WorkProcessStep]): + object_forecast = self.objects.copy() + possible_steps = [] + for step in steps: + for obj in step.input_objects: + if not obj.lastState: + if not sum(1 for item in object_forecast if + item.object_id.id.id == obj.objectName and not item.values_changed) < obj.numberOfObject: + possible_steps.append(step) + for i in range(obj.numberOfObject): + obj_to_remove = self.find_object_of_data_in_storage(obj, object_forecast) + object_forecast.remove(obj_to_remove) + else: + if not (sum(1 for item in object_forecast if + item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState) + < obj.numberOfObject): + possible_steps.append(step) + for i in range(obj.numberOfObject): + obj_to_remove = self.find_object_of_data_in_storage(obj, object_forecast) + object_forecast.remove(obj_to_remove) + return possible_steps + def add_object(self, obj: GenericObjectSource): self.objects.append(obj) @@ -37,12 +60,16 @@ def add_objects(self, objects: List[GenericObjectSource]): for obj in objects: self.add_object(obj) - def find_object_of_data_in_storage(self, obj): + def find_object_of_data_in_local_storage(self, obj): + return self.find_object_of_data_in_storage(obj, self.objects) + + def find_object_of_data_in_storage(self, obj, objects): if obj.lastState: - return next((item for item in self.objects if - item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState), None) + return next((item for item in objects if + item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState), + None) else: - return next((item for item in self.objects if + return next((item for item in objects if item.object_id.id.id == obj.objectName and not item.values_changed), None) def find_object_in_input_objects(self, obj, objects): @@ -55,10 +82,11 @@ def manage_input_and_output_of_steps(self, input_objects: List[InputObjectProvid ingoing_objects = [] for input_object in input_objects: for i in range(input_object.numberOfObject): - obj = self.find_object_of_data_in_storage(input_object) + obj = self.find_object_of_data_in_local_storage(input_object) ingoing_objects.append(obj) self.objects.remove(obj) - outgoing_objects = self.add_output_changed_objects_to_store(ingoing_objects, object_templates, output_objects, timestamp) + outgoing_objects = self.add_output_changed_objects_to_store(ingoing_objects, object_templates, output_objects, + timestamp) return ingoing_objects, outgoing_objects def add_output_changed_objects_to_store(self, objects, object_templates, output_objects, timestamp): diff --git a/distributed_event_factory/simulation/simulator_objects/workstation.py b/distributed_event_factory/simulation/simulator_objects/workstation.py index a52ab19..b0d4010 100644 --- a/distributed_event_factory/simulation/simulator_objects/workstation.py +++ b/distributed_event_factory/simulation/simulator_objects/workstation.py @@ -45,8 +45,37 @@ def workstation_has_preselected_activatable_steps(self, object_storage: ObjectSt return False - def get_random_workstation_step(self) -> WorkProcessStep: - return self.work_process_steps[random.randint(0, len(self.work_process_steps) - 1)] + def get_duration_of_shortest_available_step(self, object_storage: ObjectStorage): + activatable_steps = self.get_activatable_work_steps(object_storage) + + if not activatable_steps: + return None + minimal_duration = activatable_steps[0].duration + + for workstation_step in activatable_steps: + if workstation_step.duration < minimal_duration: + minimal_duration = workstation_step.duration + + return minimal_duration + + def get_fastest_available_step(self, object_storage: ObjectStorage): + activatable_steps = self.get_activatable_work_steps(object_storage) + + if not activatable_steps: + return None + + minimal_duration = activatable_steps[0].duration + step = activatable_steps[0] + + for workstation_step in activatable_steps: + if workstation_step.duration < minimal_duration: + minimal_duration = workstation_step.duration + step = workstation_step + return step + + def get_random_workstation_step(self, object_storage: ObjectStorage) -> WorkProcessStep: + work_process_steps_possible = self.get_activatable_work_steps(object_storage) + return work_process_steps_possible[random.randint(0, len(work_process_steps_possible) - 1)] def get_workstation_preselected(self, prefered_workstation_steps: List[str], object_storage: ObjectStorage) -> WorkProcessStep: workstation_steps_selected = [] diff --git a/distributed_event_factory/simulation/simulator_objects/workstation_service.py b/distributed_event_factory/simulation/simulator_objects/workstation_service.py index 3c8239b..849cdce 100644 --- a/distributed_event_factory/simulation/simulator_objects/workstation_service.py +++ b/distributed_event_factory/simulation/simulator_objects/workstation_service.py @@ -16,17 +16,40 @@ def get_activatable_workstations(self, workstations: List[WorkStation], object_s return activatable_workstations + def get_next_workstations_sorted_duration_ascending(self, object_storage: ObjectStorage, workstations: List[WorkStation]): + workstations_with_step_sorted_duration_ascending = [] + workstations_to_search_in = workstations.copy() + while len(workstations_with_step_sorted_duration_ascending) != len(workstations): + shortest_workstation = self.get_workstation_with_shortest_next_step(object_storage, workstations_to_search_in) + workstations_to_search_in.remove(shortest_workstation) + workstations_with_step_sorted_duration_ascending.append(shortest_workstation) + return workstations_with_step_sorted_duration_ascending + + def get_workstation_with_shortest_next_step(self, object_storage: ObjectStorage, workstations: List[WorkStation]): + minimal_duration = workstations[0].get_duration_of_shortest_available_step(object_storage=object_storage) + workstation_with_shortest_next_step = workstations[0] + + for workstation in workstations: + workstation_shortest_duration = workstation.get_duration_of_shortest_available_step( + object_storage=object_storage) + if workstation_shortest_duration < minimal_duration: + minimal_duration = workstation_shortest_duration + workstation_with_shortest_next_step = workstation + + return workstation_with_shortest_next_step + def get_random_workstation(self, workstations: List[WorkStation]) -> WorkStation: return workstations[random.randint(0, len(workstations) - 1)] - def get_workstation_preselected(self, workstations: List[WorkStation], prefered_workstation_steps: List[str], object_storage: ObjectStorage) -> WorkStation: + def get_workstations_preselected(self, workstations: List[WorkStation], prefered_workstation_steps: List[str], + object_storage: ObjectStorage): workstation_selected = [] for workstation in workstations: - if workstation.workstation_has_preselected_activatable_steps(object_storage=object_storage, prefered_workstation_steps=prefered_workstation_steps): + if workstation.workstation_has_preselected_activatable_steps(object_storage=object_storage, + prefered_workstation_steps=prefered_workstation_steps): workstation_selected.append(workstation) if len(workstation_selected) == 1: return workstation_selected[0] elif len(workstation_selected) > 1: - return random.choice(workstation_selected) - - return workstations[random.randint(0, len(workstations) - 1)] \ No newline at end of file + return workstation_selected + return None From 09212ea7a01cc2732b5fc61a48b93d321ffb24ee Mon Sep 17 00:00:00 2001 From: ulpi Date: Sat, 5 Jul 2025 22:34:38 +0200 Subject: [PATCH 086/124] bug fixes with last difficulties --- .../process_simulation_object_centric.py | 85 +++++++++++-------- .../simulator_objects/object_storage.py | 32 +++++-- .../simulator_objects/workstation.py | 6 +- .../simulator_objects/workstation_service.py | 29 ++++++- 4 files changed, 103 insertions(+), 49 deletions(-) diff --git a/distributed_event_factory/simulation/process_simulation_object_centric.py b/distributed_event_factory/simulation/process_simulation_object_centric.py index 5ae7fae..f9ae171 100644 --- a/distributed_event_factory/simulation/process_simulation_object_centric.py +++ b/distributed_event_factory/simulation/process_simulation_object_centric.py @@ -31,20 +31,22 @@ def __init__( self.stocks: Dict[str, InputObjectProvider] = stocks self.configureWorkStationsAndSteps() self.add_configured_stocks_in_warehouse() - self.prior_step : str = "" + self.prior_step: str = "" self.parallel_workstation_step_start_time = [] def simulate(self) -> Event: if self.parallel_workstation_step_start_time: - next_step, next_workstation, self.last_timestamp = self.parallel_workstation_step_start_time[0] + next_workstation, next_step, self.last_timestamp = self.parallel_workstation_step_start_time[0] + self.parallel_workstation_step_start_time = self.parallel_workstation_step_start_time[1:] else: available_workstations: List[WorkStation] = ( - self.workstation_service.get_activatable_workstations(self.workstations, self.object_storage)) + self.workstation_service.get_activatable_workstations(self.workstations, self.object_storage)) next_step, next_workstation = self.get_next_workstation_and_step(available_workstations) self.prior_step = next_step.node self.last_timestamp = next_workstation.add_to_last_timestamp(self.last_timestamp, next_step.duration) - ingoing_objects, outgoing_objects = self.object_storage.manage_input_and_output_of_steps(next_step.input_objects, next_step.output_objects, - self.objects, self.last_timestamp) + ingoing_objects, outgoing_objects = self.object_storage.manage_input_and_output_of_steps( + next_step.input_objects, next_step.output_objects, + self.objects, self.last_timestamp) event = next_step.produce_event(self.last_timestamp, next_workstation.work_station_name, ingoing_objects, outgoing_objects) return event @@ -61,39 +63,47 @@ def _get_next_step_by_event_provider(self, data_source) -> List[str]: return None def get_next_workstation_and_step(self, available_workstations): - parallel_workstations = self.workstation_service.get_next_workstations_sorted_duration_ascending(object_storage=self.object_storage, workstations=available_workstations) + workstations_ascending = self.workstation_service.get_next_workstations_sorted_duration_ascending( + object_storage=self.object_storage, workstations=available_workstations) if self.prior_step: next_available_steps = self._get_next_step_by_event_provider(self.prior_step) - if next_available_steps: - next_workstation = self.workstation_service.get_workstations_preselected(available_workstations, - next_available_steps, self.object_storage) - if not next_workstation: - next_workstation : WorkStation = self.workstation_service.get_random_workstation(available_workstations) - elif type(next_workstation) is not WorkStation: - parallel_workstations = self.workstation_service.get_next_workstations_sorted_duration_ascending(object_storage=self.object_storage, workstations=next_workstation) - next_workstation = parallel_workstations[0] - for workstation in parallel_workstations: - step = workstation.get_workstation_preselected(object_storage=self.object_storage, prefered_workstation_steps=next_available_steps) + if next_available_steps[0]: + next_workstation_and_step = self.workstation_service.get_next_workstation_step_pair_parallel( + next_available_steps, workstations_ascending, self.object_storage) + + if not next_workstation_and_step: + return ValueError("No available workstations") + elif len(next_workstation_and_step) == 1: + next_workstation, next_step = next_workstation_and_step[0] + return next_step, next_workstation + elif len(next_workstation_and_step) > 1: + next_workstation, next_step = next_workstation_and_step[0] + next_workstation_and_step.remove((next_workstation, next_step)) + for workstation, step in next_workstation_and_step: self.parallel_workstation_step_start_time.append((workstation, step, self.last_timestamp)) - next_step = next_workstation.get_workstation_preselected(object_storage=self.object_storage, prefered_workstation_steps=next_available_steps) - else: - next_step, next_workstation = self.get_random_workstation_step_or_parallel_start(available_workstations, - parallel_workstations) - else: - next_step, next_workstation = self.get_random_workstation_step_or_parallel_start(available_workstations, - parallel_workstations) + return next_step, next_workstation + + next_step, next_workstation = self.get_random_workstation_step_or_parallel_start(workstations_ascending) return next_step, next_workstation - def get_random_workstation_step_or_parallel_start(self, available_workstations, parallel_workstations): + def get_random_workstation_step_or_parallel_start(self, parallel_workstations): if len(parallel_workstations) > 1: - next_workstation = parallel_workstations[0] + multiple_workstations = [] + forecast_workstations_steps = [] for workstation in parallel_workstations: - step = workstation.get_fastest_available_step(object_storage=ObjectStorage) - self.parallel_workstation_step_start_time.append( - (workstation, step, self.last_timestamp)) + step = workstation.get_fastest_available_step(object_storage=self.object_storage) + forecast_workstations_steps.append((workstation, step)) + + possible_step = self.object_storage.contains_all_object_of_data_for_steps([(workstation, step)]) + if possible_step: + for workstation, step in possible_step: + multiple_workstations.append( + (workstation, step, self.last_timestamp)) + self.parallel_workstation_step_start_time.extend(multiple_workstations[1:]) + next_workstation, next_step ,_ = multiple_workstations[0] else: - next_workstation: WorkStation = self.workstation_service.get_random_workstation(available_workstations) + next_workstation: WorkStation = parallel_workstations[0] next_step = next_workstation.get_random_workstation_step(object_storage=self.object_storage) return next_step, next_workstation @@ -110,6 +120,7 @@ def add_configured_stocks_in_warehouse(self): ObjectUtility().convert_object_data_to_generic_objects(generic_objects_possible=self.objects, object_data=stock, timestamp=self.last_timestamp)) + def configureWorkStationsAndSteps(self): for data_source in self.data_sources: if data_source != "" and data_source != "": @@ -120,12 +131,12 @@ def configureWorkStationsAndSteps(self): workstation_steps = [] for e in events: workstation_steps.append(WorkProcessStep(activity=e.get_activity_provider().get_activity(), - node=data_source_id.get_name(), - group_id=self._get_sensor_with_id( - data_source_id).group_id, - input_objects=input_objects, - output_objects=e.get_activity_provider().get_output(), - duration=e.get_duration())) - - self.workstations.append(WorkStation(work_station_name=workstation ,work_process_steps=workstation_steps)) + node=data_source_id.get_name(), + group_id=self._get_sensor_with_id( + data_source_id).group_id, + input_objects=input_objects, + output_objects=e.get_activity_provider().get_output(), + duration=e.get_duration())) + self.workstations.append( + WorkStation(work_station_name=workstation, work_process_steps=workstation_steps)) diff --git a/distributed_event_factory/simulation/simulator_objects/object_storage.py b/distributed_event_factory/simulation/simulator_objects/object_storage.py index f467301..c8a5d77 100644 --- a/distributed_event_factory/simulation/simulator_objects/object_storage.py +++ b/distributed_event_factory/simulation/simulator_objects/object_storage.py @@ -34,23 +34,29 @@ def contains_all_object_of_data(self, objects: List[InputObjectProvider]): def contains_all_object_of_data_for_steps(self, steps: List[WorkProcessStep]): object_forecast = self.objects.copy() possible_steps = [] - for step in steps: + for workstation, step in steps: + all_objects_possible = True for obj in step.input_objects: if not obj.lastState: if not sum(1 for item in object_forecast if item.object_id.id.id == obj.objectName and not item.values_changed) < obj.numberOfObject: - possible_steps.append(step) for i in range(obj.numberOfObject): obj_to_remove = self.find_object_of_data_in_storage(obj, object_forecast) object_forecast.remove(obj_to_remove) + else: + all_objects_possible = False else: if not (sum(1 for item in object_forecast if item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState) < obj.numberOfObject): - possible_steps.append(step) + possible_steps.append((workstation, step)) for i in range(obj.numberOfObject): obj_to_remove = self.find_object_of_data_in_storage(obj, object_forecast) object_forecast.remove(obj_to_remove) + else: + all_objects_possible = False + if all_objects_possible: + possible_steps.append((workstation, step)) return possible_steps def add_object(self, obj: GenericObjectSource): @@ -60,8 +66,8 @@ def add_objects(self, objects: List[GenericObjectSource]): for obj in objects: self.add_object(obj) - def find_object_of_data_in_local_storage(self, obj): - return self.find_object_of_data_in_storage(obj, self.objects) + # def find_object_of_data_in_local_storage(self, obj): + # return self.find_object_of_data_in_storage(obj, self.objects) def find_object_of_data_in_storage(self, obj, objects): if obj.lastState: @@ -72,6 +78,15 @@ def find_object_of_data_in_storage(self, obj, objects): return next((item for item in objects if item.object_id.id.id == obj.objectName and not item.values_changed), None) + def find_object_of_data_in_local_storage(self, obj): + if obj.lastState: + return next((item for item in self.objects if + item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState), + None) + else: + return next((item for item in self.objects if + item.object_id.id.id == obj.objectName and not item.values_changed), None) + def find_object_in_input_objects(self, obj, objects): return next((item for item in objects if item.object_id.id.id == obj.objectName), None) @@ -83,8 +98,11 @@ def manage_input_and_output_of_steps(self, input_objects: List[InputObjectProvid for input_object in input_objects: for i in range(input_object.numberOfObject): obj = self.find_object_of_data_in_local_storage(input_object) - ingoing_objects.append(obj) - self.objects.remove(obj) + if obj: + ingoing_objects.append(obj) + self.objects.remove(obj) + else: + return ValueError("Object not found") outgoing_objects = self.add_output_changed_objects_to_store(ingoing_objects, object_templates, output_objects, timestamp) return ingoing_objects, outgoing_objects diff --git a/distributed_event_factory/simulation/simulator_objects/workstation.py b/distributed_event_factory/simulation/simulator_objects/workstation.py index b0d4010..0f8971b 100644 --- a/distributed_event_factory/simulation/simulator_objects/workstation.py +++ b/distributed_event_factory/simulation/simulator_objects/workstation.py @@ -28,13 +28,13 @@ def get_activatable_work_steps(self, object_storage: ObjectStorage): def get_prefered_activatable_work_steps(self, object_storage: ObjectStorage, prefered_workstation_steps: List[str]): activatable_steps = self.get_activatable_work_steps(object_storage) - workstation_selected = [] + work_step_selected = [] for workstation_step in activatable_steps: if workstation_step.node in prefered_workstation_steps: - workstation_selected.append(workstation_step) + work_step_selected.append(workstation_step) - return workstation_selected + return work_step_selected[random.randint(0, len(work_step_selected) - 1)] def workstation_has_preselected_activatable_steps(self, object_storage: ObjectStorage, prefered_workstation_steps: List[str]) -> bool: activatable_steps = self.get_activatable_work_steps(object_storage) diff --git a/distributed_event_factory/simulation/simulator_objects/workstation_service.py b/distributed_event_factory/simulation/simulator_objects/workstation_service.py index 849cdce..e04fb8d 100644 --- a/distributed_event_factory/simulation/simulator_objects/workstation_service.py +++ b/distributed_event_factory/simulation/simulator_objects/workstation_service.py @@ -16,11 +16,36 @@ def get_activatable_workstations(self, workstations: List[WorkStation], object_s return activatable_workstations - def get_next_workstations_sorted_duration_ascending(self, object_storage: ObjectStorage, workstations: List[WorkStation]): + def get_next_workstation_step_pair_parallel(self, next_available_steps, workstations: List[WorkStation], + object_storage: ObjectStorage): + steps_in_priority = [] + workstations_preselected = self.get_workstations_preselected(workstations, next_available_steps, object_storage) + if workstations_preselected: + if type(workstations_preselected) is WorkStation: + steps_in_priority.append((workstations_preselected, + workstations_preselected.get_prefered_activatable_work_steps(object_storage, + next_available_steps))) + else: + for workstation in workstations_preselected: + steps_in_priority.append((workstation, + workstation.get_prefered_activatable_work_steps(object_storage, + next_available_steps))) + for workstation in workstations: + if ((type(workstations_preselected) is WorkStation and workstation != workstations_preselected) or + (type( + workstations_preselected) is list and workstation not in workstations_preselected) or not workstations_preselected): + steps_in_priority.append((workstation, workstation.get_fastest_available_step(object_storage))) + possible_steps = object_storage.contains_all_object_of_data_for_steps(steps_in_priority) + possible_steps.sort(key=lambda x: x[1].duration) + return possible_steps + + def get_next_workstations_sorted_duration_ascending(self, object_storage: ObjectStorage, + workstations: List[WorkStation]): workstations_with_step_sorted_duration_ascending = [] workstations_to_search_in = workstations.copy() while len(workstations_with_step_sorted_duration_ascending) != len(workstations): - shortest_workstation = self.get_workstation_with_shortest_next_step(object_storage, workstations_to_search_in) + shortest_workstation = self.get_workstation_with_shortest_next_step(object_storage, + workstations_to_search_in) workstations_to_search_in.remove(shortest_workstation) workstations_with_step_sorted_duration_ascending.append(shortest_workstation) return workstations_with_step_sorted_duration_ascending From 2c41da3caa50da26a87f149344d409f3a2829d4c Mon Sep 17 00:00:00 2001 From: ulpi Date: Sun, 6 Jul 2025 14:09:35 +0200 Subject: [PATCH 087/124] fixed problem with workstation implementation --- .../datasource/smart-factory-parallel/e0-order.yaml | 2 +- .../smart-factory-parallel/e1-outgoing-stock.yaml | 2 +- .../smart-factory-parallel/e2-sawing-bar.yaml | 2 +- .../smart-factory-parallel/e3-drilling-bar.yaml | 2 +- .../smart-factory-parallel/e4-sanding-Bar.yaml | 2 +- .../smart-factory-parallel/e5-assembly.yaml | 2 +- .../smart-factory-parallel/e7-shipping.yaml | 2 +- .../smart-factory-parallel/t0-stock-to-machine.yaml | 2 +- .../t1-machine-to-assembly.yaml | 2 +- .../smart-factory-parallel/t1-stock-to-assembly.yaml | 2 +- .../simulation/process_simulation_object_centric.py | 11 +++++++---- .../simulation/simulator_objects/object_storage.py | 1 - .../simulation/simulator_objects/workstation.py | 12 +++++++++++- .../simulator_objects/workstation_service.py | 7 +++++++ 14 files changed, 35 insertions(+), 16 deletions(-) diff --git a/config/datasource/smart-factory-parallel/e0-order.yaml b/config/datasource/smart-factory-parallel/e0-order.yaml index c54d6dd..2fe3db3 100644 --- a/config/datasource/smart-factory-parallel/e0-order.yaml +++ b/config/datasource/smart-factory-parallel/e0-order.yaml @@ -4,7 +4,7 @@ spec: name: "OrderPlacement" group: "factory" type: objectCentric - workstation: "groupname" + workstation: "O" selection: genericProbability distribution: [1.0] input: diff --git a/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml b/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml index 89d33e9..d3a73de 100644 --- a/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml +++ b/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml @@ -4,7 +4,7 @@ spec: name: "OutgoingStock" group: "factory" type: objectCentric - workstation: "groupname" + workstation: "ST" selection: parallel input: - object: "resourceOrder" diff --git a/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml b/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml index 2b83087..1842cab 100644 --- a/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml +++ b/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml @@ -4,7 +4,7 @@ spec: name: "SawingBar" group: "factory" type: objectCentric - workstation: "groupname" + workstation: "M" selection: genericProbability distribution: [1.0] input: diff --git a/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml b/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml index 85572fb..c3b7c71 100644 --- a/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml +++ b/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml @@ -4,7 +4,7 @@ spec: name: "DrillingBar" group: "factory" type: objectCentric - workstation: "groupname" + workstation: "D" selection: genericProbability distribution: [1.0] input: diff --git a/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml b/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml index f7ac7d6..3c3908f 100644 --- a/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml +++ b/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml @@ -4,7 +4,7 @@ spec: name: "SandingBar" group: "factory" type: objectCentric - workstation: "groupname" + workstation: "SA" selection: genericProbability distribution: [1.0] input: diff --git a/config/datasource/smart-factory-parallel/e5-assembly.yaml b/config/datasource/smart-factory-parallel/e5-assembly.yaml index 648fcc3..fea9196 100644 --- a/config/datasource/smart-factory-parallel/e5-assembly.yaml +++ b/config/datasource/smart-factory-parallel/e5-assembly.yaml @@ -4,7 +4,7 @@ spec: name: "Assembly" group: "factory" type: objectCentric - workstation: "groupname" + workstation: "A" selection: genericProbability distribution: [ 0.8, 0.1, 0.1 ] input: diff --git a/config/datasource/smart-factory-parallel/e7-shipping.yaml b/config/datasource/smart-factory-parallel/e7-shipping.yaml index 7a57295..72986bb 100644 --- a/config/datasource/smart-factory-parallel/e7-shipping.yaml +++ b/config/datasource/smart-factory-parallel/e7-shipping.yaml @@ -4,7 +4,7 @@ spec: name: "Shipping" group: "factory" type: objectCentric - workstation: "groupname" + workstation: "S" selection: genericProbability distribution: [ 0.8, 0.2 ] input: diff --git a/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml b/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml index 5dccbd2..f5e813e 100644 --- a/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml +++ b/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml @@ -4,7 +4,7 @@ spec: name: "TransportM1" group: "transport" type: objectCentric - workstation: "groupname" + workstation: "R" selection: genericProbability distribution: [1.0] input: diff --git a/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml b/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml index 5df6457..31ecd9f 100644 --- a/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml +++ b/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml @@ -4,7 +4,7 @@ spec: name: "TransportM1A" group: "transport" type: objectCentric - workstation: "groupname" + workstation: "R" selection: genericProbability distribution: [1.0] input: diff --git a/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml index ad4bb72..689feea 100644 --- a/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml +++ b/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml @@ -4,7 +4,7 @@ spec: name: "TransportSA" group: "transport" type: objectCentric - workstation: "groupname" + workstation: "R" selection: genericProbability distribution: [1.0] input: diff --git a/distributed_event_factory/simulation/process_simulation_object_centric.py b/distributed_event_factory/simulation/process_simulation_object_centric.py index f9ae171..0716660 100644 --- a/distributed_event_factory/simulation/process_simulation_object_centric.py +++ b/distributed_event_factory/simulation/process_simulation_object_centric.py @@ -95,7 +95,7 @@ def get_random_workstation_step_or_parallel_start(self, parallel_workstations): step = workstation.get_fastest_available_step(object_storage=self.object_storage) forecast_workstations_steps.append((workstation, step)) - possible_step = self.object_storage.contains_all_object_of_data_for_steps([(workstation, step)]) + possible_step = self.object_storage.contains_all_object_of_data_for_steps(forecast_workstations_steps) if possible_step: for workstation, step in possible_step: multiple_workstations.append( @@ -137,6 +137,9 @@ def configureWorkStationsAndSteps(self): input_objects=input_objects, output_objects=e.get_activity_provider().get_output(), duration=e.get_duration())) - - self.workstations.append( - WorkStation(work_station_name=workstation, work_process_steps=workstation_steps)) + matching_workstation = self.workstation_service.get_workstation_by_name(workstation, self.workstations) + if matching_workstation: + matching_workstation.add_steps_to_workstation(workstation_steps) + else: + self.workstations.append( + WorkStation(work_station_name=workstation, work_process_steps=workstation_steps)) diff --git a/distributed_event_factory/simulation/simulator_objects/object_storage.py b/distributed_event_factory/simulation/simulator_objects/object_storage.py index c8a5d77..90f858e 100644 --- a/distributed_event_factory/simulation/simulator_objects/object_storage.py +++ b/distributed_event_factory/simulation/simulator_objects/object_storage.py @@ -49,7 +49,6 @@ def contains_all_object_of_data_for_steps(self, steps: List[WorkProcessStep]): if not (sum(1 for item in object_forecast if item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState) < obj.numberOfObject): - possible_steps.append((workstation, step)) for i in range(obj.numberOfObject): obj_to_remove = self.find_object_of_data_in_storage(obj, object_forecast) object_forecast.remove(obj_to_remove) diff --git a/distributed_event_factory/simulation/simulator_objects/workstation.py b/distributed_event_factory/simulation/simulator_objects/workstation.py index 0f8971b..979717d 100644 --- a/distributed_event_factory/simulation/simulator_objects/workstation.py +++ b/distributed_event_factory/simulation/simulator_objects/workstation.py @@ -66,11 +66,17 @@ def get_fastest_available_step(self, object_storage: ObjectStorage): minimal_duration = activatable_steps[0].duration step = activatable_steps[0] + steps_with_same_duration = [] for workstation_step in activatable_steps: if workstation_step.duration < minimal_duration: minimal_duration = workstation_step.duration step = workstation_step + steps_with_same_duration.append(step) + if workstation_step.duration == minimal_duration: + steps_with_same_duration.append(workstation_step) + if len(steps_with_same_duration) > 1: + return random.choice(steps_with_same_duration) return step def get_random_workstation_step(self, object_storage: ObjectStorage) -> WorkProcessStep: @@ -93,4 +99,8 @@ def get_workstation_preselected(self, prefered_workstation_steps: List[str], obj def add_to_last_timestamp(self, current_timestamp, duration): self.last_event_end_timestamp = current_timestamp + timedelta(seconds=duration) - return self.last_event_end_timestamp \ No newline at end of file + return self.last_event_end_timestamp + + def add_steps_to_workstation(self, steps): + for step in steps: + self.work_process_steps.append(step) \ No newline at end of file diff --git a/distributed_event_factory/simulation/simulator_objects/workstation_service.py b/distributed_event_factory/simulation/simulator_objects/workstation_service.py index e04fb8d..4b7e252 100644 --- a/distributed_event_factory/simulation/simulator_objects/workstation_service.py +++ b/distributed_event_factory/simulation/simulator_objects/workstation_service.py @@ -2,6 +2,7 @@ from typing import List from simulation.simulator_objects.object_storage import ObjectStorage +from simulation.simulator_objects.workprocessstep import WorkProcessStep from simulation.simulator_objects.workstation import WorkStation @@ -16,6 +17,12 @@ def get_activatable_workstations(self, workstations: List[WorkStation], object_s return activatable_workstations + def get_workstation_by_name(self, workstation_name, workstations: List[WorkStation]): + for workstation in workstations: + if workstation.work_station_name == workstation_name: + return workstation + return None + def get_next_workstation_step_pair_parallel(self, next_available_steps, workstations: List[WorkStation], object_storage: ObjectStorage): steps_in_priority = [] From 146b3f26aa8191043959d6846cff0701b9e9247e Mon Sep 17 00:00:00 2001 From: ulpi Date: Sun, 6 Jul 2025 15:11:50 +0200 Subject: [PATCH 088/124] refactoring and stopping only to use the shortest possible step --- .../smart-factory-parallel/e7-shipping.yaml | 2 +- .../process_simulation_object_centric.py | 19 +++----- .../simulator_objects/object_storage.py | 19 +------- .../simulator_objects/workprocessstep.py | 4 -- .../simulator_objects/workstation.py | 48 ------------------- .../simulator_objects/workstation_service.py | 42 +++++----------- 6 files changed, 22 insertions(+), 112 deletions(-) diff --git a/config/datasource/smart-factory-parallel/e7-shipping.yaml b/config/datasource/smart-factory-parallel/e7-shipping.yaml index 72986bb..3bb489f 100644 --- a/config/datasource/smart-factory-parallel/e7-shipping.yaml +++ b/config/datasource/smart-factory-parallel/e7-shipping.yaml @@ -10,7 +10,7 @@ spec: input: - object: "woodShelf" number: 1 - lastState: "" + lastState: "assembled" eventData: - activity: name: "Package waits for sending" diff --git a/distributed_event_factory/simulation/process_simulation_object_centric.py b/distributed_event_factory/simulation/process_simulation_object_centric.py index 0716660..957a3ec 100644 --- a/distributed_event_factory/simulation/process_simulation_object_centric.py +++ b/distributed_event_factory/simulation/process_simulation_object_centric.py @@ -63,14 +63,14 @@ def _get_next_step_by_event_provider(self, data_source) -> List[str]: return None def get_next_workstation_and_step(self, available_workstations): - workstations_ascending = self.workstation_service.get_next_workstations_sorted_duration_ascending( + workstation_steps_ascending = self.workstation_service.get_next_workstations_and_step_sorted_duration_ascending( object_storage=self.object_storage, workstations=available_workstations) if self.prior_step: next_available_steps = self._get_next_step_by_event_provider(self.prior_step) if next_available_steps[0]: next_workstation_and_step = self.workstation_service.get_next_workstation_step_pair_parallel( - next_available_steps, workstations_ascending, self.object_storage) + next_available_steps, workstation_steps_ascending, self.object_storage) if not next_workstation_and_step: return ValueError("No available workstations") @@ -84,18 +84,14 @@ def get_next_workstation_and_step(self, available_workstations): self.parallel_workstation_step_start_time.append((workstation, step, self.last_timestamp)) return next_step, next_workstation - next_step, next_workstation = self.get_random_workstation_step_or_parallel_start(workstations_ascending) + next_step, next_workstation = self.get_random_workstation_step_or_parallel_start(workstation_steps_ascending) return next_step, next_workstation - def get_random_workstation_step_or_parallel_start(self, parallel_workstations): - if len(parallel_workstations) > 1: + def get_random_workstation_step_or_parallel_start(self, workstation_steps_ascending): + if len(workstation_steps_ascending) > 1: multiple_workstations = [] - forecast_workstations_steps = [] - for workstation in parallel_workstations: - step = workstation.get_fastest_available_step(object_storage=self.object_storage) - forecast_workstations_steps.append((workstation, step)) - possible_step = self.object_storage.contains_all_object_of_data_for_steps(forecast_workstations_steps) + possible_step = self.object_storage.contains_all_object_of_data_for_steps(workstation_steps_ascending) if possible_step: for workstation, step in possible_step: multiple_workstations.append( @@ -103,8 +99,7 @@ def get_random_workstation_step_or_parallel_start(self, parallel_workstations): self.parallel_workstation_step_start_time.extend(multiple_workstations[1:]) next_workstation, next_step ,_ = multiple_workstations[0] else: - next_workstation: WorkStation = parallel_workstations[0] - next_step = next_workstation.get_random_workstation_step(object_storage=self.object_storage) + next_workstation, next_step = workstation_steps_ascending[0] return next_step, next_workstation def _get_sensor_with_id(self, data_source_id) -> DataSource: diff --git a/distributed_event_factory/simulation/simulator_objects/object_storage.py b/distributed_event_factory/simulation/simulator_objects/object_storage.py index 90f858e..f259a9f 100644 --- a/distributed_event_factory/simulation/simulator_objects/object_storage.py +++ b/distributed_event_factory/simulation/simulator_objects/object_storage.py @@ -12,12 +12,6 @@ class ObjectStorage: def __init__(self): self.objects: List[GenericObjectSource] = [] - def contains_all_objects(self, objects: List[GenericObjectSource]): - for obj in objects: - if not obj in self.objects: - return False - return True - def contains_all_object_of_data(self, objects: List[InputObjectProvider]): for obj in objects: if not obj.lastState: @@ -65,8 +59,8 @@ def add_objects(self, objects: List[GenericObjectSource]): for obj in objects: self.add_object(obj) - # def find_object_of_data_in_local_storage(self, obj): - # return self.find_object_of_data_in_storage(obj, self.objects) + def find_object_of_data_in_local_storage(self, obj): + return self.find_object_of_data_in_storage(obj, self.objects) def find_object_of_data_in_storage(self, obj, objects): if obj.lastState: @@ -77,15 +71,6 @@ def find_object_of_data_in_storage(self, obj, objects): return next((item for item in objects if item.object_id.id.id == obj.objectName and not item.values_changed), None) - def find_object_of_data_in_local_storage(self, obj): - if obj.lastState: - return next((item for item in self.objects if - item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState), - None) - else: - return next((item for item in self.objects if - item.object_id.id.id == obj.objectName and not item.values_changed), None) - def find_object_in_input_objects(self, obj, objects): return next((item for item in objects if item.object_id.id.id == obj.objectName), None) diff --git a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py index 027e1a1..6142048 100644 --- a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py +++ b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py @@ -1,7 +1,3 @@ -from datetime import timedelta, datetime - -from process_mining_core.datastructure.core.event import Event - from simulation.object_event import ObjectEvent Y_M_D_H_M_S = "%Y-%m-%d %H:%M:%S" diff --git a/distributed_event_factory/simulation/simulator_objects/workstation.py b/distributed_event_factory/simulation/simulator_objects/workstation.py index 979717d..38083bc 100644 --- a/distributed_event_factory/simulation/simulator_objects/workstation.py +++ b/distributed_event_factory/simulation/simulator_objects/workstation.py @@ -45,58 +45,10 @@ def workstation_has_preselected_activatable_steps(self, object_storage: ObjectSt return False - def get_duration_of_shortest_available_step(self, object_storage: ObjectStorage): - activatable_steps = self.get_activatable_work_steps(object_storage) - - if not activatable_steps: - return None - minimal_duration = activatable_steps[0].duration - - for workstation_step in activatable_steps: - if workstation_step.duration < minimal_duration: - minimal_duration = workstation_step.duration - - return minimal_duration - - def get_fastest_available_step(self, object_storage: ObjectStorage): - activatable_steps = self.get_activatable_work_steps(object_storage) - - if not activatable_steps: - return None - - minimal_duration = activatable_steps[0].duration - step = activatable_steps[0] - steps_with_same_duration = [] - - for workstation_step in activatable_steps: - if workstation_step.duration < minimal_duration: - minimal_duration = workstation_step.duration - step = workstation_step - steps_with_same_duration.append(step) - if workstation_step.duration == minimal_duration: - steps_with_same_duration.append(workstation_step) - if len(steps_with_same_duration) > 1: - return random.choice(steps_with_same_duration) - return step - def get_random_workstation_step(self, object_storage: ObjectStorage) -> WorkProcessStep: work_process_steps_possible = self.get_activatable_work_steps(object_storage) return work_process_steps_possible[random.randint(0, len(work_process_steps_possible) - 1)] - def get_workstation_preselected(self, prefered_workstation_steps: List[str], object_storage: ObjectStorage) -> WorkProcessStep: - workstation_steps_selected = [] - prefered_process_steps = self.get_prefered_activatable_work_steps(object_storage, prefered_workstation_steps) - if prefered_process_steps: - for process_step in self.work_process_steps: - workstation_steps_selected.append(process_step) - if len(workstation_steps_selected) == 1: - return workstation_steps_selected[0] - elif len(workstation_steps_selected) > 1: - return random.choice(workstation_steps_selected) - - all_possible_steps = self.get_activatable_work_steps(object_storage) - return all_possible_steps[random.randint(0, len(all_possible_steps) - 1)] - def add_to_last_timestamp(self, current_timestamp, duration): self.last_event_end_timestamp = current_timestamp + timedelta(seconds=duration) return self.last_event_end_timestamp diff --git a/distributed_event_factory/simulation/simulator_objects/workstation_service.py b/distributed_event_factory/simulation/simulator_objects/workstation_service.py index 4b7e252..a374c43 100644 --- a/distributed_event_factory/simulation/simulator_objects/workstation_service.py +++ b/distributed_event_factory/simulation/simulator_objects/workstation_service.py @@ -2,7 +2,6 @@ from typing import List from simulation.simulator_objects.object_storage import ObjectStorage -from simulation.simulator_objects.workprocessstep import WorkProcessStep from simulation.simulator_objects.workstation import WorkStation @@ -23,10 +22,11 @@ def get_workstation_by_name(self, workstation_name, workstations: List[WorkStati return workstation return None - def get_next_workstation_step_pair_parallel(self, next_available_steps, workstations: List[WorkStation], + def get_next_workstation_step_pair_parallel(self, next_available_steps, workstation_steps_ascending, object_storage: ObjectStorage): steps_in_priority = [] - workstations_preselected = self.get_workstations_preselected(workstations, next_available_steps, object_storage) + workstations_preselected = self.get_workstations_preselected([item[0] for item in workstation_steps_ascending], + next_available_steps, object_storage) if workstations_preselected: if type(workstations_preselected) is WorkStation: steps_in_priority.append((workstations_preselected, @@ -37,41 +37,23 @@ def get_next_workstation_step_pair_parallel(self, next_available_steps, workstat steps_in_priority.append((workstation, workstation.get_prefered_activatable_work_steps(object_storage, next_available_steps))) - for workstation in workstations: + for workstation, step in workstation_steps_ascending: if ((type(workstations_preselected) is WorkStation and workstation != workstations_preselected) or (type( workstations_preselected) is list and workstation not in workstations_preselected) or not workstations_preselected): - steps_in_priority.append((workstation, workstation.get_fastest_available_step(object_storage))) + steps_in_priority.append((workstation, step)) possible_steps = object_storage.contains_all_object_of_data_for_steps(steps_in_priority) possible_steps.sort(key=lambda x: x[1].duration) return possible_steps - def get_next_workstations_sorted_duration_ascending(self, object_storage: ObjectStorage, - workstations: List[WorkStation]): - workstations_with_step_sorted_duration_ascending = [] - workstations_to_search_in = workstations.copy() - while len(workstations_with_step_sorted_duration_ascending) != len(workstations): - shortest_workstation = self.get_workstation_with_shortest_next_step(object_storage, - workstations_to_search_in) - workstations_to_search_in.remove(shortest_workstation) - workstations_with_step_sorted_duration_ascending.append(shortest_workstation) - return workstations_with_step_sorted_duration_ascending - - def get_workstation_with_shortest_next_step(self, object_storage: ObjectStorage, workstations: List[WorkStation]): - minimal_duration = workstations[0].get_duration_of_shortest_available_step(object_storage=object_storage) - workstation_with_shortest_next_step = workstations[0] - + def get_next_workstations_and_step_sorted_duration_ascending(self, object_storage: ObjectStorage, + workstations: List[WorkStation]): + workstations_step_pair = [] for workstation in workstations: - workstation_shortest_duration = workstation.get_duration_of_shortest_available_step( - object_storage=object_storage) - if workstation_shortest_duration < minimal_duration: - minimal_duration = workstation_shortest_duration - workstation_with_shortest_next_step = workstation - - return workstation_with_shortest_next_step - - def get_random_workstation(self, workstations: List[WorkStation]) -> WorkStation: - return workstations[random.randint(0, len(workstations) - 1)] + step = workstation.get_random_workstation_step(object_storage=object_storage) + workstations_step_pair.append((workstation, step)) + workstations_step_pair.sort(key=lambda x: x[1].duration) + return workstations_step_pair def get_workstations_preselected(self, workstations: List[WorkStation], prefered_workstation_steps: List[str], object_storage: ObjectStorage): From d21733ac77bf3ff7ef65e955769bc5234b469278 Mon Sep 17 00:00:00 2001 From: ulpi Date: Sun, 6 Jul 2025 15:32:40 +0200 Subject: [PATCH 089/124] refactoring and renaming --- .../process_simulation_object_centric.py | 30 ++++++------ .../simulator_objects/object_storage.py | 46 +++++++++++-------- .../simulator_objects/workstation.py | 2 +- .../simulator_objects/workstation_service.py | 23 ++++++---- 4 files changed, 58 insertions(+), 43 deletions(-) diff --git a/distributed_event_factory/simulation/process_simulation_object_centric.py b/distributed_event_factory/simulation/process_simulation_object_centric.py index 957a3ec..10a6b30 100644 --- a/distributed_event_factory/simulation/process_simulation_object_centric.py +++ b/distributed_event_factory/simulation/process_simulation_object_centric.py @@ -63,41 +63,41 @@ def _get_next_step_by_event_provider(self, data_source) -> List[str]: return None def get_next_workstation_and_step(self, available_workstations): - workstation_steps_ascending = self.workstation_service.get_next_workstations_and_step_sorted_duration_ascending( + workstation_step_pairs_ascending = self.workstation_service.get_next_workstations_and_step_sorted_duration_ascending( object_storage=self.object_storage, workstations=available_workstations) if self.prior_step: next_available_steps = self._get_next_step_by_event_provider(self.prior_step) if next_available_steps[0]: - next_workstation_and_step = self.workstation_service.get_next_workstation_step_pair_parallel( - next_available_steps, workstation_steps_ascending, self.object_storage) + next_workstation_step_pairs = self.workstation_service.get_next_workstation_step_pair_parallel( + next_available_steps, workstation_step_pairs_ascending, self.object_storage) - if not next_workstation_and_step: + if not next_workstation_step_pairs: return ValueError("No available workstations") - elif len(next_workstation_and_step) == 1: - next_workstation, next_step = next_workstation_and_step[0] + elif len(next_workstation_step_pairs) == 1: + next_workstation, next_step = next_workstation_step_pairs[0] return next_step, next_workstation - elif len(next_workstation_and_step) > 1: - next_workstation, next_step = next_workstation_and_step[0] - next_workstation_and_step.remove((next_workstation, next_step)) - for workstation, step in next_workstation_and_step: + elif len(next_workstation_step_pairs) > 1: + next_workstation, next_step = next_workstation_step_pairs[0] + next_workstation_step_pairs.remove((next_workstation, next_step)) + for workstation, step in next_workstation_step_pairs: self.parallel_workstation_step_start_time.append((workstation, step, self.last_timestamp)) return next_step, next_workstation - next_step, next_workstation = self.get_random_workstation_step_or_parallel_start(workstation_steps_ascending) + next_step, next_workstation = self.get_random_workstation_step_or_parallel_start(workstation_step_pairs_ascending) return next_step, next_workstation def get_random_workstation_step_or_parallel_start(self, workstation_steps_ascending): if len(workstation_steps_ascending) > 1: - multiple_workstations = [] + parallel_workstation_step_time = [] possible_step = self.object_storage.contains_all_object_of_data_for_steps(workstation_steps_ascending) if possible_step: for workstation, step in possible_step: - multiple_workstations.append( + parallel_workstation_step_time.append( (workstation, step, self.last_timestamp)) - self.parallel_workstation_step_start_time.extend(multiple_workstations[1:]) - next_workstation, next_step ,_ = multiple_workstations[0] + self.parallel_workstation_step_start_time.extend(parallel_workstation_step_time[1:]) + next_workstation, next_step ,_ = parallel_workstation_step_time[0] else: next_workstation, next_step = workstation_steps_ascending[0] return next_step, next_workstation diff --git a/distributed_event_factory/simulation/simulator_objects/object_storage.py b/distributed_event_factory/simulation/simulator_objects/object_storage.py index f259a9f..b52c2e0 100644 --- a/distributed_event_factory/simulation/simulator_objects/object_storage.py +++ b/distributed_event_factory/simulation/simulator_objects/object_storage.py @@ -27,30 +27,40 @@ def contains_all_object_of_data(self, objects: List[InputObjectProvider]): def contains_all_object_of_data_for_steps(self, steps: List[WorkProcessStep]): object_forecast = self.objects.copy() - possible_steps = [] + possible_workstation_step_pairs = [] for workstation, step in steps: all_objects_possible = True for obj in step.input_objects: if not obj.lastState: - if not sum(1 for item in object_forecast if - item.object_id.id.id == obj.objectName and not item.values_changed) < obj.numberOfObject: - for i in range(obj.numberOfObject): - obj_to_remove = self.find_object_of_data_in_storage(obj, object_forecast) - object_forecast.remove(obj_to_remove) - else: - all_objects_possible = False + all_objects_possible = self.contains_objects_with_last_state_for_steps(all_objects_possible, obj, + object_forecast) else: - if not (sum(1 for item in object_forecast if - item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState) - < obj.numberOfObject): - for i in range(obj.numberOfObject): - obj_to_remove = self.find_object_of_data_in_storage(obj, object_forecast) - object_forecast.remove(obj_to_remove) - else: - all_objects_possible = False + all_objects_possible = self.contains_objects_without_last_state_for_steps(all_objects_possible, obj, + object_forecast) if all_objects_possible: - possible_steps.append((workstation, step)) - return possible_steps + possible_workstation_step_pairs.append((workstation, step)) + return possible_workstation_step_pairs + + def contains_objects_without_last_state_for_steps(self, all_objects_possible, obj, object_forecast): + if not (sum(1 for item in object_forecast if + item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState) + < obj.numberOfObject): + for i in range(obj.numberOfObject): + obj_to_remove = self.find_object_of_data_in_storage(obj, object_forecast) + object_forecast.remove(obj_to_remove) + else: + all_objects_possible = False + return all_objects_possible + + def contains_objects_with_last_state_for_steps(self, all_objects_possible, obj, object_forecast): + if not sum(1 for item in object_forecast if + item.object_id.id.id == obj.objectName and not item.values_changed) < obj.numberOfObject: + for i in range(obj.numberOfObject): + obj_to_remove = self.find_object_of_data_in_storage(obj, object_forecast) + object_forecast.remove(obj_to_remove) + else: + all_objects_possible = False + return all_objects_possible def add_object(self, obj: GenericObjectSource): self.objects.append(obj) diff --git a/distributed_event_factory/simulation/simulator_objects/workstation.py b/distributed_event_factory/simulation/simulator_objects/workstation.py index 38083bc..4bb28a3 100644 --- a/distributed_event_factory/simulation/simulator_objects/workstation.py +++ b/distributed_event_factory/simulation/simulator_objects/workstation.py @@ -45,7 +45,7 @@ def workstation_has_preselected_activatable_steps(self, object_storage: ObjectSt return False - def get_random_workstation_step(self, object_storage: ObjectStorage) -> WorkProcessStep: + def get_random_activatable_workstation_step(self, object_storage: ObjectStorage) -> WorkProcessStep: work_process_steps_possible = self.get_activatable_work_steps(object_storage) return work_process_steps_possible[random.randint(0, len(work_process_steps_possible) - 1)] diff --git a/distributed_event_factory/simulation/simulator_objects/workstation_service.py b/distributed_event_factory/simulation/simulator_objects/workstation_service.py index a374c43..71a4ef7 100644 --- a/distributed_event_factory/simulation/simulator_objects/workstation_service.py +++ b/distributed_event_factory/simulation/simulator_objects/workstation_service.py @@ -27,6 +27,19 @@ def get_next_workstation_step_pair_parallel(self, next_available_steps, workstat steps_in_priority = [] workstations_preselected = self.get_workstations_preselected([item[0] for item in workstation_steps_ascending], next_available_steps, object_storage) + self.append_possible_preselected_workstation_step_pairs(next_available_steps, object_storage, steps_in_priority, + workstations_preselected) + for workstation, step in workstation_steps_ascending: + if ((type(workstations_preselected) is WorkStation and workstation != workstations_preselected) or + (type( + workstations_preselected) is list and workstation not in workstations_preselected) or not workstations_preselected): + steps_in_priority.append((workstation, step)) + possible_steps = object_storage.contains_all_object_of_data_for_steps(steps_in_priority) + possible_steps.sort(key=lambda x: x[1].duration) + return possible_steps + + def append_possible_preselected_workstation_step_pairs(self, next_available_steps, object_storage, + steps_in_priority, workstations_preselected): if workstations_preselected: if type(workstations_preselected) is WorkStation: steps_in_priority.append((workstations_preselected, @@ -37,20 +50,12 @@ def get_next_workstation_step_pair_parallel(self, next_available_steps, workstat steps_in_priority.append((workstation, workstation.get_prefered_activatable_work_steps(object_storage, next_available_steps))) - for workstation, step in workstation_steps_ascending: - if ((type(workstations_preselected) is WorkStation and workstation != workstations_preselected) or - (type( - workstations_preselected) is list and workstation not in workstations_preselected) or not workstations_preselected): - steps_in_priority.append((workstation, step)) - possible_steps = object_storage.contains_all_object_of_data_for_steps(steps_in_priority) - possible_steps.sort(key=lambda x: x[1].duration) - return possible_steps def get_next_workstations_and_step_sorted_duration_ascending(self, object_storage: ObjectStorage, workstations: List[WorkStation]): workstations_step_pair = [] for workstation in workstations: - step = workstation.get_random_workstation_step(object_storage=object_storage) + step = workstation.get_random_activatable_workstation_step(object_storage=object_storage) workstations_step_pair.append((workstation, step)) workstations_step_pair.sort(key=lambda x: x[1].duration) return workstations_step_pair From c661de1993979f96d395fa751683ea1b0a640f5d Mon Sep 17 00:00:00 2001 From: ulpi Date: Wed, 9 Jul 2025 13:59:24 +0200 Subject: [PATCH 090/124] first steps to include workforce and routes, not integrated in simulation --- distributed_event_factory/core/workforce.py | 27 +++++++++++ .../simulation/countbased.py | 1 + .../process_simulation_object_centric.py | 4 ++ .../simulator_objects/route_management.py | 46 +++++++++++++++++++ .../simulator_objects/workforce_storage.py | 23 ++++++++++ 5 files changed, 101 insertions(+) create mode 100644 distributed_event_factory/core/workforce.py create mode 100644 distributed_event_factory/simulation/simulator_objects/route_management.py create mode 100644 distributed_event_factory/simulation/simulator_objects/workforce_storage.py diff --git a/distributed_event_factory/core/workforce.py b/distributed_event_factory/core/workforce.py new file mode 100644 index 0000000..8cb2b2c --- /dev/null +++ b/distributed_event_factory/core/workforce.py @@ -0,0 +1,27 @@ +from core.route import Route +from simulation.simulator_objects.route_management import RouteManagement + + +class Workforce: + def __init__(self, name:str, location:str): + self.name = name + self.location = location + self.available = True + + def get_duration_to_get_to_location(self, location:str, routeManagement:RouteManagement): + route: Route = routeManagement.get_route_for_start_end(self.location, location) + return route.duration + + def get_location(self): + return self.location + + def is_transfer_to_location_possible(self, location:str, routeManagement:RouteManagement): + if self.available: + return routeManagement.route_for_start_end_exists(self.location, location) + return False + + def set_available(self, available:bool): + self.available = available + + def is_available(self): + return self.available diff --git a/distributed_event_factory/simulation/countbased.py b/distributed_event_factory/simulation/countbased.py index 81c937e..91ace72 100644 --- a/distributed_event_factory/simulation/countbased.py +++ b/distributed_event_factory/simulation/countbased.py @@ -29,6 +29,7 @@ def run_simulation(self, datasources, sinks, objects, routes, stocks, hook=lambd object_storage=ObjectStorage(), data_sources=datasources, objects=objects, + routes=routes, stocks=stocks ) diff --git a/distributed_event_factory/simulation/process_simulation_object_centric.py b/distributed_event_factory/simulation/process_simulation_object_centric.py index 10a6b30..dc8bd89 100644 --- a/distributed_event_factory/simulation/process_simulation_object_centric.py +++ b/distributed_event_factory/simulation/process_simulation_object_centric.py @@ -6,9 +6,11 @@ from core.abstract_datasource import DataSource from core.datasource_id import DataSourceId from core.object import ObjectData +from core.route import Route from provider.object.input.input_provider import InputObjectProvider from simulation.simulator_objects.object_storage import ObjectStorage from simulation.simulator_objects.object_utility import ObjectUtility +from simulation.simulator_objects.route_management import RouteManagement from simulation.simulator_objects.workprocessstep import WorkProcessStep from simulation.simulator_objects.workstation import WorkStation from simulation.simulator_objects.workstation_service import WorkstationService @@ -20,6 +22,7 @@ def __init__( object_storage: ObjectStorage, data_sources: Dict[str, DataSource], objects: Dict[str, ObjectData], + routes: Dict[str, Route], stocks: Dict[str, InputObjectProvider] ): self.workstations = [] @@ -28,6 +31,7 @@ def __init__( self.object_storage = object_storage self.objects = objects self.data_sources = data_sources + self.routeManagement = RouteManagement(routes.get("default")) self.stocks: Dict[str, InputObjectProvider] = stocks self.configureWorkStationsAndSteps() self.add_configured_stocks_in_warehouse() diff --git a/distributed_event_factory/simulation/simulator_objects/route_management.py b/distributed_event_factory/simulation/simulator_objects/route_management.py new file mode 100644 index 0000000..37cc15a --- /dev/null +++ b/distributed_event_factory/simulation/simulator_objects/route_management.py @@ -0,0 +1,46 @@ +from typing import List + +from core.route import Route + + +class RouteManagement: + def __init__(self, routes: List[Route]): + self.routes = routes + + def get_route_for_start_end(self, start, end): + for route in self.routes: + if route.start == start and route.end == end: + return route + return None + + def get_route_for_start(self, start): + for route in self.routes: + if route.start == start: + return route + return None + + def route_for_start_end_exists(self, start, end): + for route in self.routes: + if route.start == start and route.end == end: + return True + return False + + def closest_to_location(self, location:str): + min_route = self.get_route_for_start(location) + min_duration = min_route.duration + + for route in self.routes: + if route.start == location: + if min_duration > route.duration: + min_duration = route.duration + min_route = route + return min_route + + + def closest_to_location_order(self, location:str): + possible_routes = [] + for route in self.routes: + if route.start == location: + possible_routes.append(route) + possible_routes.sort(key=lambda route: route.duration) + return possible_routes \ No newline at end of file diff --git a/distributed_event_factory/simulation/simulator_objects/workforce_storage.py b/distributed_event_factory/simulation/simulator_objects/workforce_storage.py new file mode 100644 index 0000000..fb42034 --- /dev/null +++ b/distributed_event_factory/simulation/simulator_objects/workforce_storage.py @@ -0,0 +1,23 @@ +from typing import List + +from core.workforce import Workforce +from simulation.simulator_objects.route_management import RouteManagement + + +class WorkforceStorage: + def __init__(self): + self.workforces: List[Workforce] = [] + + def get_available_workforce_at_location(self, location:str): + for workforce in self.workforces: + if workforce.location == location: + return workforce + return None + + def get_available_workforce_closest_to_location(self, location:str, routeManagement:RouteManagement): + locations = routeManagement.closest_to_location_order(location) + for location in locations: + for workforce in self.workforces: + if workforce.location == location: + return workforce + return None \ No newline at end of file From 420716faafc1d7d0f1426a99c0e67152bca268ce Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 11 Jul 2025 12:57:21 +0200 Subject: [PATCH 091/124] integrated workforces and routing of transport workforces --- .../smart-factory-parallel/bar.yaml | 2 +- .../smart-factory-parallel/e0-order.yaml | 6 + .../e1-outgoing-stock.yaml | 3 + .../smart-factory-parallel/e2-sawing-bar.yaml | 3 + .../e3-drilling-bar.yaml | 3 + .../e4-sanding-Bar.yaml | 3 + .../smart-factory-parallel/e5-assembly.yaml | 3 + .../smart-factory-parallel/e7-shipping.yaml | 3 + .../smart-factory-parallel/routing.yaml | 36 ++++- .../t0-stock-to-machine.yaml | 6 + .../t1-machine-to-assembly.yaml | 6 + .../t1-stock-to-assembly.yaml | 6 + .../smart-factory-parallel/workforces.yaml | 10 ++ .../core/core_decisions_datasource.py | 19 ++- distributed_event_factory/core/workforce.py | 2 + distributed_event_factory/event_factory.py | 21 ++- .../event/event_selection_parser.py | 5 +- .../parser/parser_registry.py | 14 +- .../parser/workforce/workforce_parser.py | 34 +++++ .../workforce/workforce_start_positions.py | 22 +++ .../workforce/InputWorkforceProvider.py | 9 ++ .../simulation/countbased.py | 5 +- .../simulation/loadtest.py | 15 ++- .../process_simulation_object_centric.py | 50 +++++-- .../simulator_objects/workforce_storage.py | 125 ++++++++++++++++-- .../simulator_objects/workprocessstep.py | 8 +- .../simulator_objects/workstation.py | 51 +++++-- .../simulator_objects/workstation_service.py | 45 +++++-- .../simulation/stream.py | 6 +- 29 files changed, 452 insertions(+), 69 deletions(-) create mode 100644 config/datasource/smart-factory-parallel/workforces.yaml create mode 100644 distributed_event_factory/parser/workforce/workforce_parser.py create mode 100644 distributed_event_factory/parser/workforce/workforce_start_positions.py create mode 100644 distributed_event_factory/provider/workforce/InputWorkforceProvider.py diff --git a/config/datasource/smart-factory-parallel/bar.yaml b/config/datasource/smart-factory-parallel/bar.yaml index 75a3cd9..184679e 100644 --- a/config/datasource/smart-factory-parallel/bar.yaml +++ b/config/datasource/smart-factory-parallel/bar.yaml @@ -7,5 +7,5 @@ spec: - object: "barResource" number: 1 lastState: "" - length: "" + length: "2" width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e0-order.yaml b/config/datasource/smart-factory-parallel/e0-order.yaml index 2fe3db3..820934a 100644 --- a/config/datasource/smart-factory-parallel/e0-order.yaml +++ b/config/datasource/smart-factory-parallel/e0-order.yaml @@ -4,6 +4,9 @@ spec: name: "OrderPlacement" group: "factory" type: objectCentric + workforce: hasWorkforce + start: "O" + end: "O" workstation: "O" selection: genericProbability distribution: [1.0] @@ -11,6 +14,9 @@ spec: - object: "order" number: 1 lastState: "" + workforces: + - workforce: "manager" + number: 1 eventData: - activity: name: "order for resources" diff --git a/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml b/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml index d3a73de..3fc4181 100644 --- a/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml +++ b/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml @@ -4,6 +4,9 @@ spec: name: "OutgoingStock" group: "factory" type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" workstation: "ST" selection: parallel input: diff --git a/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml b/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml index 1842cab..c5ad1e1 100644 --- a/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml +++ b/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml @@ -4,6 +4,9 @@ spec: name: "SawingBar" group: "factory" type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" workstation: "M" selection: genericProbability distribution: [1.0] diff --git a/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml b/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml index c3b7c71..4f1c6fb 100644 --- a/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml +++ b/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml @@ -4,6 +4,9 @@ spec: name: "DrillingBar" group: "factory" type: objectCentric + workforce: noWorkforce + start: "D" + end: "D" workstation: "D" selection: genericProbability distribution: [1.0] diff --git a/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml b/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml index 3c3908f..7c243be 100644 --- a/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml +++ b/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml @@ -4,6 +4,9 @@ spec: name: "SandingBar" group: "factory" type: objectCentric + workforce: noWorkforce + start: "SA" + end: "SA" workstation: "SA" selection: genericProbability distribution: [1.0] diff --git a/config/datasource/smart-factory-parallel/e5-assembly.yaml b/config/datasource/smart-factory-parallel/e5-assembly.yaml index fea9196..00c027e 100644 --- a/config/datasource/smart-factory-parallel/e5-assembly.yaml +++ b/config/datasource/smart-factory-parallel/e5-assembly.yaml @@ -4,6 +4,9 @@ spec: name: "Assembly" group: "factory" type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" workstation: "A" selection: genericProbability distribution: [ 0.8, 0.1, 0.1 ] diff --git a/config/datasource/smart-factory-parallel/e7-shipping.yaml b/config/datasource/smart-factory-parallel/e7-shipping.yaml index 3bb489f..4f6c607 100644 --- a/config/datasource/smart-factory-parallel/e7-shipping.yaml +++ b/config/datasource/smart-factory-parallel/e7-shipping.yaml @@ -4,6 +4,9 @@ spec: name: "Shipping" group: "factory" type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" workstation: "S" selection: genericProbability distribution: [ 0.8, 0.2 ] diff --git a/config/datasource/smart-factory-parallel/routing.yaml b/config/datasource/smart-factory-parallel/routing.yaml index 2457205..1c9507b 100644 --- a/config/datasource/smart-factory-parallel/routing.yaml +++ b/config/datasource/smart-factory-parallel/routing.yaml @@ -3,15 +3,43 @@ name: "default" spec: routes: - routeForActivity: "retrieve resources" - start: "OutgoingStock" - end: "SawingBar" + start: "ST" + end: "M" transferObjects: - name: "barResource" number: 1 duration: 3 - routeForActivity: "Sent to assembly station" - start: "OutgoingStock" - end: "Assembly" + start: "ST" + end: "A" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "ST" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "A" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Back to machine" + start: "A" + end: "M" transferObjects: - name: "screw" number: 13 diff --git a/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml b/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml index f5e813e..038ca3f 100644 --- a/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml +++ b/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml @@ -4,13 +4,19 @@ spec: name: "TransportM1" group: "transport" type: objectCentric + workforce: hasWorkforce workstation: "R" + start: "ST" + end: "M" selection: genericProbability distribution: [1.0] input: - object: "barResource" number: 1 lastState: "" + workforces: + - workforce: "transportRobot" + number: 1 eventData: - activity: name: "transport from stock to M1" diff --git a/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml b/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml index 31ecd9f..e594ea8 100644 --- a/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml +++ b/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml @@ -4,13 +4,19 @@ spec: name: "TransportM1A" group: "transport" type: objectCentric + workforce: hasWorkforce workstation: "R" + start: "M" + end: "A" selection: genericProbability distribution: [1.0] input: - object: "bar" number: 4 lastState: "sanded" + workforces: + - workforce: "transportRobot" + number: 1 eventData: - activity: name: "transport from M1 to assembly" diff --git a/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml index 689feea..d09dbe9 100644 --- a/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml +++ b/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml @@ -4,13 +4,19 @@ spec: name: "TransportSA" group: "transport" type: objectCentric + workforce: hasWorkforce workstation: "R" + start: "ST" + end: "A" selection: genericProbability distribution: [1.0] input: - object: "screw" number: 13 lastState: "" + workforces: + - workforce: "transportRobot" + number: 1 eventData: - activity: name: "transport from stock to assembly" diff --git a/config/datasource/smart-factory-parallel/workforces.yaml b/config/datasource/smart-factory-parallel/workforces.yaml new file mode 100644 index 0000000..5a80ccd --- /dev/null +++ b/config/datasource/smart-factory-parallel/workforces.yaml @@ -0,0 +1,10 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "transportRobot" + startLocation: "ST" + number: 10 + - name: "manager" + startLocation: "O" + number: 1 \ No newline at end of file diff --git a/distributed_event_factory/core/core_decisions_datasource.py b/distributed_event_factory/core/core_decisions_datasource.py index 761e379..f44879b 100644 --- a/distributed_event_factory/core/core_decisions_datasource.py +++ b/distributed_event_factory/core/core_decisions_datasource.py @@ -3,11 +3,17 @@ def __init__( self, simulation_provider, input_objects, - workstation + workstation, + workforce, + start, + end ): self.simulation_provider = simulation_provider self.input_objects= input_objects self.workstation = workstation + self.workforce = workforce + self.start = start + self.end = end def get_event_data(self): return self.simulation_provider.get_event_data() @@ -16,4 +22,13 @@ def get_input_data(self): return self.input_objects def get_workstation(self): - return self.workstation \ No newline at end of file + return self.workstation + + def get_workforce(self): + return self.workforce + + def get_start(self): + return self.start + + def get_end(self): + return self.end \ No newline at end of file diff --git a/distributed_event_factory/core/workforce.py b/distributed_event_factory/core/workforce.py index 8cb2b2c..46b16d5 100644 --- a/distributed_event_factory/core/workforce.py +++ b/distributed_event_factory/core/workforce.py @@ -1,3 +1,4 @@ +from core.object_id import ObjectId from core.route import Route from simulation.simulator_objects.route_management import RouteManagement @@ -7,6 +8,7 @@ def __init__(self, name:str, location:str): self.name = name self.location = location self.available = True + self.object_id = ObjectId(name) def get_duration_to_get_to_location(self, location:str, routeManagement:RouteManagement): route: Route = routeManagement.get_route_for_start_end(self.location, location) diff --git a/distributed_event_factory/event_factory.py b/distributed_event_factory/event_factory.py index 8e703c5..79514d3 100644 --- a/distributed_event_factory/event_factory.py +++ b/distributed_event_factory/event_factory.py @@ -13,6 +13,8 @@ from parser.datasource.event.output.output_parser import OutputParser from parser.route.route_parser import RouteParser from parser.stock.stock_parser import StockParser +from parser.workforce.workforce_start_positions import WorkforceStartPositionParser + class EventFactory: def __init__(self): @@ -22,6 +24,7 @@ def __init__(self): self.simulations = dict() self.datasources = dict() self.objects = dict() + self.workforce_start_positions = dict() self.datasources[""] = EndDataSource() self.parser = ParserRegistry() @@ -59,6 +62,9 @@ def add_object_source_parser(self, key: str, parser: ObjectSourceParser): def add_route_parser(self, key: str, parser: RouteParser): self.parser.route_parser.add_dependency(key, parser) + def add_workforce_start_position_parser(self, key: str, parser: WorkforceStartPositionParser): + self.parser.workforce_start_position_parser.add_dependency(key, parser) + def add_stock_parser(self, key: str, parser: StockParser): self.parser.warehouse_stock_parser.add_dependency(key, parser) @@ -93,12 +99,16 @@ def add_object(self, name, object_source): self.objects[name] = object_source return self - def add_route(self,name, routes): + def add_route(self, name, routes): self.routes[name] = routes return self - def add_stock(self,name, routes): - self.stocks[name] = routes + def add_stock(self, name, stock): + self.stocks[name] = stock + return self + + def add_workforce_start_positions(self, name, workforce_start_positions): + self.workforce_start_positions[name] = workforce_start_positions return self def add_file(self, filename): @@ -119,8 +129,11 @@ def add_file(self, filename): self.add_route(name, parsed_object) elif kind == "stock": self.add_stock(name, parsed_object) + elif kind == "workforces": + self.add_workforce_start_positions(name, parsed_object) return self def run(self, hook=lambda: None): for simulation in self.simulations: - self.simulations[simulation].run_simulation(self.datasources, self.sinks, self.objects, self.routes, self.stocks, hook) \ No newline at end of file + self.simulations[simulation].run_simulation(self.datasources, self.sinks, self.objects, self.routes, + self.stocks, self.workforce_start_positions, hook) diff --git a/distributed_event_factory/parser/datasource/event/event_selection_parser.py b/distributed_event_factory/parser/datasource/event/event_selection_parser.py index af54733..dfeed88 100644 --- a/distributed_event_factory/parser/datasource/event/event_selection_parser.py +++ b/distributed_event_factory/parser/datasource/event/event_selection_parser.py @@ -14,4 +14,7 @@ def add_dependency(self, key: str, dependency): def parse(self, config): return GenericDecisions(self.dependencies[config['selection']].parse(config), self.dependencies[config['type']].parse(config), - config['workstation']) + config['workstation'], + self.dependencies[config['workforce']].parse(config), + config['start'], + config['end']) diff --git a/distributed_event_factory/parser/parser_registry.py b/distributed_event_factory/parser/parser_registry.py index 1eb62aa..2a097d4 100644 --- a/distributed_event_factory/parser/parser_registry.py +++ b/distributed_event_factory/parser/parser_registry.py @@ -13,7 +13,8 @@ GenericProbabilityEventSelectionParser from distributed_event_factory.parser.datasource.event.selection.ordered_event_selection_parser import \ OrderedEventSelectionParser -from distributed_event_factory.parser.datasource.event.selection.parallel_event_selection_parser import ParallelEventSelectionParser +from distributed_event_factory.parser.datasource.event.selection.parallel_event_selection_parser import \ + ParallelEventSelectionParser from distributed_event_factory.parser.datasource.event.selection.uniform_event_selection import \ UniformEventSelectionParser from distributed_event_factory.parser.datasource.event.transition.transition_parser import TransitionParser @@ -45,16 +46,19 @@ from parser.datasource.event.output.output_parser import OutputParser, DummyObjectParser from parser.route.route_parser import RouteParser from parser.stock.stock_parser import StockParser +from parser.workforce.workforce_parser import WorkforceParser, DummyWorkforceParser +from parser.workforce.workforce_start_positions import WorkforceStartPositionParser class ParserRegistry: def __init__(self): - # Objects self.output_parser = OutputParser() self.dummy_object_parser = DummyObjectParser() self.input_parser = InputParser() + self.workforce_parser = WorkforceParser() + self.dummy_workforce_parser = DummyWorkforceParser() # Count self.constant_count_parser = ConstantCountParser() @@ -122,6 +126,8 @@ def __init__(self): .add_dependency("driftingProbability", self.drifting_selection_parser) .add_dependency("parallel", self.parallel_event_selection_parser) .add_dependency("objectCentric", self.input_parser) + .add_dependency("hasWorkforce", self.workforce_parser) + .add_dependency("noWorkforce", self.dummy_workforce_parser) .add_dependency("default", self.dummy_object_parser)) # DataSource @@ -130,6 +136,7 @@ def __init__(self): # Input self.object_source_parser = ObjectSourceParser() + self.workforce_start_position_parser = WorkforceStartPositionParser() # Route self.route_parser = RouteParser() @@ -183,4 +190,5 @@ def __init__(self): .add_dependency("simulation", self.simulation_parser) .add_dependency("object", self.object_source_parser) .add_dependency("route", self.route_parser) - .add_dependency("stock", self.warehouse_stock_parser)) + .add_dependency("stock", self.warehouse_stock_parser) + .add_dependency("workforces", self.workforce_start_position_parser)) diff --git a/distributed_event_factory/parser/workforce/workforce_parser.py b/distributed_event_factory/parser/workforce/workforce_parser.py new file mode 100644 index 0000000..d137634 --- /dev/null +++ b/distributed_event_factory/parser/workforce/workforce_parser.py @@ -0,0 +1,34 @@ +from distributed_event_factory.parser.parser import Parser +from provider.workforce.InputWorkforceProvider import InputWorkforceProvider + + +class WorkforceParser(Parser): + + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + workforce_for_step_list = [] + if config["workforces"]: + for input in config["workforces"]: + workforce_for_step_list.append(InputWorkforceProvider( + name=input["workforce"], + numberOfWorkforce=input["number"] + )) + return workforce_for_step_list + +class DummyWorkforceParser(Parser): + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + self.dependencies[key] = dependency + return self + + def parse(self, config): + workforce_for_step_list = [] + return workforce_for_step_list \ No newline at end of file diff --git a/distributed_event_factory/parser/workforce/workforce_start_positions.py b/distributed_event_factory/parser/workforce/workforce_start_positions.py new file mode 100644 index 0000000..8a37932 --- /dev/null +++ b/distributed_event_factory/parser/workforce/workforce_start_positions.py @@ -0,0 +1,22 @@ +from distributed_event_factory.parser.parser import Parser +from provider.workforce.InputWorkforceProvider import InputWorkforceProvider, WorkforceStartPositionProvider + + +class WorkforceStartPositionParser(Parser): + + def __init__(self): + self.dependencies = dict() + + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + workforce_with_start_position = [] + if config["workforces"]: + for workforce in config["workforces"]: + workforce_with_start_position.append(WorkforceStartPositionProvider( + name=workforce["name"], + numberOfWorkforce=workforce["number"], + location=workforce["startLocation"], + )) + return workforce_with_start_position \ No newline at end of file diff --git a/distributed_event_factory/provider/workforce/InputWorkforceProvider.py b/distributed_event_factory/provider/workforce/InputWorkforceProvider.py new file mode 100644 index 0000000..71e8715 --- /dev/null +++ b/distributed_event_factory/provider/workforce/InputWorkforceProvider.py @@ -0,0 +1,9 @@ +class InputWorkforceProvider: + def __init__(self, name, numberOfWorkforce): + self.name = name + self.numberOfWorkforce = numberOfWorkforce + +class WorkforceStartPositionProvider(InputWorkforceProvider): + def __init__(self, name, location, numberOfWorkforce): + InputWorkforceProvider.__init__(self, name, numberOfWorkforce) + self.location = location diff --git a/distributed_event_factory/simulation/countbased.py b/distributed_event_factory/simulation/countbased.py index 91ace72..dd5899b 100644 --- a/distributed_event_factory/simulation/countbased.py +++ b/distributed_event_factory/simulation/countbased.py @@ -16,7 +16,7 @@ def __init__(self, simulation_steps: int, case_id_provider: CaseIdProvider, max_ self.sinks = dict() self.max_concurrent_cases = max_concurrent_cases - def run_simulation(self, datasources, sinks, objects, routes, stocks, hook=lambda: None): + def run_simulation(self, datasources, sinks, objects, routes, stocks, workforce_start_positions, hook=lambda: None): self.setup_datasource_sink_mapping(sinks) # process_simulator = ProcessSimulator( # case_id_provider=self.case_id_provider, @@ -30,7 +30,8 @@ def run_simulation(self, datasources, sinks, objects, routes, stocks, hook=lambd data_sources=datasources, objects=objects, routes=routes, - stocks=stocks + stocks=stocks, + workforce_start_positions=workforce_start_positions ) for i in range(10): diff --git a/distributed_event_factory/simulation/loadtest.py b/distributed_event_factory/simulation/loadtest.py index 016d45b..7bd8414 100644 --- a/distributed_event_factory/simulation/loadtest.py +++ b/distributed_event_factory/simulation/loadtest.py @@ -10,6 +10,7 @@ from distributed_event_factory.simulation.abstract_simulation import Simulation from distributed_event_factory.simulation.process_simulation import ProcessSimulator from provider.object.input.input_provider import InputObjectProvider +from provider.workforce.InputWorkforceProvider import WorkforceStartPositionProvider class LoadTestSimulation(Simulation): @@ -29,17 +30,19 @@ def __init__( def start_timeframe(self, sinks): for sink in self.sink: - sink.start_timeframe() + sink.start_timeframe() def end_timeframe(self, sinks): for sink in self.sink: - sink.end_timeframe() + sink.end_timeframe() def start_simulation(self, sinks): for sink in self.sink: - sink.start() + sink.start() - def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_mapping: Dict[str, LoadTestHttpSink], objects: Dict[str, ObjectData], routes: Dict[str, Route], stocks: Dict[str, InputObjectProvider], + def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_mapping: Dict[str, LoadTestHttpSink], + objects: Dict[str, ObjectData], routes: Dict[str, Route], stocks: Dict[str, InputObjectProvider], + workforce: Dict[str, WorkforceStartPositionProvider], hook=lambda: None): self.setup_datasource_sink_mapping(datasource_sink_mapping) for sink in datasource_sink_mapping: @@ -50,8 +53,8 @@ def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_ma data_sources=data_sources, max_concurrent_cases=self.max_concurrent_cases, objects=objects, - routes = routes, - stocks = stocks + routes=routes, + stocks=stocks ) iteration = 0 while True: diff --git a/distributed_event_factory/simulation/process_simulation_object_centric.py b/distributed_event_factory/simulation/process_simulation_object_centric.py index dc8bd89..5a392ed 100644 --- a/distributed_event_factory/simulation/process_simulation_object_centric.py +++ b/distributed_event_factory/simulation/process_simulation_object_centric.py @@ -7,10 +7,13 @@ from core.datasource_id import DataSourceId from core.object import ObjectData from core.route import Route +from core.workforce import Workforce from provider.object.input.input_provider import InputObjectProvider +from provider.workforce.InputWorkforceProvider import WorkforceStartPositionProvider from simulation.simulator_objects.object_storage import ObjectStorage from simulation.simulator_objects.object_utility import ObjectUtility from simulation.simulator_objects.route_management import RouteManagement +from simulation.simulator_objects.workforce_storage import WorkforceStorage from simulation.simulator_objects.workprocessstep import WorkProcessStep from simulation.simulator_objects.workstation import WorkStation from simulation.simulator_objects.workstation_service import WorkstationService @@ -23,10 +26,12 @@ def __init__( data_sources: Dict[str, DataSource], objects: Dict[str, ObjectData], routes: Dict[str, Route], - stocks: Dict[str, InputObjectProvider] + stocks: Dict[str, InputObjectProvider], + workforce_start_positions: Dict[str, WorkforceStartPositionProvider] ): self.workstations = [] self.workstation_service = WorkstationService() + self.workforce_storage = None self.last_timestamp = datetime.now() self.object_storage = object_storage self.objects = objects @@ -35,6 +40,7 @@ def __init__( self.stocks: Dict[str, InputObjectProvider] = stocks self.configureWorkStationsAndSteps() self.add_configured_stocks_in_warehouse() + self.configureWorkforceStartPositions(workforce_start_positions) self.prior_step: str = "" self.parallel_workstation_step_start_time = [] @@ -44,13 +50,16 @@ def simulate(self) -> Event: self.parallel_workstation_step_start_time = self.parallel_workstation_step_start_time[1:] else: available_workstations: List[WorkStation] = ( - self.workstation_service.get_activatable_workstations(self.workstations, self.object_storage)) + self.workstation_service.get_activatable_workstations(self.workstations, self.object_storage, + self.workforce_storage)) next_step, next_workstation = self.get_next_workstation_and_step(available_workstations) self.prior_step = next_step.node self.last_timestamp = next_workstation.add_to_last_timestamp(self.last_timestamp, next_step.duration) ingoing_objects, outgoing_objects = self.object_storage.manage_input_and_output_of_steps( next_step.input_objects, next_step.output_objects, self.objects, self.last_timestamp) + if self.workforce_storage: + self.workforce_storage.manage_workforce_changes(next_step, self.routeManagement) event = next_step.produce_event(self.last_timestamp, next_workstation.work_station_name, ingoing_objects, outgoing_objects) return event @@ -68,13 +77,14 @@ def _get_next_step_by_event_provider(self, data_source) -> List[str]: def get_next_workstation_and_step(self, available_workstations): workstation_step_pairs_ascending = self.workstation_service.get_next_workstations_and_step_sorted_duration_ascending( - object_storage=self.object_storage, workstations=available_workstations) + object_storage=self.object_storage, workstations=available_workstations, workforce_storage= self.workforce_storage) if self.prior_step: next_available_steps = self._get_next_step_by_event_provider(self.prior_step) if next_available_steps[0]: next_workstation_step_pairs = self.workstation_service.get_next_workstation_step_pair_parallel( - next_available_steps, workstation_step_pairs_ascending, self.object_storage) + next_available_steps, workstation_step_pairs_ascending, self.object_storage, self.workforce_storage, + self.routeManagement) if not next_workstation_step_pairs: return ValueError("No available workstations") @@ -88,7 +98,8 @@ def get_next_workstation_and_step(self, available_workstations): self.parallel_workstation_step_start_time.append((workstation, step, self.last_timestamp)) return next_step, next_workstation - next_step, next_workstation = self.get_random_workstation_step_or_parallel_start(workstation_step_pairs_ascending) + next_step, next_workstation = self.get_random_workstation_step_or_parallel_start( + workstation_step_pairs_ascending) return next_step, next_workstation def get_random_workstation_step_or_parallel_start(self, workstation_steps_ascending): @@ -96,12 +107,15 @@ def get_random_workstation_step_or_parallel_start(self, workstation_steps_ascend parallel_workstation_step_time = [] possible_step = self.object_storage.contains_all_object_of_data_for_steps(workstation_steps_ascending) + if self.workforce_storage: + possible_step = self.workforce_storage.contains_all_workforces_for_steps( + steps=workstation_steps_ascending, routeManagement=self.routeManagement) if possible_step: for workstation, step in possible_step: parallel_workstation_step_time.append( (workstation, step, self.last_timestamp)) self.parallel_workstation_step_start_time.extend(parallel_workstation_step_time[1:]) - next_workstation, next_step ,_ = parallel_workstation_step_time[0] + next_workstation, next_step, _ = parallel_workstation_step_time[0] else: next_workstation, next_step = workstation_steps_ascending[0] return next_step, next_workstation @@ -125,8 +139,12 @@ def configureWorkStationsAndSteps(self): if data_source != "" and data_source != "": data_source_id = DataSourceId(data_source) events = self._get_sensor_with_id(DataSourceId(data_source)).get_event_data() - input_objects = self._get_sensor_with_id(DataSourceId(data_source)).event_provider.input_objects - workstation = self._get_sensor_with_id(DataSourceId(data_source)).event_provider.workstation + event_provider = self._get_sensor_with_id(DataSourceId(data_source)).event_provider + input_objects = event_provider.input_objects + workstation = event_provider.workstation + workforce = event_provider.workforce + start_location = event_provider.start + end_location = event_provider.end workstation_steps = [] for e in events: workstation_steps.append(WorkProcessStep(activity=e.get_activity_provider().get_activity(), @@ -135,10 +153,22 @@ def configureWorkStationsAndSteps(self): data_source_id).group_id, input_objects=input_objects, output_objects=e.get_activity_provider().get_output(), - duration=e.get_duration())) + duration=e.get_duration(), + workforces_needed=workforce, + start_location=start_location, + end_location=end_location)) matching_workstation = self.workstation_service.get_workstation_by_name(workstation, self.workstations) if matching_workstation: matching_workstation.add_steps_to_workstation(workstation_steps) else: self.workstations.append( - WorkStation(work_station_name=workstation, work_process_steps=workstation_steps)) + WorkStation(work_station_name=workstation, work_process_steps=workstation_steps)) + + def configureWorkforceStartPositions(self, workforce_start_positions): + if not workforce_start_positions: + return + self.workforce_storage = WorkforceStorage() + for workforce_start_position in workforce_start_positions.get("default"): + for i in range(workforce_start_position.numberOfWorkforce): + self.workforce_storage.add_workforce( + Workforce(name=workforce_start_position.name, location=workforce_start_position.location)) diff --git a/distributed_event_factory/simulation/simulator_objects/workforce_storage.py b/distributed_event_factory/simulation/simulator_objects/workforce_storage.py index fb42034..e951e40 100644 --- a/distributed_event_factory/simulation/simulator_objects/workforce_storage.py +++ b/distributed_event_factory/simulation/simulator_objects/workforce_storage.py @@ -1,6 +1,7 @@ from typing import List from core.workforce import Workforce +from provider.workforce.InputWorkforceProvider import InputWorkforceProvider from simulation.simulator_objects.route_management import RouteManagement @@ -8,16 +9,120 @@ class WorkforceStorage: def __init__(self): self.workforces: List[Workforce] = [] - def get_available_workforce_at_location(self, location:str): + def get_workforce_at_location_available(self, workforce_input: InputWorkforceProvider, location: str, + workforce_storage): + number_of_matching_workforces = 0 + workforce_set = [] + for workforce in workforce_storage: + if workforce.location == location and workforce.name == workforce_input.name: + number_of_matching_workforces += 1 + workforce_set.append(workforce) + if number_of_matching_workforces == workforce_input.numberOfWorkforce: + return workforce_set + return workforce_set + + def get_all_workforces_at_location_available(self, workforces_input: List[InputWorkforceProvider], location: str, + workforce_storage): + workforce_set = [] + is_complete = True + for workforce in workforces_input: + preserved_workforces = self.get_workforce_at_location_available(workforce, location, workforce_storage) + if not preserved_workforces or len(preserved_workforces) != workforce.numberOfWorkforce: + is_complete = False + for preserved_workforce in preserved_workforces: + workforce_set.append(preserved_workforce) + return workforce_set, is_complete + + def is_workforce_type_available(self, workforce_input: InputWorkforceProvider): + number_of_matching_workforces = 0 for workforce in self.workforces: - if workforce.location == location: - return workforce - return None + if workforce.name == workforce_input.name: + number_of_matching_workforces += 1 + return number_of_matching_workforces >= workforce_input.numberOfWorkforce - def get_available_workforce_closest_to_location(self, location:str, routeManagement:RouteManagement): + def are_all_workforces_types_available(self, workforces_input: List[InputWorkforceProvider]): + for workforce in workforces_input: + if not self.is_workforce_type_available(workforce): + return False + return True + + def get_available_workforce_closest_to_location(self, location: str, type: str, workforce_storage, + routeManagement: RouteManagement): locations = routeManagement.closest_to_location_order(location) - for location in locations: - for workforce in self.workforces: - if workforce.location == location: - return workforce - return None \ No newline at end of file + for closest_location in locations: + for workforce in workforce_storage: + if workforce.name == type and workforce.location == closest_location: + route = routeManagement.get_route_for_start_end(closest_location, location) + return workforce, route + return None, None + + def contains_all_workforces_for_steps(self, steps, routeManagement: RouteManagement, preselected=None): + workforce_forecast = self.workforces.copy() + possible_workstation_step_pairs = [] + currently_not_at_location = [] + for workstation, step in steps: + if step.workforces_needed: + reserved_workforces, is_complete = self.get_all_workforces_at_location_available(step.workforces_needed, + step.start_location, + workforce_forecast) + if reserved_workforces and is_complete: + for reserved_workforce in reserved_workforces: + workforce_forecast.remove(reserved_workforce) + possible_workstation_step_pairs.append((workstation, step)) + elif not is_complete and reserved_workforces: + return ValueError(len(reserved_workforces), step) + else: + if preselected and step.node in preselected: + prefered_currently_not_at_location = [(workstation, step)] + possible_workstation_step_pairs = self.contains_workforces_near_by( + prefered_currently_not_at_location, possible_workstation_step_pairs, routeManagement, + workforce_forecast) + else: + currently_not_at_location.append((workstation, step)) + else: + possible_workstation_step_pairs.append((workstation, step)) + + return self.contains_workforces_near_by(currently_not_at_location, possible_workstation_step_pairs, + routeManagement, workforce_forecast) + + def contains_workforces_near_by(self, currently_not_at_location, possible_workstation_step_pairs, routeManagement, + workforce_forecast): + for workstation, step in currently_not_at_location: + all_workforces_at_location = True + steps_with_duration = [] + for workforce in step.workforces_needed: + workforce, route = self.get_available_workforce_closest_to_location(step.start_location, + workforce.name, + workforce_forecast, routeManagement) + if workforce: + steps_with_duration.append((step, step.duration + route.duration)) + self.workforces.remove(workforce) + workforce.location = workstation.work_station_name + self.workforces.append(workforce) + else: + all_workforces_at_location = False + if all_workforces_at_location and steps_with_duration: + possible_workstation_step_pairs.append((workstation, step)) + return possible_workstation_step_pairs + + def manage_workforce_changes(self, step, routeManagement: RouteManagement): + if step.start_location != step.end_location and step.workforces_needed: + workforces, is_complete = self.get_all_workforces_at_location_available(step.workforces_needed, step.start_location, + self.workforces) + if workforces: + for workforce in workforces: + self.workforces.remove(workforce) + workforce.location = step.end_location + self.workforces.append(workforce) + else: + for workforce in step.workforces_needed: + workforce, _ = self.get_available_workforce_closest_to_location(step.start_location, + workforce.name, + self.workforces, + routeManagement) + self.workforces.remove(workforce) + workforce.location = step.end_location + self.workforces.append(workforce) + + def add_workforce(self, workforce: Workforce): + self.workforces.append(workforce) diff --git a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py index 6142048..2150385 100644 --- a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py +++ b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py @@ -11,14 +11,20 @@ def __init__( output_objects, duration, node, - group_id + group_id, + workforces_needed, + start_location, + end_location ): self.input_objects = input_objects + self.workforces_needed = workforces_needed self.output_objects = output_objects self.duration = duration self.activity = activity self.node = node self.group_id = group_id + self.start_location = start_location + self.end_location = end_location def produce_event(self, current_timestamp, workstation, ingoing_objects, outgoing_objects) -> ObjectEvent: return ObjectEvent( diff --git a/distributed_event_factory/simulation/simulator_objects/workstation.py b/distributed_event_factory/simulation/simulator_objects/workstation.py index 4bb28a3..e1d2e2f 100644 --- a/distributed_event_factory/simulation/simulator_objects/workstation.py +++ b/distributed_event_factory/simulation/simulator_objects/workstation.py @@ -2,10 +2,11 @@ from typing import List from datetime import timedelta from simulation.simulator_objects.object_storage import ObjectStorage +from simulation.simulator_objects.workforce_storage import WorkforceStorage from simulation.simulator_objects.workprocessstep import WorkProcessStep class WorkStation: - def __init__(self, work_station_name:str, work_process_steps: List[WorkProcessStep]): + def __init__(self, work_station_name: str, work_process_steps: List[WorkProcessStep]): self.work_station_name = work_station_name self.work_process_steps = work_process_steps self.last_event_end_timestamp = None @@ -17,6 +18,15 @@ def _is_activatable(self, object_storage: ObjectStorage): return False + def _is_activatable_including_workforce(self, object_storage: ObjectStorage, workforce_storage: WorkforceStorage): + for workstation_step in self.work_process_steps: + if object_storage.contains_all_object_of_data( + workstation_step.input_objects) and workforce_storage.are_all_workforces_types_available( + workstation_step.workforces_needed): + return True + + return False + def get_activatable_work_steps(self, object_storage: ObjectStorage): activatable_workstations = [] @@ -26,8 +36,24 @@ def get_activatable_work_steps(self, object_storage: ObjectStorage): return activatable_workstations - def get_prefered_activatable_work_steps(self, object_storage: ObjectStorage, prefered_workstation_steps: List[str]): - activatable_steps = self.get_activatable_work_steps(object_storage) + def get_activatable_work_steps_including_workforce(self, object_storage: ObjectStorage, + workforce_storage: WorkforceStorage): + activatable_workstations = [] + + for workstation_step in self.work_process_steps: + if object_storage.contains_all_object_of_data( + workstation_step.input_objects) and workforce_storage.are_all_workforces_types_available( + workstation_step.workforces_needed): + activatable_workstations.append(workstation_step) + + return activatable_workstations + + def get_prefered_activatable_work_steps(self, object_storage: ObjectStorage, prefered_workstation_steps: List[str], + workforce_storage: WorkforceStorage = None): + if workforce_storage: + activatable_steps = self.get_activatable_work_steps_including_workforce(object_storage, workforce_storage) + else: + activatable_steps = self.get_activatable_work_steps(object_storage) work_step_selected = [] for workstation_step in activatable_steps: @@ -36,8 +62,13 @@ def get_prefered_activatable_work_steps(self, object_storage: ObjectStorage, pre return work_step_selected[random.randint(0, len(work_step_selected) - 1)] - def workstation_has_preselected_activatable_steps(self, object_storage: ObjectStorage, prefered_workstation_steps: List[str]) -> bool: - activatable_steps = self.get_activatable_work_steps(object_storage) + def workstation_has_preselected_activatable_steps(self, object_storage: ObjectStorage, + prefered_workstation_steps: List[str], + workforce_storage: WorkforceStorage = None) -> bool: + if workforce_storage: + activatable_steps = self.get_activatable_work_steps_including_workforce(object_storage, workforce_storage) + else: + activatable_steps = self.get_activatable_work_steps(object_storage) for workstation_step in activatable_steps: if workstation_step.node in prefered_workstation_steps: @@ -45,9 +76,13 @@ def workstation_has_preselected_activatable_steps(self, object_storage: ObjectSt return False - def get_random_activatable_workstation_step(self, object_storage: ObjectStorage) -> WorkProcessStep: - work_process_steps_possible = self.get_activatable_work_steps(object_storage) - return work_process_steps_possible[random.randint(0, len(work_process_steps_possible) - 1)] + def get_random_activatable_workstation_step(self, object_storage: ObjectStorage, + workforce_storage: WorkforceStorage = None) -> WorkProcessStep: + if workforce_storage: + activatable_steps = self.get_activatable_work_steps_including_workforce(object_storage, workforce_storage) + else: + activatable_steps = self.get_activatable_work_steps(object_storage) + return activatable_steps[random.randint(0, len(activatable_steps) - 1)] def add_to_last_timestamp(self, current_timestamp, duration): self.last_event_end_timestamp = current_timestamp + timedelta(seconds=duration) diff --git a/distributed_event_factory/simulation/simulator_objects/workstation_service.py b/distributed_event_factory/simulation/simulator_objects/workstation_service.py index 71a4ef7..a33dd02 100644 --- a/distributed_event_factory/simulation/simulator_objects/workstation_service.py +++ b/distributed_event_factory/simulation/simulator_objects/workstation_service.py @@ -1,18 +1,24 @@ -import random from typing import List from simulation.simulator_objects.object_storage import ObjectStorage +from simulation.simulator_objects.route_management import RouteManagement +from simulation.simulator_objects.workforce_storage import WorkforceStorage from simulation.simulator_objects.workstation import WorkStation class WorkstationService: - def get_activatable_workstations(self, workstations: List[WorkStation], object_storage: ObjectStorage): + def get_activatable_workstations(self, workstations: List[WorkStation], object_storage: ObjectStorage, + workforce_storage: WorkforceStorage = None) -> List[WorkStation]: activatable_workstations = [] for workstation in workstations: - if workstation._is_activatable(object_storage): - activatable_workstations.append(workstation) + if workforce_storage: + if workstation._is_activatable_including_workforce(object_storage, workforce_storage): + activatable_workstations.append(workstation) + else: + if workstation._is_activatable(object_storage): + activatable_workstations.append(workstation) return activatable_workstations @@ -23,49 +29,60 @@ def get_workstation_by_name(self, workstation_name, workstations: List[WorkStati return None def get_next_workstation_step_pair_parallel(self, next_available_steps, workstation_steps_ascending, - object_storage: ObjectStorage): + object_storage: ObjectStorage, + workforce_storage: WorkforceStorage = None, route_management: RouteManagement = None): steps_in_priority = [] workstations_preselected = self.get_workstations_preselected([item[0] for item in workstation_steps_ascending], - next_available_steps, object_storage) + next_available_steps, object_storage, + workforce_storage) self.append_possible_preselected_workstation_step_pairs(next_available_steps, object_storage, steps_in_priority, - workstations_preselected) + workstations_preselected, workforce_storage) for workstation, step in workstation_steps_ascending: if ((type(workstations_preselected) is WorkStation and workstation != workstations_preselected) or (type( workstations_preselected) is list and workstation not in workstations_preselected) or not workstations_preselected): steps_in_priority.append((workstation, step)) possible_steps = object_storage.contains_all_object_of_data_for_steps(steps_in_priority) + if workforce_storage: + possible_steps = workforce_storage.contains_all_workforces_for_steps(possible_steps, route_management, next_available_steps) possible_steps.sort(key=lambda x: x[1].duration) return possible_steps def append_possible_preselected_workstation_step_pairs(self, next_available_steps, object_storage, - steps_in_priority, workstations_preselected): + steps_in_priority, workstations_preselected, + workforce_storage: WorkforceStorage = None): if workstations_preselected: if type(workstations_preselected) is WorkStation: steps_in_priority.append((workstations_preselected, workstations_preselected.get_prefered_activatable_work_steps(object_storage, - next_available_steps))) + next_available_steps, + workforce_storage))) else: for workstation in workstations_preselected: steps_in_priority.append((workstation, workstation.get_prefered_activatable_work_steps(object_storage, - next_available_steps))) + next_available_steps, + workforce_storage))) def get_next_workstations_and_step_sorted_duration_ascending(self, object_storage: ObjectStorage, - workstations: List[WorkStation]): + workstations: List[WorkStation], + workforce_storage: WorkforceStorage = None): workstations_step_pair = [] for workstation in workstations: - step = workstation.get_random_activatable_workstation_step(object_storage=object_storage) + step = workstation.get_random_activatable_workstation_step(object_storage=object_storage, + workforce_storage=workforce_storage) workstations_step_pair.append((workstation, step)) workstations_step_pair.sort(key=lambda x: x[1].duration) return workstations_step_pair def get_workstations_preselected(self, workstations: List[WorkStation], prefered_workstation_steps: List[str], - object_storage: ObjectStorage): + object_storage: ObjectStorage, + workforce_storage: WorkforceStorage = None): workstation_selected = [] for workstation in workstations: if workstation.workstation_has_preselected_activatable_steps(object_storage=object_storage, - prefered_workstation_steps=prefered_workstation_steps): + prefered_workstation_steps=prefered_workstation_steps, + workforce_storage=workforce_storage): workstation_selected.append(workstation) if len(workstation_selected) == 1: return workstation_selected[0] diff --git a/distributed_event_factory/simulation/stream.py b/distributed_event_factory/simulation/stream.py index 9efabf9..7107d48 100644 --- a/distributed_event_factory/simulation/stream.py +++ b/distributed_event_factory/simulation/stream.py @@ -17,10 +17,10 @@ def __init__( super().__init__() self.case_id_provider = case_id_provider self.load_provider = load_provider - self.max_concurrent_cases=max_concurrent_cases + self.max_concurrent_cases = max_concurrent_cases self.sinks = dict() - def run_simulation(self, datasources, sinks, objects, routes, stocks, hook): + def run_simulation(self, datasources, sinks, objects, routes, stocks, workforce_start_positions, hook): self.setup_datasource_sink_mapping(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, @@ -34,7 +34,7 @@ def run_simulation(self, datasources, sinks, objects, routes, stocks, hook): with ScheduledThreadPoolExecutor() as executor: scheduler = executor.schedule( lambda: self.send_event(process_simulator.simulate()), - period=1/self.load_provider.get_load_value() + period=1 / self.load_provider.get_load_value() ) hook() time.sleep(1) From 2aedf713b11e20cf0b286f8941e8395d31eba415 Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 11 Jul 2025 14:05:39 +0200 Subject: [PATCH 092/124] bugfixes for workforces --- .../simulator_objects/route_management.py | 2 +- .../simulator_objects/workforce_storage.py | 9 +++++---- .../simulator_objects/workprocessstep.py | 17 +++++++++++++++-- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/distributed_event_factory/simulation/simulator_objects/route_management.py b/distributed_event_factory/simulation/simulator_objects/route_management.py index 37cc15a..f9a8e78 100644 --- a/distributed_event_factory/simulation/simulator_objects/route_management.py +++ b/distributed_event_factory/simulation/simulator_objects/route_management.py @@ -40,7 +40,7 @@ def closest_to_location(self, location:str): def closest_to_location_order(self, location:str): possible_routes = [] for route in self.routes: - if route.start == location: + if route.end == location: possible_routes.append(route) possible_routes.sort(key=lambda route: route.duration) return possible_routes \ No newline at end of file diff --git a/distributed_event_factory/simulation/simulator_objects/workforce_storage.py b/distributed_event_factory/simulation/simulator_objects/workforce_storage.py index e951e40..c6504ce 100644 --- a/distributed_event_factory/simulation/simulator_objects/workforce_storage.py +++ b/distributed_event_factory/simulation/simulator_objects/workforce_storage.py @@ -51,8 +51,8 @@ def get_available_workforce_closest_to_location(self, location: str, type: str, locations = routeManagement.closest_to_location_order(location) for closest_location in locations: for workforce in workforce_storage: - if workforce.name == type and workforce.location == closest_location: - route = routeManagement.get_route_for_start_end(closest_location, location) + if workforce.name == type and workforce.location == closest_location.start: + route = routeManagement.get_route_for_start_end(closest_location.start, location) return workforce, route return None, None @@ -95,9 +95,10 @@ def contains_workforces_near_by(self, currently_not_at_location, possible_workst workforce.name, workforce_forecast, routeManagement) if workforce: - steps_with_duration.append((step, step.duration + route.duration)) + step = step.clone() + step.duration = step.duration + route.duration self.workforces.remove(workforce) - workforce.location = workstation.work_station_name + workforce.location = step.start_location self.workforces.append(workforce) else: all_workforces_at_location = False diff --git a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py index 2150385..becbe4b 100644 --- a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py +++ b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py @@ -26,12 +26,25 @@ def __init__( self.start_location = start_location self.end_location = end_location + def clone(self): + return WorkProcessStep(self.activity, + self.input_objects, + self.output_objects, + self.duration, + self.node, + self.group_id, + self.workforces_needed, + self.start_location, + self.end_location) + def produce_event(self, current_timestamp, workstation, ingoing_objects, outgoing_objects) -> ObjectEvent: return ObjectEvent( timestamp=current_timestamp.strftime(Y_M_D_H_M_S), activity=self.activity, node=self.node, group_id=workstation, - input=", ".join([str(obj) for obj in self.input_objects] +["objectIds: " + ", ".join(obj.object_id.unique_id for obj in ingoing_objects)]), - output=", ".join([str(obj) for obj in self.output_objects] +["objectIds: " + ", ".join(obj.object_id.unique_id for obj in outgoing_objects)]) + input=", ".join([str(obj) for obj in self.input_objects] + [ + "objectIds: " + ", ".join(obj.object_id.unique_id for obj in ingoing_objects)]), + output=", ".join([str(obj) for obj in self.output_objects] + [ + "objectIds: " + ", ".join(obj.object_id.unique_id for obj in outgoing_objects)]) ) From 3a02a585163a04dd30e96e1deea5b7bd989b7343 Mon Sep 17 00:00:00 2001 From: ulpi Date: Sun, 13 Jul 2025 18:28:13 +0200 Subject: [PATCH 093/124] use of size parameter --- .../smart-factory-parallel/bar-resource.yaml | 7 +- .../smart-factory-parallel/bar.yaml | 10 +- .../smart-factory-parallel/e0-order.yaml | 2 + .../e1-outgoing-stock.yaml | 8 +- .../smart-factory-parallel/e2-sawing-bar.yaml | 11 +- .../e3-drilling-bar.yaml | 8 + .../e4-sanding-Bar.yaml | 8 + .../smart-factory-parallel/e5-assembly.yaml | 10 ++ .../smart-factory-parallel/e7-shipping.yaml | 3 + .../smart-factory-parallel/handover.yaml | 4 +- .../smart-factory-parallel/handoverStock.yaml | 4 +- .../smart-factory-parallel/order.yaml | 3 +- .../smart-factory-parallel/resourceOrder.yaml | 3 +- .../smart-factory-parallel/screw.yaml | 4 +- .../t0-stock-to-machine.yaml | 13 +- .../t1-machine-to-assembly.yaml | 3 + .../t1-stock-to-assembly.yaml | 3 + .../warehouse_stock.yaml | 3 +- .../smart-factory-parallel/woodShelf.yaml | 5 +- distributed_event_factory/core/object.py | 20 +-- distributed_event_factory/core/object_id.py | 5 +- .../datasource/event/input/input_parser.py | 10 +- .../datasource/event/output/output_parser.py | 11 +- .../parser/object/object_source_parser.py | 17 +- .../parser/stock/stock_parser.py | 9 +- .../provider/object/input/input_provider.py | 10 +- .../provider/object/size_params_provider.py | 8 + .../transition/output/output_provider.py | 10 +- .../simulation/countbased.py | 2 +- .../simulation/object_event.py | 2 +- .../simulator_objects/object_storage.py | 164 +++++++++++++++--- .../simulator_objects/workprocessstep.py | 54 +++++- 32 files changed, 360 insertions(+), 74 deletions(-) create mode 100644 distributed_event_factory/provider/object/size_params_provider.py diff --git a/config/datasource/smart-factory-parallel/bar-resource.yaml b/config/datasource/smart-factory-parallel/bar-resource.yaml index 6b5d4e5..5d1e61e 100644 --- a/config/datasource/smart-factory-parallel/bar-resource.yaml +++ b/config/datasource/smart-factory-parallel/bar-resource.yaml @@ -7,5 +7,8 @@ spec: - object: "order" number: 1 lastState: "" - length: "5" - width: "" \ No newline at end of file + size: + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/bar.yaml b/config/datasource/smart-factory-parallel/bar.yaml index 184679e..0adc313 100644 --- a/config/datasource/smart-factory-parallel/bar.yaml +++ b/config/datasource/smart-factory-parallel/bar.yaml @@ -7,5 +7,11 @@ spec: - object: "barResource" number: 1 lastState: "" - length: "2" - width: "" \ No newline at end of file + size: + length: "5" + width: "" + depth: "" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e0-order.yaml b/config/datasource/smart-factory-parallel/e0-order.yaml index 820934a..ca7b2e5 100644 --- a/config/datasource/smart-factory-parallel/e0-order.yaml +++ b/config/datasource/smart-factory-parallel/e0-order.yaml @@ -14,6 +14,7 @@ spec: - object: "order" number: 1 lastState: "" + size: workforces: - workforce: "manager" number: 1 @@ -24,5 +25,6 @@ spec: - object: "resourceOrder" number: 1 change: "" + size: transition: "OutgoingStock" duration: 0 diff --git a/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml b/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml index 3fc4181..a88a2f0 100644 --- a/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml +++ b/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml @@ -13,15 +13,21 @@ spec: - object: "resourceOrder" number: 1 lastState: "" + size: eventData: - activity: name: "retrieve resources" output: - object: "barResource" - number: 1 + number: 2 change: "" + size: + length: "4" + width: "" + depth: "" - object: "screw" number: 13 change: "" + size: duration: 3 transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml b/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml index c5ad1e1..2af6491 100644 --- a/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml +++ b/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml @@ -12,11 +12,16 @@ spec: distribution: [1.0] input: - object: "barResource" - number: 1 + number: 2 lastState: "" + size: + length: "4" + width: "" + depth: "" - object: "handover" number: 1 lastState: "" + size: eventData: - activity: name: "Sawed" @@ -24,5 +29,9 @@ spec: - object: "bar" number: 4 change: "divided Resource" + size: + length: "2" + width: "" + depth: "" transition: "DrillingBar" duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml b/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml index 4f1c6fb..b8b0e4a 100644 --- a/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml +++ b/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml @@ -14,6 +14,10 @@ spec: - object: "bar" number: 1 lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" eventData: - activity: name: "Drilled" @@ -21,5 +25,9 @@ spec: - object: "bar" number: 1 change: "drilled" + size: + length: "2" + width: "" + depth: "" transition: "SandingBar" duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml b/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml index 7c243be..f762faa 100644 --- a/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml +++ b/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml @@ -14,6 +14,10 @@ spec: - object: "bar" number: 1 lastState: "drilled" + size: + length: "2" + width: "" + depth: "" eventData: - activity: name: "Sanded bar" @@ -21,5 +25,9 @@ spec: - object: "bar" number: 1 change: "sanded" + size: + length: "2" + width: "" + depth: "" transition: "TransportM1A" duration: 5 diff --git a/config/datasource/smart-factory-parallel/e5-assembly.yaml b/config/datasource/smart-factory-parallel/e5-assembly.yaml index 00c027e..d7e308c 100644 --- a/config/datasource/smart-factory-parallel/e5-assembly.yaml +++ b/config/datasource/smart-factory-parallel/e5-assembly.yaml @@ -14,15 +14,22 @@ spec: - object: "bar" number: 4 lastState: "sanded" + size: + length: "2" + width: "" + depth: "" - object: "screw" number: 13 lastState: "" + size: - object: "handover" number: 1 lastState: "" + size: - object: "handoverStock" number: 1 lastState: "" + size: eventData: - activity: name: "Assembling completed" @@ -30,6 +37,7 @@ spec: - object: "woodShelf" number: 1 change: "assembled" + size: duration: 10 transition: "Shipping" - activity: @@ -38,6 +46,7 @@ spec: - object: "woodShelf" number: 1 change: "overheated" + size: transition: "" duration: 2 - activity: @@ -46,5 +55,6 @@ spec: - object: "woodShelf" number: 1 change: "broke" + size: transition: "" duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e7-shipping.yaml b/config/datasource/smart-factory-parallel/e7-shipping.yaml index 4f6c607..d4316fc 100644 --- a/config/datasource/smart-factory-parallel/e7-shipping.yaml +++ b/config/datasource/smart-factory-parallel/e7-shipping.yaml @@ -14,6 +14,7 @@ spec: - object: "woodShelf" number: 1 lastState: "assembled" + size: eventData: - activity: name: "Package waits for sending" @@ -21,6 +22,7 @@ spec: - object: "woodShelf" number: 1 change: "" + size: transition: "Shipping" duration: 180 - activity: @@ -29,5 +31,6 @@ spec: - object: "woodShelf" number: 1 change: "" + size: transition: "" duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/handover.yaml b/config/datasource/smart-factory-parallel/handover.yaml index 3139710..3bd5a18 100644 --- a/config/datasource/smart-factory-parallel/handover.yaml +++ b/config/datasource/smart-factory-parallel/handover.yaml @@ -7,5 +7,5 @@ spec: - object: number: lastState: - length: "" - width: "" \ No newline at end of file + size: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/handoverStock.yaml b/config/datasource/smart-factory-parallel/handoverStock.yaml index f07bf77..b860b6b 100644 --- a/config/datasource/smart-factory-parallel/handoverStock.yaml +++ b/config/datasource/smart-factory-parallel/handoverStock.yaml @@ -7,5 +7,5 @@ spec: - object: number: lastState: - length: "" - width: "" \ No newline at end of file + size: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/order.yaml b/config/datasource/smart-factory-parallel/order.yaml index caf3cdb..4e843d9 100644 --- a/config/datasource/smart-factory-parallel/order.yaml +++ b/config/datasource/smart-factory-parallel/order.yaml @@ -4,5 +4,4 @@ spec: name: "order" type: "order" input: - length: "" - width: "" \ No newline at end of file + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/resourceOrder.yaml b/config/datasource/smart-factory-parallel/resourceOrder.yaml index 0ab492a..b4207e5 100644 --- a/config/datasource/smart-factory-parallel/resourceOrder.yaml +++ b/config/datasource/smart-factory-parallel/resourceOrder.yaml @@ -4,5 +4,4 @@ spec: name: "resourceOrder" type: "order" input: - length: "" - width: "" \ No newline at end of file + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/screw.yaml b/config/datasource/smart-factory-parallel/screw.yaml index 1690f6c..cd815cf 100644 --- a/config/datasource/smart-factory-parallel/screw.yaml +++ b/config/datasource/smart-factory-parallel/screw.yaml @@ -7,5 +7,5 @@ spec: - object: "order" number: 1 lastState: "" - length: "" - width: "" \ No newline at end of file + size: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml b/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml index 038ca3f..79b5366 100644 --- a/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml +++ b/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml @@ -12,8 +12,12 @@ spec: distribution: [1.0] input: - object: "barResource" - number: 1 + number: 2 lastState: "" + size: + length: "4" + width: "" + depth: "" workforces: - workforce: "transportRobot" number: 1 @@ -22,10 +26,15 @@ spec: name: "transport from stock to M1" output: - object: "barResource" - number: 1 + number: 2 change: "" + size: + length: "4" + width: "" + depth: "" - object: "handover" number: 1 change: "" + size: transition: "SawingBar" duration: 10 diff --git a/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml b/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml index e594ea8..f7f07ff 100644 --- a/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml +++ b/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml @@ -14,6 +14,7 @@ spec: - object: "bar" number: 4 lastState: "sanded" + size: workforces: - workforce: "transportRobot" number: 1 @@ -24,8 +25,10 @@ spec: - object: "bar" number: 4 change: "sanded" + size: - object: "handover" number: 1 change: "" + size: transition: "Assembly" duration: 10 diff --git a/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml index d09dbe9..e12e3d0 100644 --- a/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml +++ b/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml @@ -14,6 +14,7 @@ spec: - object: "screw" number: 13 lastState: "" + size: workforces: - workforce: "transportRobot" number: 1 @@ -24,8 +25,10 @@ spec: - object: "screw" number: 13 change: "" + size: - object: "handoverStock" number: 1 change: "" + size: transition: "Assembly" duration: 10 diff --git a/config/datasource/smart-factory-parallel/warehouse_stock.yaml b/config/datasource/smart-factory-parallel/warehouse_stock.yaml index 805787e..cd43c5f 100644 --- a/config/datasource/smart-factory-parallel/warehouse_stock.yaml +++ b/config/datasource/smart-factory-parallel/warehouse_stock.yaml @@ -4,4 +4,5 @@ spec: stocks: - object: "order" number: 100 - lastState: \ No newline at end of file + lastState: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/woodShelf.yaml b/config/datasource/smart-factory-parallel/woodShelf.yaml index eafa7a9..483c571 100644 --- a/config/datasource/smart-factory-parallel/woodShelf.yaml +++ b/config/datasource/smart-factory-parallel/woodShelf.yaml @@ -7,8 +7,9 @@ spec: - object: "bar" number: 4 lastState: "sanded" + size: - object: "screw" number: 13 lastState: "" - length: "" - width: "" \ No newline at end of file + size: + size: \ No newline at end of file diff --git a/distributed_event_factory/core/object.py b/distributed_event_factory/core/object.py index 1bf0496..6cf4c06 100644 --- a/distributed_event_factory/core/object.py +++ b/distributed_event_factory/core/object.py @@ -24,8 +24,7 @@ def __init__( object_id_name: str, object_type: str, input_objects: [], - length: int, - width: int + size ): self.values_changed: List[ObjectData] = [] @@ -33,8 +32,7 @@ def __init__( self.object_id = ObjectId(object_id_name) self.object_type = object_type self.input_objects = input_objects - self.length = length - self.width = width + self.size = size def emit_object(self, id, object_name, timestamp) -> ObjectData: object = ObjectData( @@ -54,14 +52,13 @@ def get_object_type(self) -> str: def get_input_objects(self) -> []: return self.input_objects - def get_length(self) -> int: - return self.length - - def get_width(self) -> int: - return self.width + def get_size(self): + return self.size def get_last_changed_value(self): - return self.values_changed[-1].object_state + if self.values_changed: + return self.values_changed[-1].object_state + return None def add_change(self, change): self.values_changed.append(change) @@ -70,5 +67,4 @@ def clone(self): return GenericObjectSource(self.object_id_name, self.object_type, self.input_objects, - self.length, - self.width) + self.size) diff --git a/distributed_event_factory/core/object_id.py b/distributed_event_factory/core/object_id.py index 0432aac..813c3e5 100644 --- a/distributed_event_factory/core/object_id.py +++ b/distributed_event_factory/core/object_id.py @@ -11,4 +11,7 @@ def __hash__(self): return hash(self.id) def get_name(self): - return self.id \ No newline at end of file + return self.id + + def get_unique_id(self): + return self.unique_id \ No newline at end of file diff --git a/distributed_event_factory/parser/datasource/event/input/input_parser.py b/distributed_event_factory/parser/datasource/event/input/input_parser.py index 696eab2..230ec1c 100644 --- a/distributed_event_factory/parser/datasource/event/input/input_parser.py +++ b/distributed_event_factory/parser/datasource/event/input/input_parser.py @@ -1,5 +1,6 @@ from distributed_event_factory.parser.parser import Parser from provider.object.input.input_provider import InputObjectProvider +from provider.object.size_params_provider import SizeParamsProvider class InputParser(Parser): @@ -13,5 +14,12 @@ def add_dependency(self, key: str, dependency): def parse(self, config): object_list = [] for object_element in config["input"]: - object_list.append(InputObjectProvider(object_element["object"], object_element["number"], object_element["lastState"])) + size_params = None + if object_element["size"]: + size_params = SizeParamsProvider(width=object_element["size"]["width"], + depth=object_element["size"]["depth"], + length=object_element["size"]["length"]) + object_list.append( + InputObjectProvider(object_element["object"], object_element["number"], object_element["lastState"], + size_params)) return object_list \ No newline at end of file diff --git a/distributed_event_factory/parser/datasource/event/output/output_parser.py b/distributed_event_factory/parser/datasource/event/output/output_parser.py index fe5665d..d80a05f 100644 --- a/distributed_event_factory/parser/datasource/event/output/output_parser.py +++ b/distributed_event_factory/parser/datasource/event/output/output_parser.py @@ -1,4 +1,5 @@ from distributed_event_factory.parser.parser import Parser +from provider.object.size_params_provider import SizeParamsProvider from provider.transition.output.output_provider import OutputObjectProvider @@ -13,9 +14,17 @@ def add_dependency(self, key: str, dependency): def parse(self, config): object_list = [] for object_element in config: - object_list.append(OutputObjectProvider(object_element["object"], object_element["number"], object_element["change"])) + size_params = None + if object_element["size"]: + size_params = SizeParamsProvider(width=object_element["size"]["width"], + depth=object_element["size"]["depth"], + length=object_element["size"]["length"]) + object_list.append( + OutputObjectProvider(object_element["object"], object_element["number"], object_element["change"], + size_params)) return object_list + class DummyObjectParser(Parser): def __init__(self): self.dependencies = dict() diff --git a/distributed_event_factory/parser/object/object_source_parser.py b/distributed_event_factory/parser/object/object_source_parser.py index 1b38c06..1982381 100644 --- a/distributed_event_factory/parser/object/object_source_parser.py +++ b/distributed_event_factory/parser/object/object_source_parser.py @@ -2,6 +2,8 @@ from distributed_event_factory.core.object_id import ObjectId from distributed_event_factory.parser.parser import Parser from distributed_event_factory.provider.object.input.input_provider import InputObjectProvider +from provider.object.size_params_provider import SizeParamsProvider + class ObjectSourceParser(Parser): @@ -13,17 +15,26 @@ def add_dependency(self, key: str, dependency): def parse(self, config): input_list = [] + size_params = None if config["input"]: for input in config["input"]: + size_params = None + if input["size"]: + size_params = SizeParamsProvider(width=input["size"]["width"], + depth=input["size"]["depth"], + length=input["size"]["length"]) input_list.append(InputObjectProvider( objectName=input["object"], numberOfObject=input["number"], - lastState=input["lastState"] + lastState=input["lastState"], + size=size_params, )) + if config["size"]: + size_params = SizeParamsProvider(length=config["size"]["length"], depth=config["size"]["depth"], + width=config["size"]["width"]) return GenericObjectSource( object_id_name=ObjectId(config["name"]), object_type=config["type"], input_objects=input_list, - length=config["length"], - width=config["width"] + size=size_params ) diff --git a/distributed_event_factory/parser/stock/stock_parser.py b/distributed_event_factory/parser/stock/stock_parser.py index 7764599..60f8a3f 100644 --- a/distributed_event_factory/parser/stock/stock_parser.py +++ b/distributed_event_factory/parser/stock/stock_parser.py @@ -1,5 +1,6 @@ from parser.parser import Parser from provider.object.input.input_provider import InputObjectProvider +from provider.object.size_params_provider import SizeParamsProvider class StockParser(Parser): @@ -13,9 +14,15 @@ def add_dependency(self, key: str, dependency): def parse(self, config): stocks_list = [] for stock in config["stocks"]: + size_params = None + if stock["size"]: + size_params = SizeParamsProvider(width=stock["size"]["width"], + depth=stock["size"]["depth"], + length=stock["size"]["length"]) stocks_list.append(InputObjectProvider( objectName=stock["object"], numberOfObject=stock["number"], - lastState=stock["lastState"] + lastState=stock["lastState"], + size=size_params, )) return stocks_list \ No newline at end of file diff --git a/distributed_event_factory/provider/object/input/input_provider.py b/distributed_event_factory/provider/object/input/input_provider.py index 419a850..4672934 100644 --- a/distributed_event_factory/provider/object/input/input_provider.py +++ b/distributed_event_factory/provider/object/input/input_provider.py @@ -1,11 +1,15 @@ class InputObjectProvider: - def __init__(self, objectName, numberOfObject, lastState): + def __init__(self, objectName, numberOfObject, lastState, size): self.objectName = objectName self.numberOfObject = numberOfObject self.lastState = lastState + self.size = size def __str__(self): if self.lastState: return str(self.__dict__) - else: - return str({key: value for key, value in self.__dict__.items() if value}) + return str({ + key: (str(value) if key == "size" else value) + for key, value in self.__dict__.items() + if value + }) diff --git a/distributed_event_factory/provider/object/size_params_provider.py b/distributed_event_factory/provider/object/size_params_provider.py new file mode 100644 index 0000000..c5e28e9 --- /dev/null +++ b/distributed_event_factory/provider/object/size_params_provider.py @@ -0,0 +1,8 @@ +class SizeParamsProvider: + def __init__(self, width:str, length:str, depth:str): + self.width : float = float(width) if width else None + self.length : float = float(length) if length else None + self.depth : float = float(depth) if depth else None + + def __str__(self): + return str({key: value for key, value in self.__dict__.items() if value}) \ No newline at end of file diff --git a/distributed_event_factory/provider/transition/output/output_provider.py b/distributed_event_factory/provider/transition/output/output_provider.py index ce2c83d..3e90410 100644 --- a/distributed_event_factory/provider/transition/output/output_provider.py +++ b/distributed_event_factory/provider/transition/output/output_provider.py @@ -1,11 +1,15 @@ class OutputObjectProvider: - def __init__(self, objectName, numberOfObject, change): + def __init__(self, objectName, numberOfObject, change, size): self.objectName = objectName self.numberOfObject = numberOfObject self.change = change + self.size = size def __str__(self): if self.change: return str(self.__dict__) - else: - return str({key: value for key, value in self.__dict__.items() if value}) \ No newline at end of file + return str({ + key: (str(value) if key == "size" else value) + for key, value in self.__dict__.items() + if value + }) \ No newline at end of file diff --git a/distributed_event_factory/simulation/countbased.py b/distributed_event_factory/simulation/countbased.py index dd5899b..c546b4d 100644 --- a/distributed_event_factory/simulation/countbased.py +++ b/distributed_event_factory/simulation/countbased.py @@ -34,7 +34,7 @@ def run_simulation(self, datasources, sinks, objects, routes, stocks, workforce_ workforce_start_positions=workforce_start_positions ) - for i in range(10): + for i in range(200): event = process_simulator.simulate() self.send_event(event) hook() diff --git a/distributed_event_factory/simulation/object_event.py b/distributed_event_factory/simulation/object_event.py index 9fe0d0e..acc38e7 100644 --- a/distributed_event_factory/simulation/object_event.py +++ b/distributed_event_factory/simulation/object_event.py @@ -17,4 +17,4 @@ def getDifference(self): return self.input + "->" + self.output def __str__(self): - return str(self.__dict__) \ No newline at end of file + return str(self.__dict__).replace("\\", "") \ No newline at end of file diff --git a/distributed_event_factory/simulation/simulator_objects/object_storage.py b/distributed_event_factory/simulation/simulator_objects/object_storage.py index b52c2e0..1a8358d 100644 --- a/distributed_event_factory/simulation/simulator_objects/object_storage.py +++ b/distributed_event_factory/simulation/simulator_objects/object_storage.py @@ -2,6 +2,7 @@ from core.object import ObjectData, GenericObjectSource from provider.object.input.input_provider import InputObjectProvider +from provider.object.size_params_provider import SizeParamsProvider from provider.transition.output.output_provider import OutputObjectProvider from simulation.simulator_objects.object_utility import ObjectUtility from simulation.simulator_objects.workprocessstep import WorkProcessStep @@ -15,14 +16,27 @@ def __init__(self): def contains_all_object_of_data(self, objects: List[InputObjectProvider]): for obj in objects: if not obj.lastState: - if sum(1 for item in self.objects if - item.object_id.id.id == obj.objectName and not item.values_changed) < obj.numberOfObject: - return False + if not obj.size: + if sum(1 for item in self.objects if + item.object_id.id.id == obj.objectName and not item.values_changed and not item.size) < obj.numberOfObject: + return False + else: + if sum(1 for item in self.objects if + item.object_id.id.id == obj.objectName and not item.values_changed and self.object_size_smaller_or_equal( + item.size, obj.size)) < obj.numberOfObject: + return False else: - if (sum(1 for item in self.objects if - item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState) - < obj.numberOfObject): - return False + if not obj.size: + if (sum(1 for item in self.objects if + item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState and not item.size) + < obj.numberOfObject): + return False + else: + if (sum(1 for item in self.objects if + item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState and self.object_size_smaller_or_equal( + item.size, obj.size)) + < obj.numberOfObject): + return False return True def contains_all_object_of_data_for_steps(self, steps: List[WorkProcessStep]): @@ -32,18 +46,32 @@ def contains_all_object_of_data_for_steps(self, steps: List[WorkProcessStep]): all_objects_possible = True for obj in step.input_objects: if not obj.lastState: - all_objects_possible = self.contains_objects_with_last_state_for_steps(all_objects_possible, obj, - object_forecast) + if not obj.size: + all_objects_possible = self.contains_objects_without_last_state_without_size_for_steps( + all_objects_possible, obj, + object_forecast) + else: + all_objects_possible = self.contains_objects_without_last_state_with_size_for_steps( + all_objects_possible, obj, + object_forecast) else: - all_objects_possible = self.contains_objects_without_last_state_for_steps(all_objects_possible, obj, - object_forecast) + if not obj.size: + all_objects_possible = self.contains_objects_with_last_state_without_size_for_steps( + all_objects_possible, + obj, + object_forecast) + else: + all_objects_possible = self.contains_objects_with_last_state_with_size_for_steps( + all_objects_possible, + obj, + object_forecast) if all_objects_possible: possible_workstation_step_pairs.append((workstation, step)) return possible_workstation_step_pairs - def contains_objects_without_last_state_for_steps(self, all_objects_possible, obj, object_forecast): + def contains_objects_with_last_state_without_size_for_steps(self, all_objects_possible, obj, object_forecast): if not (sum(1 for item in object_forecast if - item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState) + item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState and not item.size) < obj.numberOfObject): for i in range(obj.numberOfObject): obj_to_remove = self.find_object_of_data_in_storage(obj, object_forecast) @@ -52,9 +80,32 @@ def contains_objects_without_last_state_for_steps(self, all_objects_possible, ob all_objects_possible = False return all_objects_possible - def contains_objects_with_last_state_for_steps(self, all_objects_possible, obj, object_forecast): + def contains_objects_without_last_state_without_size_for_steps(self, all_objects_possible, obj, object_forecast): if not sum(1 for item in object_forecast if - item.object_id.id.id == obj.objectName and not item.values_changed) < obj.numberOfObject: + item.object_id.id.id == obj.objectName and not item.values_changed and not item.size) < obj.numberOfObject: + for i in range(obj.numberOfObject): + obj_to_remove = self.find_object_of_data_in_storage(obj, object_forecast) + object_forecast.remove(obj_to_remove) + else: + all_objects_possible = False + return all_objects_possible + + def contains_objects_without_last_state_with_size_for_steps(self, all_objects_possible, obj, object_forecast): + if not sum(1 for item in object_forecast if + item.object_id.id.id == obj.objectName and not item.values_changed and self.object_size_smaller_or_equal( + item.size, obj.size)) < obj.numberOfObject: + for i in range(obj.numberOfObject): + obj_to_remove = self.find_object_of_data_in_storage(obj, object_forecast) + object_forecast.remove(obj_to_remove) + else: + all_objects_possible = False + return all_objects_possible + + def contains_objects_with_last_state_with_size_for_steps(self, all_objects_possible, obj, object_forecast): + if not (sum(1 for item in object_forecast if + item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState and self.object_size_smaller_or_equal( + item.size, obj.size)) + < obj.numberOfObject): for i in range(obj.numberOfObject): obj_to_remove = self.find_object_of_data_in_storage(obj, object_forecast) object_forecast.remove(obj_to_remove) @@ -62,6 +113,51 @@ def contains_objects_with_last_state_for_steps(self, all_objects_possible, obj, all_objects_possible = False return all_objects_possible + def object_size_smaller_or_equal(self, given_size, wanted_size): + if (not wanted_size.length and given_size.length) or ( + wanted_size.length and not given_size.length) or ( + given_size.length and wanted_size.length and given_size.length < wanted_size.length): + return False + if (not wanted_size.width and given_size.width) or ( + wanted_size.width and not given_size.width) or ( + given_size.width and wanted_size.width and given_size.width < wanted_size.width): + return False + if (not wanted_size.depth and given_size.depth) or ( + wanted_size.depth and not given_size.depth) or ( + given_size.depth and wanted_size.depth and given_size.depth < wanted_size.depth): + return False + return True + + def get_times_given_object_generates_wanted_object(self, given_size, wanted_size): + if self.object_size_smaller_or_equal(given_size, wanted_size): + depth_times = None + width_times = None + length_times = None + if given_size.depth and wanted_size.dept: + depth_times = round(given_size.depth / wanted_size.dept) + if given_size.width and wanted_size.width: + width_times = round(given_size.width / wanted_size.width) + if given_size.length and wanted_size.length: + length_times = round(given_size.length / wanted_size.length) + filtered_numbers = [n for n in [depth_times, width_times, length_times] if n is not None] + return min(filtered_numbers) + return 0 + + def get_leftover_size_of_given_object(self, given_size, wanted_size): + factor = self.get_times_given_object_generates_wanted_object(given_size, wanted_size) + if factor > 0: + depth = given_size.depth + width = given_size.width + length = given_size.length + if given_size.depth and wanted_size.dept: + depth = given_size.depth - (wanted_size.dept * factor) + if given_size.width and wanted_size.width: + width = given_size.width - (wanted_size.width * factor) + if given_size.length and wanted_size.length: + length = given_size.length - (wanted_size.length * factor) + return SizeParamsProvider(depth=depth, width=width, length=length) + return given_size + def add_object(self, obj: GenericObjectSource): self.objects.append(obj) @@ -74,12 +170,25 @@ def find_object_of_data_in_local_storage(self, obj): def find_object_of_data_in_storage(self, obj, objects): if obj.lastState: - return next((item for item in objects if - item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState), - None) + if obj.size: + return next((item for item in objects if + item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState and self.object_size_smaller_or_equal( + item.size, obj.size)), + None) + else: + return next((item for item in objects if + item.object_id.id.id == obj.objectName and item.get_last_changed_value() == obj.lastState and not item.size), + None) else: - return next((item for item in objects if - item.object_id.id.id == obj.objectName and not item.values_changed), None) + if obj.size: + return next((item for item in objects if + item.object_id.id.id == obj.objectName and not item.values_changed and self.object_size_smaller_or_equal( + item.size, obj.size)), + None) + else: + return next((item for item in objects if + item.object_id.id.id == obj.objectName and not item.values_changed and not item.size), + None) def find_object_in_input_objects(self, obj, objects): return next((item for item in objects if @@ -89,16 +198,27 @@ def manage_input_and_output_of_steps(self, input_objects: List[InputObjectProvid output_objects: List[OutputObjectProvider], object_templates: Dict[str, ObjectData], timestamp): ingoing_objects = [] + outgoing_objects = [] for input_object in input_objects: for i in range(input_object.numberOfObject): obj = self.find_object_of_data_in_local_storage(input_object) if obj: ingoing_objects.append(obj) self.objects.remove(obj) + if obj.size and input_object.size: + leftover_size = self.get_leftover_size_of_given_object(obj.size, input_object.size) + if leftover_size: + obj = obj.clone() + obj.add_change(ObjectData(timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), + object_state="size: "+str(leftover_size), + object_id=obj.object_id)) + obj.size = leftover_size + self.add_object(obj) + outgoing_objects.append(obj) else: return ValueError("Object not found") - outgoing_objects = self.add_output_changed_objects_to_store(ingoing_objects, object_templates, output_objects, - timestamp) + outgoing_objects.extend(self.add_output_changed_objects_to_store(ingoing_objects, object_templates, output_objects, + timestamp)) return ingoing_objects, outgoing_objects def add_output_changed_objects_to_store(self, objects, object_templates, output_objects, timestamp): diff --git a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py index becbe4b..b765c12 100644 --- a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py +++ b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py @@ -1,4 +1,5 @@ from simulation.object_event import ObjectEvent +from collections import defaultdict Y_M_D_H_M_S = "%Y-%m-%d %H:%M:%S" @@ -38,13 +39,58 @@ def clone(self): self.end_location) def produce_event(self, current_timestamp, workstation, ingoing_objects, outgoing_objects) -> ObjectEvent: + ingoing_summary = self.summary_of_objects(objects=ingoing_objects) + outgoing_summary = self.summary_of_objects(objects=outgoing_objects) return ObjectEvent( timestamp=current_timestamp.strftime(Y_M_D_H_M_S), activity=self.activity, node=self.node, group_id=workstation, - input=", ".join([str(obj) for obj in self.input_objects] + [ - "objectIds: " + ", ".join(obj.object_id.unique_id for obj in ingoing_objects)]), - output=", ".join([str(obj) for obj in self.output_objects] + [ - "objectIds: " + ", ".join(obj.object_id.unique_id for obj in outgoing_objects)]) + input=ingoing_summary, + output=outgoing_summary ) + + def summary_of_objects(self, objects): + summary = "" + counter = ObjectCounter(objects) + result = counter.count_and_memorize() + for key, value in result.items(): + summary += str(key) + ": Count = {" + str(value['count']) + "}, Unique IDs = {" + str( + value['uniqueIds']) + "}, " + return summary[:-2] + + +class ObjectCounter: + def __init__(self, objects): + self.objects = objects + self.memory = {} + + def count_and_memorize(self): + groups = defaultdict(list) + + for obj in self.objects: + key = str(ObjectIdenticalParameters(obj)) + if not groups.get(key): + groups[key] = [obj.get_id().get_unique_id()] + else: + unique_ids = groups.pop(key) + unique_ids.append(obj.get_id().get_unique_id()) + groups[key] = unique_ids + + for key, unique_ids in groups.items(): + self.memory[key] = {'count': len(unique_ids), 'uniqueIds': unique_ids} + + return self.memory + + +class ObjectIdenticalParameters: + def __init__(self, object): + self.name = object.object_id_name.id + self.size = object.size + + def __str__(self): + return str({ + key: (str(value) if key == "size" or "objects" else value) + for key, value in self.__dict__.items() + if value + }) From 70763e1c57e2e60bf69cbd30d9d6bbe692a1ae1a Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 18 Jul 2025 13:07:31 +0200 Subject: [PATCH 094/124] start for ocel sink --- config/sink/ocel.yaml | 27 ++++ distributed_event_factory/event_factory.py | 4 +- .../event_factory_main.py | 2 +- .../parser/parser_registry.py | 5 +- .../parser/sink/ocel_sink_parser.py | 10 ++ .../provider/sink/console/console_sink.py | 2 +- .../provider/sink/http/http_sink.py | 2 +- .../provider/sink/kafka/kafka_sink.py | 2 +- .../sink/kafka/kafka_validation_sink.py | 2 +- .../provider/sink/ocel/ocel_sink.py | 119 ++++++++++++++++++ .../provider/sink/sink_provider.py | 2 +- .../provider/sink/test/test_sink.py | 2 +- .../provider/sink/ui/terminal_ui_sink.py | 4 +- .../simulation/abstract_simulation.py | 4 +- .../simulation/countbased.py | 6 +- .../simulation/loadtest.py | 4 +- .../process_simulation_object_centric.py | 2 +- .../simulator_objects/object_storage.py | 4 + .../simulator_objects/workprocessstep.py | 1 + .../simulation/stream.py | 4 +- 20 files changed, 186 insertions(+), 22 deletions(-) create mode 100644 config/sink/ocel.yaml create mode 100644 distributed_event_factory/parser/sink/ocel_sink_parser.py create mode 100644 distributed_event_factory/provider/sink/ocel/ocel_sink.py diff --git a/config/sink/ocel.yaml b/config/sink/ocel.yaml new file mode 100644 index 0000000..58f3315 --- /dev/null +++ b/config/sink/ocel.yaml @@ -0,0 +1,27 @@ +kind: sink +name: ocelConsole +spec: + type: ocel + id: "Sensor" + dataSourceRefs: + - "GoodsDelivery" + - "MaterialPreparation" + - "AssemblyLineSetup" + - "Assembling" + - "QualityControl" + - "Packaging" + - "Shipping" + - "OutgoingStock" + - "Assembly" + - "SawingBar" + - "DrillingBar" + - "SandingBar" + - "OrderPlacement" + - "TransportM1" + - "TransportM1A" + - "TransportSA" + - "A" + - "B" + - "C" + - "D" + - "E" \ No newline at end of file diff --git a/distributed_event_factory/event_factory.py b/distributed_event_factory/event_factory.py index 79514d3..4c2983d 100644 --- a/distributed_event_factory/event_factory.py +++ b/distributed_event_factory/event_factory.py @@ -133,7 +133,7 @@ def add_file(self, filename): self.add_workforce_start_positions(name, parsed_object) return self - def run(self, hook=lambda: None): + def run(self, content_root, hook=lambda: None): for simulation in self.simulations: self.simulations[simulation].run_simulation(self.datasources, self.sinks, self.objects, self.routes, - self.stocks, self.workforce_start_positions, hook) + self.stocks, self.workforce_start_positions, content_root, hook) diff --git a/distributed_event_factory/event_factory_main.py b/distributed_event_factory/event_factory_main.py index 616e1ff..ff6c753 100644 --- a/distributed_event_factory/event_factory_main.py +++ b/distributed_event_factory/event_factory_main.py @@ -23,4 +23,4 @@ .add_directory(f"{content_root}/config/datasource/{datasource}") .add_file(f"{content_root}/config/simulation/{simulation}") .add_file(f"{content_root}/config/sink/{sink}") - ).run() + ).run(content_root = content_root) diff --git a/distributed_event_factory/parser/parser_registry.py b/distributed_event_factory/parser/parser_registry.py index 2a097d4..48deec4 100644 --- a/distributed_event_factory/parser/parser_registry.py +++ b/distributed_event_factory/parser/parser_registry.py @@ -45,6 +45,7 @@ from parser.datasource.event.input.input_parser import InputParser from parser.datasource.event.output.output_parser import OutputParser, DummyObjectParser from parser.route.route_parser import RouteParser +from parser.sink.ocel_sink_parser import OcelConsoleSinkParser from parser.stock.stock_parser import StockParser from parser.workforce.workforce_parser import WorkforceParser, DummyWorkforceParser from parser.workforce.workforce_start_positions import WorkforceStartPositionParser @@ -73,13 +74,15 @@ def __init__(self): # Sinks self.kafka_sink_parser = (KafkaSinkParser()).add_dependency("partition", self.partition_parser) self.console_sink_parser = (PrintConsoleSinkParser()) + self.ocel_console_sink_parser = (OcelConsoleSinkParser()) self.ui_sink_parser = (UiSinkParser()) self.http_sink_parser = (HttpSinkParser()) self.sink_parser = (SinkParser() .add_dependency("console", self.console_sink_parser) .add_dependency("ui", self.ui_sink_parser) .add_dependency("http", self.http_sink_parser) - .add_dependency("kafka", self.kafka_sink_parser)) + .add_dependency("kafka", self.kafka_sink_parser) + .add_dependency("ocel", self.ocel_console_sink_parser)) ########## # Activity self.activity_parser = ActivityParser().add_dependency("output", self.output_parser) diff --git a/distributed_event_factory/parser/sink/ocel_sink_parser.py b/distributed_event_factory/parser/sink/ocel_sink_parser.py new file mode 100644 index 0000000..b6968a7 --- /dev/null +++ b/distributed_event_factory/parser/sink/ocel_sink_parser.py @@ -0,0 +1,10 @@ +from distributed_event_factory.parser.parser import Parser +from provider.sink.ocel.ocel_sink import OcelConsole + + +class OcelConsoleSinkParser(Parser): + def add_dependency(self, key: str, dependency): + pass + + def parse(self, config): + return OcelConsole(config["id"], config["dataSourceRefs"]) \ No newline at end of file diff --git a/distributed_event_factory/provider/sink/console/console_sink.py b/distributed_event_factory/provider/sink/console/console_sink.py index eba87b2..620dafc 100644 --- a/distributed_event_factory/provider/sink/console/console_sink.py +++ b/distributed_event_factory/provider/sink/console/console_sink.py @@ -9,7 +9,7 @@ def __init__(self, id, data_source_ref): super().__init__(data_source_ref) self.id = id - def send(self, event: Event) -> None: + def send(self, event: Event, root, object_sources, object_store) -> None: #print(event.timestamp) print("Sensor " + event.node + ": " + str(event)) diff --git a/distributed_event_factory/provider/sink/http/http_sink.py b/distributed_event_factory/provider/sink/http/http_sink.py index 2b24a42..15183b4 100644 --- a/distributed_event_factory/provider/sink/http/http_sink.py +++ b/distributed_event_factory/provider/sink/http/http_sink.py @@ -44,5 +44,5 @@ def end_timeframe(self): def start(self): requests.post(url=self.url + "/start") - def send(self, event: Event) -> None: + def send(self, event: Event, root, object_sources, object_store) -> None: self.timeframe.add_event(event) diff --git a/distributed_event_factory/provider/sink/kafka/kafka_sink.py b/distributed_event_factory/provider/sink/kafka/kafka_sink.py index ade0c5d..0ca56df 100644 --- a/distributed_event_factory/provider/sink/kafka/kafka_sink.py +++ b/distributed_event_factory/provider/sink/kafka/kafka_sink.py @@ -20,7 +20,7 @@ def __init__(self, bootstrap_server_url: string, client_id: string, topic: strin self.topic = topic self.partition_provider = partition_provider - def send(self, event: Event) -> None: + def send(self, event: Event, root, object_sources, object_store) -> None: self.producer.send( self.topic, value=json.dumps(event.__dict__), diff --git a/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py b/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py index 23b27f0..99f3357 100644 --- a/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py +++ b/distributed_event_factory/provider/sink/kafka/kafka_validation_sink.py @@ -29,7 +29,7 @@ def __init__( self.validation_topic = validation_topic self.validation_split = validation_split - def send(self, event: Event) -> None: + def send(self, event: Event, root, object_sources, object_store) -> None: if hash(event.get_case()) % self.validation_split == 0: send_topic = self.validation_topic send_partition = ConstantPartitionProvider(partition=0) diff --git a/distributed_event_factory/provider/sink/ocel/ocel_sink.py b/distributed_event_factory/provider/sink/ocel/ocel_sink.py new file mode 100644 index 0000000..52330d5 --- /dev/null +++ b/distributed_event_factory/provider/sink/ocel/ocel_sink.py @@ -0,0 +1,119 @@ +from typing import Any, Dict, Collection + +from process_mining_core.datastructure.core.event import Event + +from core.object import GenericObjectSource +from distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider +import pandas as pd +import ast + +from provider.object.size_params_provider import SizeParamsProvider + + +class OcelConsole(Sink): + + def __init__(self, id, data_source_ref): + super().__init__(data_source_ref) + self.id = id + self.object_types = [] + self.el = [] + self.rowsList = [] + self.contentRoot = None + self.index = 0 + self.object_types = [] + + def send(self, event: Event, root, object_sources, object_store) -> None: + # print(event.timestamp) + if not self.object_types: + for object_source in object_sources.values(): + if object_source.object_type not in self.object_types: + self.object_types.append(object_source.object_type) + print("Sensor " + event.node + ": " + str(event)) + self.el.append("Sensor " + event.node + ": " + str(event)) + new_rows = [] + new_row = {} + new_row["ocel:eid"] = event.node + str(self.index) + new_row["ocel:timestamp"] = event.timestamp + new_row["ocel:activity"] = event.activity + new_row["ocel:node"] = event.node + new_row["ocel:workstation"]: event.group + for type in self.object_types: + involved_objects = self.get_objects_of_type(type, event.input, object_store) + involved_objects.extend(self.get_objects_of_type(type, event.output, object_store)) + for involved_object in involved_objects: + new_row["ocel:type"] = type + new_row["ocel:" + type + ":name"] = involved_object.name + new_row["ocel:" + type + ":size"] = involved_object.size + new_row["ocel:" + type + ":lastChange"] = involved_object.last_change + new_row["ocel:" + type + ":oid"] = involved_object.unique_ids + new_rows.append(new_row) + + for row in new_rows: + self.rowsList.append(row) + self.contentRoot = root + self.index += 1 + + def start_timeframe(self): + pass + + def end_timeframe(self): + additional_object_attributes = Dict[str, Collection[str]] + # ocel = pm4py.convert.convert_log_to_ocel(log=self.el, activity_column="activiy", timestamp_column="timestamp", + # object_types=self.object_types, obj_separator=", ", + # additional_event_attributes=["node", "group"], + # additional_object_attributes=additional_object_attributes) + # ocel = classic.OCEL(events=self.events, objects=self.objects, relations=self.relations, globals=None, + # parameters=parameters, o2o=self.o2o, e2e=self.e2e, object_changes=self.object_changes) + # parameters_alg = dict[Any, Any] + # parameters_alg.EVENT_ACTIVITY = "x" + # parameters_alg.OBJECT_TYPE = "y" + # classic.apply(ocel=ocel, parameters=parameters_alg) + pd.DataFrame(self.rowsList).to_csv(self.contentRoot + "/ocel.csv", index=False) + + def get_objects_of_type(self, type, objects, object_store): + objects_of_type = [] + for obj in objects.split("{\'name\': \'"): + if type in obj: + count = obj.split("Count = {")[1].split("}")[0].strip() + unique_ids_part = ast.literal_eval(obj.split("Unique IDs = {")[1].split("}")[0].strip()) + object_example = object_store.find_object_by_id(unique_ids_part[0]) + if object_example: + object_summary = ObjectSummary(object_example.object_id_name.id, object_example.object_type, object_example.size, + object_example.get_last_changed_value() ,count, unique_ids_part) + if object_summary not in objects_of_type: + objects_of_type.append(object_summary) + else: + length = None + width = None + depth = None + size = None + name = obj.split(",")[0] + obj_type = obj.split("\'object_type\': \'")[0].split("\',")[0].strip() + if "size" in obj: + size = obj.split(",")[2].split("{")[1].split("}")[0] + if "length" in size: + length = size.split("length\':")[1].strip() + if "width" in size: + width = size.split("width\':")[1].strip() + if "depth" in size: + depth = size.split("depth\':")[1].strip() + size = SizeParamsProvider(width, length, depth) + object_summary = ObjectSummary(name, obj_type, size, None, count, unique_ids_part) + if object_summary not in objects_of_type: + objects_of_type.append(object_summary) + return objects_of_type + + +class PrintOcelConsoleSinkProvider(SinkProvider): + def get_sender(self, id) -> Sink: + return OcelConsole(id) + + +class ObjectSummary: + def __init__(self, name, type, size, last_change, count, unique_ids): + self.name = name + self.type = type + self.size = size + self.last_change = last_change + self.count = count + self.unique_ids = unique_ids diff --git a/distributed_event_factory/provider/sink/sink_provider.py b/distributed_event_factory/provider/sink/sink_provider.py index 6e37f0a..e519435 100644 --- a/distributed_event_factory/provider/sink/sink_provider.py +++ b/distributed_event_factory/provider/sink/sink_provider.py @@ -8,7 +8,7 @@ def __init__(self, data_source_ref): self.data_source_ref = data_source_ref @abc.abstractmethod - def send(self, event: Event) -> None: + def send(self, event: Event, root, object_sources, object_store) -> None: pass def get_datasource_ref(self): diff --git a/distributed_event_factory/provider/sink/test/test_sink.py b/distributed_event_factory/provider/sink/test/test_sink.py index 4d85693..9b492e9 100644 --- a/distributed_event_factory/provider/sink/test/test_sink.py +++ b/distributed_event_factory/provider/sink/test/test_sink.py @@ -9,7 +9,7 @@ def __init__(self, data_source_ref): super().__init__(data_source_ref) self.event_log: List[Event] = [] - def send(self, event: Event) -> None: + def send(self, event: Event, root, object_sources, object_store) -> None: self.event_log.append(event) def contains_event(self, event): diff --git a/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py b/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py index 6c6f582..e1b084e 100644 --- a/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py +++ b/distributed_event_factory/provider/sink/ui/terminal_ui_sink.py @@ -7,7 +7,7 @@ class TerminalGui(Sink): def __init__(self, terminal): self.terminal: Terminal = terminal - def send(self, event: Event): + def send(self, event: Event, root, object_sources, object_store): self.terminal.print(event) class UiSink(Sink): @@ -15,7 +15,7 @@ def __init__(self, id, data_source_ref): self.ui = Terminal(title=id, start_position=0) self.data_source_ref = data_source_ref - def send(self, event: Event) -> None: + def send(self, event: Event, root, object_sources, object_store) -> None: self.ui.print(event) diff --git a/distributed_event_factory/simulation/abstract_simulation.py b/distributed_event_factory/simulation/abstract_simulation.py index bcb3ff7..43abec4 100644 --- a/distributed_event_factory/simulation/abstract_simulation.py +++ b/distributed_event_factory/simulation/abstract_simulation.py @@ -5,10 +5,10 @@ class Simulation(ABC): def __init__(self): self.datasource_sink_mapping = dict() - def send_event(self, event): + def send_event(self, event, root, object_sources, object_store:None): if event.node in self.datasource_sink_mapping: for sink in self.datasource_sink_mapping[event.node]: - sink.send(event) + sink.send(event, root, object_sources, object_store) else: print(f"Skip event. No sink configured. Event: {event}") diff --git a/distributed_event_factory/simulation/countbased.py b/distributed_event_factory/simulation/countbased.py index c546b4d..4ad8774 100644 --- a/distributed_event_factory/simulation/countbased.py +++ b/distributed_event_factory/simulation/countbased.py @@ -16,7 +16,7 @@ def __init__(self, simulation_steps: int, case_id_provider: CaseIdProvider, max_ self.sinks = dict() self.max_concurrent_cases = max_concurrent_cases - def run_simulation(self, datasources, sinks, objects, routes, stocks, workforce_start_positions, hook=lambda: None): + def run_simulation(self, datasources, sinks, objects, routes, stocks, workforce_start_positions, root, hook=lambda: None): self.setup_datasource_sink_mapping(sinks) # process_simulator = ProcessSimulator( # case_id_provider=self.case_id_provider, @@ -35,6 +35,6 @@ def run_simulation(self, datasources, sinks, objects, routes, stocks, workforce_ ) for i in range(200): - event = process_simulator.simulate() - self.send_event(event) + event, object_store = process_simulator.simulate() + self.send_event(event, root, objects, object_store) hook() diff --git a/distributed_event_factory/simulation/loadtest.py b/distributed_event_factory/simulation/loadtest.py index 7bd8414..948abe3 100644 --- a/distributed_event_factory/simulation/loadtest.py +++ b/distributed_event_factory/simulation/loadtest.py @@ -42,7 +42,7 @@ def start_simulation(self, sinks): def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_mapping: Dict[str, LoadTestHttpSink], objects: Dict[str, ObjectData], routes: Dict[str, Route], stocks: Dict[str, InputObjectProvider], - workforce: Dict[str, WorkforceStartPositionProvider], + workforce: Dict[str, WorkforceStartPositionProvider], root, hook=lambda: None): self.setup_datasource_sink_mapping(datasource_sink_mapping) for sink in datasource_sink_mapping: @@ -62,7 +62,7 @@ def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_ma self.start_simulation(self.datasource_sink_mapping) self.start_timeframe(self.datasource_sink_mapping) for _ in range(int(self.load_provider.get_load_value())): - self.send_event(process_simulator.simulate()) + self.send_event(process_simulator.simulate(), root, objects) hook() self.end_timeframe(self.datasource_sink_mapping) iteration = iteration + 1 diff --git a/distributed_event_factory/simulation/process_simulation_object_centric.py b/distributed_event_factory/simulation/process_simulation_object_centric.py index 5a392ed..ed87034 100644 --- a/distributed_event_factory/simulation/process_simulation_object_centric.py +++ b/distributed_event_factory/simulation/process_simulation_object_centric.py @@ -62,7 +62,7 @@ def simulate(self) -> Event: self.workforce_storage.manage_workforce_changes(next_step, self.routeManagement) event = next_step.produce_event(self.last_timestamp, next_workstation.work_station_name, ingoing_objects, outgoing_objects) - return event + return event, self.object_storage def _get_next_step_by_event_provider(self, data_source) -> List[str]: events = self._get_sensor_with_id(DataSourceId(data_source)).get_event_data() diff --git a/distributed_event_factory/simulation/simulator_objects/object_storage.py b/distributed_event_factory/simulation/simulator_objects/object_storage.py index 1a8358d..310566d 100644 --- a/distributed_event_factory/simulation/simulator_objects/object_storage.py +++ b/distributed_event_factory/simulation/simulator_objects/object_storage.py @@ -194,6 +194,10 @@ def find_object_in_input_objects(self, obj, objects): return next((item for item in objects if item.object_id.id.id == obj.objectName), None) + def find_object_by_id(self, uid): + return next((item for item in self.objects if + item.object_id.unique_id == uid), None) + def manage_input_and_output_of_steps(self, input_objects: List[InputObjectProvider], output_objects: List[OutputObjectProvider], object_templates: Dict[str, ObjectData], timestamp): diff --git a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py index b765c12..eb73ac6 100644 --- a/distributed_event_factory/simulation/simulator_objects/workprocessstep.py +++ b/distributed_event_factory/simulation/simulator_objects/workprocessstep.py @@ -86,6 +86,7 @@ def count_and_memorize(self): class ObjectIdenticalParameters: def __init__(self, object): self.name = object.object_id_name.id + self.object_type = object.object_type self.size = object.size def __str__(self): diff --git a/distributed_event_factory/simulation/stream.py b/distributed_event_factory/simulation/stream.py index 7107d48..d2cfcac 100644 --- a/distributed_event_factory/simulation/stream.py +++ b/distributed_event_factory/simulation/stream.py @@ -20,7 +20,7 @@ def __init__( self.max_concurrent_cases = max_concurrent_cases self.sinks = dict() - def run_simulation(self, datasources, sinks, objects, routes, stocks, workforce_start_positions, hook): + def run_simulation(self, datasources, sinks, objects, routes, stocks, workforce_start_positions, root, hook): self.setup_datasource_sink_mapping(sinks) process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, @@ -33,7 +33,7 @@ def run_simulation(self, datasources, sinks, objects, routes, stocks, workforce_ while True: with ScheduledThreadPoolExecutor() as executor: scheduler = executor.schedule( - lambda: self.send_event(process_simulator.simulate()), + lambda: self.send_event(process_simulator.simulate(), root, objects), period=1 / self.load_provider.get_load_value() ) hook() From ad0965cc9788f885d1595e965a1431bdf86a02c9 Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 24 Jul 2025 14:02:30 +0200 Subject: [PATCH 095/124] ocel sink working --- .../provider/sink/ocel/ocel_sink.py | 81 ++++++++++++------- .../simulator_objects/object_storage.py | 7 +- 2 files changed, 59 insertions(+), 29 deletions(-) diff --git a/distributed_event_factory/provider/sink/ocel/ocel_sink.py b/distributed_event_factory/provider/sink/ocel/ocel_sink.py index 52330d5..b80ba74 100644 --- a/distributed_event_factory/provider/sink/ocel/ocel_sink.py +++ b/distributed_event_factory/provider/sink/ocel/ocel_sink.py @@ -1,8 +1,8 @@ from typing import Any, Dict, Collection +import pm4py from process_mining_core.datastructure.core.event import Event -from core.object import GenericObjectSource from distributed_event_factory.provider.sink.sink_provider import Sink, SinkProvider import pandas as pd import ast @@ -30,26 +30,42 @@ def send(self, event: Event, root, object_sources, object_store) -> None: self.object_types.append(object_source.object_type) print("Sensor " + event.node + ": " + str(event)) self.el.append("Sensor " + event.node + ": " + str(event)) - new_rows = [] new_row = {} new_row["ocel:eid"] = event.node + str(self.index) new_row["ocel:timestamp"] = event.timestamp new_row["ocel:activity"] = event.activity new_row["ocel:node"] = event.node new_row["ocel:workstation"]: event.group + type_objects: Dict[str, list[ObjectSummary]] = {} for type in self.object_types: - involved_objects = self.get_objects_of_type(type, event.input, object_store) - involved_objects.extend(self.get_objects_of_type(type, event.output, object_store)) - for involved_object in involved_objects: - new_row["ocel:type"] = type - new_row["ocel:" + type + ":name"] = involved_object.name - new_row["ocel:" + type + ":size"] = involved_object.size - new_row["ocel:" + type + ":lastChange"] = involved_object.last_change - new_row["ocel:" + type + ":oid"] = involved_object.unique_ids - new_rows.append(new_row) - - for row in new_rows: - self.rowsList.append(row) + input_objects = self.get_objects_of_type(type, event.input, object_store) + output_objects = self.get_objects_of_type(type, event.output, object_store) + involved_objects = [] + for input_object in input_objects: + if input_object in output_objects: + output_objects.remove(input_object) + input_object.set_is_output(True) + input_object.set_is_input(True) + involved_objects.append(input_object) + for output_object in output_objects: + output_object.set_is_output(True) + involved_objects.append(output_object) + type_objects[type] = involved_objects + for type, involved_object in type_objects.items(): + #new_row["ocel:" + type + ":type"] = type + new_row[type + "-name"] = ", ".join( + [item.name for item in involved_object if item.name is not None]) + new_row[type + "-size"] = ", ".join( + [str(item.size) for item in involved_object if item.size is not None]) + new_row[type + "-lastChange"] = ", ".join( + [item.last_change for item in involved_object if item.last_change is not None]) + new_row[type] = ", ".join( + [str(item.unique_ids) for item in involved_object if item.unique_ids is not None]) + new_row[type + "-input"] = ", ".join( + [str(item.is_input) for item in involved_object if item.is_input is not None]) + new_row[type + "-output"] = ", ".join( + [str(item.is_output) for item in involved_object if item.is_output is not None]) + self.rowsList.append(new_row) self.contentRoot = root self.index += 1 @@ -57,18 +73,18 @@ def start_timeframe(self): pass def end_timeframe(self): - additional_object_attributes = Dict[str, Collection[str]] - # ocel = pm4py.convert.convert_log_to_ocel(log=self.el, activity_column="activiy", timestamp_column="timestamp", - # object_types=self.object_types, obj_separator=", ", - # additional_event_attributes=["node", "group"], - # additional_object_attributes=additional_object_attributes) - # ocel = classic.OCEL(events=self.events, objects=self.objects, relations=self.relations, globals=None, - # parameters=parameters, o2o=self.o2o, e2e=self.e2e, object_changes=self.object_changes) - # parameters_alg = dict[Any, Any] - # parameters_alg.EVENT_ACTIVITY = "x" - # parameters_alg.OBJECT_TYPE = "y" - # classic.apply(ocel=ocel, parameters=parameters_alg) - pd.DataFrame(self.rowsList).to_csv(self.contentRoot + "/ocel.csv", index=False) + df =pd.DataFrame.from_records(data = self.rowsList)#.to_csv(self.contentRoot + "/ocel.csv", index=False, sep=";") + type_attributes: Dict[str, list[str]] = {} + for object_type in self.object_types: + type_attributes[object_type] = [object_type + "-name", object_type + "-size", + object_type + "-lastChange",object_type + "-oid", + object_type + "-input", object_type + "-output"] + ocel = pm4py.convert.convert_log_to_ocel(log=df, activity_column="ocel:activity", + timestamp_column="ocel:timestamp", + object_types=self.object_types, obj_separator=", ", + additional_event_attributes=["ocel:node", "ocel:workstation"], + additional_object_attributes=type_attributes) + pm4py.algo.discovery.ocel.ocpn.variants.classic.apply(ocel=ocel, parameters=ocel.parameters) def get_objects_of_type(self, type, objects, object_store): objects_of_type = [] @@ -78,8 +94,9 @@ def get_objects_of_type(self, type, objects, object_store): unique_ids_part = ast.literal_eval(obj.split("Unique IDs = {")[1].split("}")[0].strip()) object_example = object_store.find_object_by_id(unique_ids_part[0]) if object_example: - object_summary = ObjectSummary(object_example.object_id_name.id, object_example.object_type, object_example.size, - object_example.get_last_changed_value() ,count, unique_ids_part) + object_summary = ObjectSummary(object_example.object_id_name.id, object_example.object_type, + object_example.size, + object_example.get_last_changed_value(), count, unique_ids_part) if object_summary not in objects_of_type: objects_of_type.append(object_summary) else: @@ -117,3 +134,11 @@ def __init__(self, name, type, size, last_change, count, unique_ids): self.last_change = last_change self.count = count self.unique_ids = unique_ids + self.is_input = False + self.is_output = False + + def set_is_input(self, is_input: bool): + self.is_input = is_input + + def set_is_output(self, is_output: bool): + self.is_output = is_output diff --git a/distributed_event_factory/simulation/simulator_objects/object_storage.py b/distributed_event_factory/simulation/simulator_objects/object_storage.py index 310566d..dec7791 100644 --- a/distributed_event_factory/simulation/simulator_objects/object_storage.py +++ b/distributed_event_factory/simulation/simulator_objects/object_storage.py @@ -158,6 +158,11 @@ def get_leftover_size_of_given_object(self, given_size, wanted_size): return SizeParamsProvider(depth=depth, width=width, length=length) return given_size + def are_size_params_empty(self, size_params): + if not size_params or (not size_params.depth and not size_params.width and not size_params.length): + return True + return False + def add_object(self, obj: GenericObjectSource): self.objects.append(obj) @@ -211,7 +216,7 @@ def manage_input_and_output_of_steps(self, input_objects: List[InputObjectProvid self.objects.remove(obj) if obj.size and input_object.size: leftover_size = self.get_leftover_size_of_given_object(obj.size, input_object.size) - if leftover_size: + if not self.are_size_params_empty(leftover_size): obj = obj.clone() obj.add_change(ObjectData(timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), object_state="size: "+str(leftover_size), From 4457e5537700ae7146efae8c488e0181abf186b3 Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 24 Jul 2025 14:08:05 +0200 Subject: [PATCH 096/124] bug fix, why we did not reach shipping anymore --- .../smart-factory-parallel/t1-machine-to-assembly.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml b/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml index f7f07ff..907dc58 100644 --- a/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml +++ b/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml @@ -15,6 +15,9 @@ spec: number: 4 lastState: "sanded" size: + length: "2" + width: "" + depth: "" workforces: - workforce: "transportRobot" number: 1 @@ -26,6 +29,9 @@ spec: number: 4 change: "sanded" size: + length: "2" + width: "" + depth: "" - object: "handover" number: 1 change: "" From a6ea5a7ffb4cd823880adc4d4004b6679aa0c4d7 Mon Sep 17 00:00:00 2001 From: ulpi Date: Wed, 30 Jul 2025 11:58:26 +0200 Subject: [PATCH 097/124] small goldsmiths variants --- .../goldsmiths-with-WF-2P/e0-order.yaml | 27 +++++++++++ .../e1-outgoing-stock.yaml | 43 +++++++++++++++++ .../e2-forging-earring.yaml | 30 ++++++++++++ .../e2-forging-ring.yaml | 30 ++++++++++++ .../goldsmiths-with-WF-2P/e3-assembly.yaml | 40 ++++++++++++++++ .../e4-shipping-earring.yaml | 39 ++++++++++++++++ .../e4-shipping-ring.yaml | 39 ++++++++++++++++ .../goldsmiths-with-WF-2P/earring.yaml | 11 +++++ .../goldsmiths-with-WF-2P/gold.yaml | 11 +++++ .../goldsmiths-with-WF-2P/order.yaml | 7 +++ .../goldsmiths-with-WF-2P/resourceOrder.yaml | 7 +++ .../goldsmiths-with-WF-2P/routing.yaml | 46 +++++++++++++++++++ .../goldsmiths-with-WF-2P/stone.yaml | 11 +++++ .../warehouse_stock.yaml | 8 ++++ .../goldsmiths-with-WF-2P/workforces.yaml | 7 +++ .../goldsmiths-with-WF/e0-order.yaml | 27 +++++++++++ .../goldsmiths-with-WF/e1-outgoing-stock.yaml | 29 ++++++++++++ .../goldsmiths-with-WF/e2-forging.yaml | 30 ++++++++++++ .../goldsmiths-with-WF/e3-shipping.yaml | 30 ++++++++++++ .../datasource/goldsmiths-with-WF/gold.yaml | 11 +++++ .../datasource/goldsmiths-with-WF/order.yaml | 7 +++ .../goldsmiths-with-WF/resourceOrder.yaml | 7 +++ .../goldsmiths-with-WF/routing.yaml | 46 +++++++++++++++++++ .../goldsmiths-with-WF/warehouse_stock.yaml | 8 ++++ .../goldsmiths-with-WF/workforces.yaml | 7 +++ .../goldsmiths-without-WF-2P/e0-order.yaml | 27 +++++++++++ .../e1-outgoing-stock.yaml | 40 ++++++++++++++++ .../e2-forging-earring.yaml | 27 +++++++++++ .../e2-forging-ring.yaml | 27 +++++++++++ .../goldsmiths-without-WF-2P/e3-assembly.yaml | 40 ++++++++++++++++ .../e4-shipping-earring.yaml | 36 +++++++++++++++ .../e4-shipping-ring.yaml | 36 +++++++++++++++ .../goldsmiths-without-WF-2P/earring.yaml | 11 +++++ .../goldsmiths-without-WF-2P/gold.yaml | 11 +++++ .../goldsmiths-without-WF-2P/order.yaml | 7 +++ .../resourceOrder.yaml | 7 +++ .../goldsmiths-without-WF-2P/stone.yaml | 11 +++++ .../warehouse_stock.yaml | 8 ++++ .../goldsmiths-without-WF/e0-order.yaml | 27 +++++++++++ .../e1-outgoing-stock.yaml | 26 +++++++++++ .../goldsmiths-without-WF/e2-forging.yaml | 27 +++++++++++ .../goldsmiths-without-WF/e3-shipping.yaml | 27 +++++++++++ .../goldsmiths-without-WF/gold.yaml | 11 +++++ .../goldsmiths-without-WF/order.yaml | 7 +++ .../goldsmiths-without-WF/resourceOrder.yaml | 7 +++ .../warehouse_stock.yaml | 8 ++++ 46 files changed, 986 insertions(+) create mode 100644 config/datasource/goldsmiths-with-WF-2P/e0-order.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2P/e1-outgoing-stock.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2P/e2-forging-earring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2P/e2-forging-ring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2P/e3-assembly.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2P/e4-shipping-earring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2P/e4-shipping-ring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2P/earring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2P/gold.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2P/order.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2P/resourceOrder.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2P/routing.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2P/stone.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2P/warehouse_stock.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2P/workforces.yaml create mode 100644 config/datasource/goldsmiths-with-WF/e0-order.yaml create mode 100644 config/datasource/goldsmiths-with-WF/e1-outgoing-stock.yaml create mode 100644 config/datasource/goldsmiths-with-WF/e2-forging.yaml create mode 100644 config/datasource/goldsmiths-with-WF/e3-shipping.yaml create mode 100644 config/datasource/goldsmiths-with-WF/gold.yaml create mode 100644 config/datasource/goldsmiths-with-WF/order.yaml create mode 100644 config/datasource/goldsmiths-with-WF/resourceOrder.yaml create mode 100644 config/datasource/goldsmiths-with-WF/routing.yaml create mode 100644 config/datasource/goldsmiths-with-WF/warehouse_stock.yaml create mode 100644 config/datasource/goldsmiths-with-WF/workforces.yaml create mode 100644 config/datasource/goldsmiths-without-WF-2P/e0-order.yaml create mode 100644 config/datasource/goldsmiths-without-WF-2P/e1-outgoing-stock.yaml create mode 100644 config/datasource/goldsmiths-without-WF-2P/e2-forging-earring.yaml create mode 100644 config/datasource/goldsmiths-without-WF-2P/e2-forging-ring.yaml create mode 100644 config/datasource/goldsmiths-without-WF-2P/e3-assembly.yaml create mode 100644 config/datasource/goldsmiths-without-WF-2P/e4-shipping-earring.yaml create mode 100644 config/datasource/goldsmiths-without-WF-2P/e4-shipping-ring.yaml create mode 100644 config/datasource/goldsmiths-without-WF-2P/earring.yaml create mode 100644 config/datasource/goldsmiths-without-WF-2P/gold.yaml create mode 100644 config/datasource/goldsmiths-without-WF-2P/order.yaml create mode 100644 config/datasource/goldsmiths-without-WF-2P/resourceOrder.yaml create mode 100644 config/datasource/goldsmiths-without-WF-2P/stone.yaml create mode 100644 config/datasource/goldsmiths-without-WF-2P/warehouse_stock.yaml create mode 100644 config/datasource/goldsmiths-without-WF/e0-order.yaml create mode 100644 config/datasource/goldsmiths-without-WF/e1-outgoing-stock.yaml create mode 100644 config/datasource/goldsmiths-without-WF/e2-forging.yaml create mode 100644 config/datasource/goldsmiths-without-WF/e3-shipping.yaml create mode 100644 config/datasource/goldsmiths-without-WF/gold.yaml create mode 100644 config/datasource/goldsmiths-without-WF/order.yaml create mode 100644 config/datasource/goldsmiths-without-WF/resourceOrder.yaml create mode 100644 config/datasource/goldsmiths-without-WF/warehouse_stock.yaml diff --git a/config/datasource/goldsmiths-with-WF-2P/e0-order.yaml b/config/datasource/goldsmiths-with-WF-2P/e0-order.yaml new file mode 100644 index 0000000..3f31a9f --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2P/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2P/e1-outgoing-stock.yaml b/config/datasource/goldsmiths-with-WF-2P/e1-outgoing-stock.yaml new file mode 100644 index 0000000..30f3ff7 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2P/e1-outgoing-stock.yaml @@ -0,0 +1,43 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: genericProbability + distribution: [ 0.5, 0.5 ] + input: + - object: "resourceOrder" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "retrieve resources ring" + output: + - object: "gold" + number: 1 + change: "" + size: + duration: 3 + transition: "ForgingA" + - activity: + name: "retrieve resources earrings" + output: + - object: "gold" + number: 2 + change: "" + size: + - object: "stone" + number: 2 + change: "" + size: + duration: 8 + transition: "ForgingB" \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2P/e2-forging-earring.yaml b/config/datasource/goldsmiths-with-WF-2P/e2-forging-earring.yaml new file mode 100644 index 0000000..b9a8e33 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2P/e2-forging-earring.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "ForgingB" +spec: + name: "ForgingB" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "gold" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Forged" + output: + - object: "gold" + number: 1 + change: "earring_shaped" + size: + transition: "Assembly" + duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2P/e2-forging-ring.yaml b/config/datasource/goldsmiths-with-WF-2P/e2-forging-ring.yaml new file mode 100644 index 0000000..0672e03 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2P/e2-forging-ring.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "ForgingA" +spec: + name: "ForgingA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "gold" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Forged" + output: + - object: "gold" + number: 1 + change: "ring_shaped" + size: + transition: "ShippingA" + duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2P/e3-assembly.yaml b/config/datasource/goldsmiths-with-WF-2P/e3-assembly.yaml new file mode 100644 index 0000000..b81c92e --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2P/e3-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "Assembly" +spec: + name: "Assembly" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [ 0.9, 0.1 ] + input: + - object: "gold" + number: 2 + lastState: "earring_shaped" + size: + - object: "stone" + number: 2 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "earring" + number: 2 + change: "assembled" + size: + duration: 10 + transition: "ShippingB" + - activity: + name: "Item broke" + output: + - object: "earring" + number: 2 + change: "broke" + size: + transition: "" + duration: 2 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2P/e4-shipping-earring.yaml b/config/datasource/goldsmiths-with-WF-2P/e4-shipping-earring.yaml new file mode 100644 index 0000000..bc8af10 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2P/e4-shipping-earring.yaml @@ -0,0 +1,39 @@ +kind: datasource +name: "ShippingB" +spec: + name: "ShippingB" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 0.8, 0.2 ] + input: + - object: "earring" + number: 2 + lastState: "assembled" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Package waits for sending" + output: + - object: "earring" + number: 2 + change: "assembled" + size: + transition: "Shipping" + duration: 20 + - activity: + name: "Package sent" + output: + - object: "earring" + number: 2 + change: "shipped" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2P/e4-shipping-ring.yaml b/config/datasource/goldsmiths-with-WF-2P/e4-shipping-ring.yaml new file mode 100644 index 0000000..0fa3977 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2P/e4-shipping-ring.yaml @@ -0,0 +1,39 @@ +kind: datasource +name: "ShippingA" +spec: + name: "ShippingA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 0.8, 0.2 ] + input: + - object: "gold" + number: 1 + lastState: "ring_shaped" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Package waits for sending" + output: + - object: "gold" + number: 1 + change: "ring_shaped" + size: + transition: "Shipping" + duration: 20 + - activity: + name: "Package sent" + output: + - object: "gold" + number: 1 + change: "ring_shaped" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2P/earring.yaml b/config/datasource/goldsmiths-with-WF-2P/earring.yaml new file mode 100644 index 0000000..7ebcfcf --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2P/earring.yaml @@ -0,0 +1,11 @@ +kind: object +name: "earring" +spec: + name: "earring" + type: "object" + input: + - object: "order" + number: 1 + lastState: "" + size: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2P/gold.yaml b/config/datasource/goldsmiths-with-WF-2P/gold.yaml new file mode 100644 index 0000000..f499f22 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2P/gold.yaml @@ -0,0 +1,11 @@ +kind: object +name: "gold" +spec: + name: "gold" + type: "object" + input: + - object: "order" + number: 1 + lastState: "" + size: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2P/order.yaml b/config/datasource/goldsmiths-with-WF-2P/order.yaml new file mode 100644 index 0000000..4c946af --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2P/order.yaml @@ -0,0 +1,7 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + input: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2P/resourceOrder.yaml b/config/datasource/goldsmiths-with-WF-2P/resourceOrder.yaml new file mode 100644 index 0000000..cf286e6 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2P/resourceOrder.yaml @@ -0,0 +1,7 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + input: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2P/routing.yaml b/config/datasource/goldsmiths-with-WF-2P/routing.yaml new file mode 100644 index 0000000..9344e4b --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2P/routing.yaml @@ -0,0 +1,46 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + transferObjects: + - name: "barResource" + number: 1 + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "S" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Back to stock" + start: "S" + end: "ST" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "S" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Back to machine" + start: "S" + end: "M" + transferObjects: + - name: "screw" + number: 13 + duration: 3 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2P/stone.yaml b/config/datasource/goldsmiths-with-WF-2P/stone.yaml new file mode 100644 index 0000000..da9d02f --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2P/stone.yaml @@ -0,0 +1,11 @@ +kind: object +name: "stone" +spec: + name: "stone" + type: "object" + input: + - object: "order" + number: 1 + lastState: "" + size: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2P/warehouse_stock.yaml b/config/datasource/goldsmiths-with-WF-2P/warehouse_stock.yaml new file mode 100644 index 0000000..cd43c5f --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2P/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 100 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2P/workforces.yaml b/config/datasource/goldsmiths-with-WF-2P/workforces.yaml new file mode 100644 index 0000000..30a6dcb --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2P/workforces.yaml @@ -0,0 +1,7 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "humanWorkforce" + startLocation: "ST" + number: 3 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF/e0-order.yaml b/config/datasource/goldsmiths-with-WF/e0-order.yaml new file mode 100644 index 0000000..3f31a9f --- /dev/null +++ b/config/datasource/goldsmiths-with-WF/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF/e1-outgoing-stock.yaml b/config/datasource/goldsmiths-with-WF/e1-outgoing-stock.yaml new file mode 100644 index 0000000..ae31c79 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF/e1-outgoing-stock.yaml @@ -0,0 +1,29 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "retrieve resources" + output: + - object: "gold" + number: 1 + change: "" + size: + duration: 3 + transition: "Forging" \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF/e2-forging.yaml b/config/datasource/goldsmiths-with-WF/e2-forging.yaml new file mode 100644 index 0000000..90f89e6 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF/e2-forging.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "Forging" +spec: + name: "Forging" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "gold" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Forged" + output: + - object: "gold" + number: 1 + change: "shaped" + size: + transition: "Shipping" + duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF/e3-shipping.yaml b/config/datasource/goldsmiths-with-WF/e3-shipping.yaml new file mode 100644 index 0000000..1771d01 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF/e3-shipping.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF/gold.yaml b/config/datasource/goldsmiths-with-WF/gold.yaml new file mode 100644 index 0000000..f499f22 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF/gold.yaml @@ -0,0 +1,11 @@ +kind: object +name: "gold" +spec: + name: "gold" + type: "object" + input: + - object: "order" + number: 1 + lastState: "" + size: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF/order.yaml b/config/datasource/goldsmiths-with-WF/order.yaml new file mode 100644 index 0000000..4c946af --- /dev/null +++ b/config/datasource/goldsmiths-with-WF/order.yaml @@ -0,0 +1,7 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + input: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF/resourceOrder.yaml b/config/datasource/goldsmiths-with-WF/resourceOrder.yaml new file mode 100644 index 0000000..cf286e6 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF/resourceOrder.yaml @@ -0,0 +1,7 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + input: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF/routing.yaml b/config/datasource/goldsmiths-with-WF/routing.yaml new file mode 100644 index 0000000..9344e4b --- /dev/null +++ b/config/datasource/goldsmiths-with-WF/routing.yaml @@ -0,0 +1,46 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + transferObjects: + - name: "barResource" + number: 1 + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "S" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Back to stock" + start: "S" + end: "ST" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "S" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Back to machine" + start: "S" + end: "M" + transferObjects: + - name: "screw" + number: 13 + duration: 3 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF/warehouse_stock.yaml b/config/datasource/goldsmiths-with-WF/warehouse_stock.yaml new file mode 100644 index 0000000..cd43c5f --- /dev/null +++ b/config/datasource/goldsmiths-with-WF/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 100 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF/workforces.yaml b/config/datasource/goldsmiths-with-WF/workforces.yaml new file mode 100644 index 0000000..d8948eb --- /dev/null +++ b/config/datasource/goldsmiths-with-WF/workforces.yaml @@ -0,0 +1,7 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "humanWorkforce" + startLocation: "ST" + number: 2 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-2P/e0-order.yaml b/config/datasource/goldsmiths-without-WF-2P/e0-order.yaml new file mode 100644 index 0000000..3f31a9f --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-2P/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-2P/e1-outgoing-stock.yaml b/config/datasource/goldsmiths-without-WF-2P/e1-outgoing-stock.yaml new file mode 100644 index 0000000..6156ca6 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-2P/e1-outgoing-stock.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: genericProbability + distribution: [ 0.5, 0.5 ] + input: + - object: "resourceOrder" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources ring" + output: + - object: "gold" + number: 1 + change: "" + size: + duration: 3 + transition: "ForgingA" + - activity: + name: "retrieve resources earrings" + output: + - object: "gold" + number: 2 + change: "" + size: + - object: "stone" + number: 2 + change: "" + size: + duration: 8 + transition: "ForgingB" \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-2P/e2-forging-earring.yaml b/config/datasource/goldsmiths-without-WF-2P/e2-forging-earring.yaml new file mode 100644 index 0000000..dd49c4c --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-2P/e2-forging-earring.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "ForgingB" +spec: + name: "ForgingB" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "gold" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Forged" + output: + - object: "gold" + number: 1 + change: "earring_shaped" + size: + transition: "Assembly" + duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-2P/e2-forging-ring.yaml b/config/datasource/goldsmiths-without-WF-2P/e2-forging-ring.yaml new file mode 100644 index 0000000..a1b97ee --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-2P/e2-forging-ring.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "ForgingA" +spec: + name: "ForgingA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "gold" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Forged" + output: + - object: "gold" + number: 1 + change: "ring_shaped" + size: + transition: "ShippingA" + duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-2P/e3-assembly.yaml b/config/datasource/goldsmiths-without-WF-2P/e3-assembly.yaml new file mode 100644 index 0000000..b81c92e --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-2P/e3-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "Assembly" +spec: + name: "Assembly" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [ 0.9, 0.1 ] + input: + - object: "gold" + number: 2 + lastState: "earring_shaped" + size: + - object: "stone" + number: 2 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "earring" + number: 2 + change: "assembled" + size: + duration: 10 + transition: "ShippingB" + - activity: + name: "Item broke" + output: + - object: "earring" + number: 2 + change: "broke" + size: + transition: "" + duration: 2 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-2P/e4-shipping-earring.yaml b/config/datasource/goldsmiths-without-WF-2P/e4-shipping-earring.yaml new file mode 100644 index 0000000..0aa70ce --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-2P/e4-shipping-earring.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "ShippingB" +spec: + name: "ShippingB" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 0.8, 0.2 ] + input: + - object: "earring" + number: 2 + lastState: "assembled" + size: + eventData: + - activity: + name: "Package waits for sending" + output: + - object: "earring" + number: 2 + change: "assembled" + size: + transition: "Shipping" + duration: 20 + - activity: + name: "Package sent" + output: + - object: "earring" + number: 2 + change: "shipped" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-2P/e4-shipping-ring.yaml b/config/datasource/goldsmiths-without-WF-2P/e4-shipping-ring.yaml new file mode 100644 index 0000000..a744cd6 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-2P/e4-shipping-ring.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "ShippingA" +spec: + name: "ShippingA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 0.8, 0.2 ] + input: + - object: "gold" + number: 1 + lastState: "ring_shaped" + size: + eventData: + - activity: + name: "Package waits for sending" + output: + - object: "gold" + number: 1 + change: "ring_shaped" + size: + transition: "Shipping" + duration: 20 + - activity: + name: "Package sent" + output: + - object: "gold" + number: 1 + change: "ring_shaped" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-2P/earring.yaml b/config/datasource/goldsmiths-without-WF-2P/earring.yaml new file mode 100644 index 0000000..7ebcfcf --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-2P/earring.yaml @@ -0,0 +1,11 @@ +kind: object +name: "earring" +spec: + name: "earring" + type: "object" + input: + - object: "order" + number: 1 + lastState: "" + size: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-2P/gold.yaml b/config/datasource/goldsmiths-without-WF-2P/gold.yaml new file mode 100644 index 0000000..f499f22 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-2P/gold.yaml @@ -0,0 +1,11 @@ +kind: object +name: "gold" +spec: + name: "gold" + type: "object" + input: + - object: "order" + number: 1 + lastState: "" + size: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-2P/order.yaml b/config/datasource/goldsmiths-without-WF-2P/order.yaml new file mode 100644 index 0000000..4c946af --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-2P/order.yaml @@ -0,0 +1,7 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + input: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-2P/resourceOrder.yaml b/config/datasource/goldsmiths-without-WF-2P/resourceOrder.yaml new file mode 100644 index 0000000..cf286e6 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-2P/resourceOrder.yaml @@ -0,0 +1,7 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + input: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-2P/stone.yaml b/config/datasource/goldsmiths-without-WF-2P/stone.yaml new file mode 100644 index 0000000..da9d02f --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-2P/stone.yaml @@ -0,0 +1,11 @@ +kind: object +name: "stone" +spec: + name: "stone" + type: "object" + input: + - object: "order" + number: 1 + lastState: "" + size: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-2P/warehouse_stock.yaml b/config/datasource/goldsmiths-without-WF-2P/warehouse_stock.yaml new file mode 100644 index 0000000..cd43c5f --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-2P/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 100 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF/e0-order.yaml b/config/datasource/goldsmiths-without-WF/e0-order.yaml new file mode 100644 index 0000000..3f31a9f --- /dev/null +++ b/config/datasource/goldsmiths-without-WF/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF/e1-outgoing-stock.yaml b/config/datasource/goldsmiths-without-WF/e1-outgoing-stock.yaml new file mode 100644 index 0000000..c81339d --- /dev/null +++ b/config/datasource/goldsmiths-without-WF/e1-outgoing-stock.yaml @@ -0,0 +1,26 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "gold" + number: 1 + change: "" + size: + duration: 3 + transition: "Forging" \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF/e2-forging.yaml b/config/datasource/goldsmiths-without-WF/e2-forging.yaml new file mode 100644 index 0000000..6304890 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF/e2-forging.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Forging" +spec: + name: "Forging" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "gold" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Forged" + output: + - object: "gold" + number: 1 + change: "shaped" + size: + transition: "Shipping" + duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF/e3-shipping.yaml b/config/datasource/goldsmiths-without-WF/e3-shipping.yaml new file mode 100644 index 0000000..5e211ae --- /dev/null +++ b/config/datasource/goldsmiths-without-WF/e3-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF/gold.yaml b/config/datasource/goldsmiths-without-WF/gold.yaml new file mode 100644 index 0000000..f499f22 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF/gold.yaml @@ -0,0 +1,11 @@ +kind: object +name: "gold" +spec: + name: "gold" + type: "object" + input: + - object: "order" + number: 1 + lastState: "" + size: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF/order.yaml b/config/datasource/goldsmiths-without-WF/order.yaml new file mode 100644 index 0000000..4c946af --- /dev/null +++ b/config/datasource/goldsmiths-without-WF/order.yaml @@ -0,0 +1,7 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + input: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF/resourceOrder.yaml b/config/datasource/goldsmiths-without-WF/resourceOrder.yaml new file mode 100644 index 0000000..cf286e6 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF/resourceOrder.yaml @@ -0,0 +1,7 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + input: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF/warehouse_stock.yaml b/config/datasource/goldsmiths-without-WF/warehouse_stock.yaml new file mode 100644 index 0000000..cd43c5f --- /dev/null +++ b/config/datasource/goldsmiths-without-WF/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 100 + lastState: + size: \ No newline at end of file From c46ed00b7a4443427a6306de6ecd9044d2200156 Mon Sep 17 00:00:00 2001 From: ulpi Date: Wed, 30 Jul 2025 12:50:18 +0200 Subject: [PATCH 098/124] add statistics and ocel petri net --- .../goldsmiths-with-WF-2P/e3-assembly.yaml | 2 +- .../goldsmiths-without-WF-2P/e3-assembly.yaml | 2 +- config/sink/ocel.yaml | 5 +++ .../provider/sink/ocel/ocel_sink.py | 44 +++++++++++++++++-- .../simulation/countbased.py | 12 +++-- requirements.txt | 2 +- 6 files changed, 57 insertions(+), 10 deletions(-) diff --git a/config/datasource/goldsmiths-with-WF-2P/e3-assembly.yaml b/config/datasource/goldsmiths-with-WF-2P/e3-assembly.yaml index b81c92e..d200888 100644 --- a/config/datasource/goldsmiths-with-WF-2P/e3-assembly.yaml +++ b/config/datasource/goldsmiths-with-WF-2P/e3-assembly.yaml @@ -30,7 +30,7 @@ spec: duration: 10 transition: "ShippingB" - activity: - name: "Item broke" + name: "Failure: Item broke" output: - object: "earring" number: 2 diff --git a/config/datasource/goldsmiths-without-WF-2P/e3-assembly.yaml b/config/datasource/goldsmiths-without-WF-2P/e3-assembly.yaml index b81c92e..d200888 100644 --- a/config/datasource/goldsmiths-without-WF-2P/e3-assembly.yaml +++ b/config/datasource/goldsmiths-without-WF-2P/e3-assembly.yaml @@ -30,7 +30,7 @@ spec: duration: 10 transition: "ShippingB" - activity: - name: "Item broke" + name: "Failure: Item broke" output: - object: "earring" number: 2 diff --git a/config/sink/ocel.yaml b/config/sink/ocel.yaml index 58f3315..ad2672f 100644 --- a/config/sink/ocel.yaml +++ b/config/sink/ocel.yaml @@ -20,6 +20,11 @@ spec: - "TransportM1" - "TransportM1A" - "TransportSA" + - "Forging" + - "ForgingA" + - "ForgingB" + - "ShippingA" + - "ShippingB" - "A" - "B" - "C" diff --git a/distributed_event_factory/provider/sink/ocel/ocel_sink.py b/distributed_event_factory/provider/sink/ocel/ocel_sink.py index b80ba74..fcf6b70 100644 --- a/distributed_event_factory/provider/sink/ocel/ocel_sink.py +++ b/distributed_event_factory/provider/sink/ocel/ocel_sink.py @@ -1,4 +1,5 @@ -from typing import Any, Dict, Collection +from datetime import datetime +from typing import Dict import pm4py from process_mining_core.datastructure.core.event import Event @@ -21,9 +22,19 @@ def __init__(self, id, data_source_ref): self.contentRoot = None self.index = 0 self.object_types = [] + self.input_counter = 0 + self.output_counter = 0 + self.start_time = None + self.end_time = None + self.problem_event_counter = 0 def send(self, event: Event, root, object_sources, object_store) -> None: - # print(event.timestamp) + if self.start_time is None: + self.start_time = event.timestamp + + if "Failure:" in event.activity: + self.problem_event_counter += 1 + if not self.object_types: for object_source in object_sources.values(): if object_source.object_type not in self.object_types: @@ -40,6 +51,8 @@ def send(self, event: Event, root, object_sources, object_store) -> None: for type in self.object_types: input_objects = self.get_objects_of_type(type, event.input, object_store) output_objects = self.get_objects_of_type(type, event.output, object_store) + self.input_counter += len(input_objects) + self.output_counter += len(output_objects) involved_objects = [] for input_object in input_objects: if input_object in output_objects: @@ -52,7 +65,6 @@ def send(self, event: Event, root, object_sources, object_store) -> None: involved_objects.append(output_object) type_objects[type] = involved_objects for type, involved_object in type_objects.items(): - #new_row["ocel:" + type + ":type"] = type new_row[type + "-name"] = ", ".join( [item.name for item in involved_object if item.name is not None]) new_row[type + "-size"] = ", ".join( @@ -68,6 +80,7 @@ def send(self, event: Event, root, object_sources, object_store) -> None: self.rowsList.append(new_row) self.contentRoot = root self.index += 1 + self.end_time = event.timestamp def start_timeframe(self): pass @@ -84,7 +97,30 @@ def end_timeframe(self): object_types=self.object_types, obj_separator=", ", additional_event_attributes=["ocel:node", "ocel:workstation"], additional_object_attributes=type_attributes) - pm4py.algo.discovery.ocel.ocpn.variants.classic.apply(ocel=ocel, parameters=ocel.parameters) + petri_net=pm4py.algo.discovery.ocel.ocpn.variants.classic.apply(ocel=ocel, parameters=ocel.parameters) + #pm4py.visualization.ocel.ocpn.visualizer.apply(ocpn=petri_net).view() ## Install graphviz + pm4py.objects.ocel.exporter.jsonocel.exporter.apply(ocel=ocel, target_path=self.contentRoot + "/ocel.jsonocel") + #pm4py.algo.conformance.alignments.petri_net.variants(obj=df, petri_net=petri_net, initial_marking=None, final_marking=None) + + start_time_dt = datetime.strptime(self.start_time, "%Y-%m-%d %H:%M:%S") + end_time_dt = datetime.strptime(self.end_time, "%Y-%m-%d %H:%M:%S") + + print("time: "+ str(end_time_dt - start_time_dt)) + petri_nety_per_object_type = petri_net.get("petri_nets") + simplicity_nodes = [] + simplicity_transition = [] + for object_type in self.object_types: + petri_type = petri_nety_per_object_type.get(object_type)[0] + if petri_type is not None: + simplicity_nodes.append(len(petri_type.places)) + simplicity_transition.append(len(petri_type.transitions)) + + print("Simplicity nodes: " + str(simplicity_nodes)) + print("Simplicity transitions: " + str(simplicity_transition)) + print("Problems Events: "+ str(self.problem_event_counter)) + print("Input objects per event: "+ str(self.input_counter/self.index)) + print("Output objects per event: "+ str(self.output_counter/self.index)) + def get_objects_of_type(self, type, objects, object_store): objects_of_type = [] diff --git a/distributed_event_factory/simulation/countbased.py b/distributed_event_factory/simulation/countbased.py index 4ad8774..b95a75c 100644 --- a/distributed_event_factory/simulation/countbased.py +++ b/distributed_event_factory/simulation/countbased.py @@ -1,10 +1,8 @@ from distributed_event_factory.provider.data.case_provider import CaseIdProvider from distributed_event_factory.provider.data.count_provider import CountProvider from distributed_event_factory.simulation.abstract_simulation import Simulation -from distributed_event_factory.simulation.process_simulation import ProcessSimulator from simulation.process_simulation_object_centric import ProcessSimulationObjectCentric from simulation.simulator_objects.object_storage import ObjectStorage -from simulation.simulator_objects.workprocessstep import WorkProcessStep class CountBasedSimulation(Simulation): @@ -16,8 +14,13 @@ def __init__(self, simulation_steps: int, case_id_provider: CaseIdProvider, max_ self.sinks = dict() self.max_concurrent_cases = max_concurrent_cases + def end_timeframe(self): + for sink in self.sinks.values(): + sink.end_timeframe() + def run_simulation(self, datasources, sinks, objects, routes, stocks, workforce_start_positions, root, hook=lambda: None): self.setup_datasource_sink_mapping(sinks) + self.sinks = sinks # process_simulator = ProcessSimulator( # case_id_provider=self.case_id_provider, # data_sources=datasources, @@ -34,7 +37,10 @@ def run_simulation(self, datasources, sinks, objects, routes, stocks, workforce_ workforce_start_positions=workforce_start_positions ) - for i in range(200): + for i in range(self.simulation_steps): event, object_store = process_simulator.simulate() self.send_event(event, root, objects, object_store) + self.end_timeframe() hook() + + diff --git a/requirements.txt b/requirements.txt index 7071c6e..66e0e22 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -numpy~=2.1.1 +numpy~=1.26.4 matplotlib~=3.6.2 networkx~=3.0 kafka-python==2.0.2 From 84ab8a9ded448f766f21231d329796b38d84d9a4 Mon Sep 17 00:00:00 2001 From: ulpi Date: Wed, 6 Aug 2025 18:05:48 +0200 Subject: [PATCH 099/124] change example --- .../e4-shipping-earring.yaml | 2 +- .../e4-shipping-ring.yaml | 4 +- .../warehouse_stock.yaml | 2 +- .../board-resource.yaml | 14 ++++++ .../smart-factory-parallel/board.yaml | 17 +++++++ .../smart-factory-parallel/bolt.yaml | 11 +++++ .../e1-outgoing-stock.yaml | 15 +++++- .../e2-sawing-board.yaml | 37 ++++++++++++++ .../e3-drilling-board.yaml | 33 +++++++++++++ .../e4-sanding-Bar.yaml | 2 +- .../e4-sanding-Board.yaml | 33 +++++++++++++ .../smart-factory-parallel/e5-assembly.yaml | 17 ++++++- .../e6-quality-control.yaml | 49 +++++++++++++++++++ .../smart-factory-parallel/e7-shipping.yaml | 6 +-- .../smart-factory-parallel/handoverBar.yaml | 11 +++++ .../t0-stock-to-machine.yaml | 6 +-- .../t1-machine-to-assembly.yaml | 6 +-- .../t1-stock-to-assembly.yaml | 8 +++ .../t1-stock-to-machine.yaml | 40 +++++++++++++++ .../t2-machine-to-assembly.yaml | 40 +++++++++++++++ .../warehouse_stock.yaml | 2 +- .../smart-factory-parallel/workforces.yaml | 2 +- config/simulation/countbased.yaml | 2 +- config/sink/ocel.yaml | 6 +++ .../provider/sink/ocel/ocel_sink.py | 8 +-- .../simulator_objects/object_storage.py | 8 +-- 26 files changed, 353 insertions(+), 28 deletions(-) create mode 100644 config/datasource/smart-factory-parallel/board-resource.yaml create mode 100644 config/datasource/smart-factory-parallel/board.yaml create mode 100644 config/datasource/smart-factory-parallel/bolt.yaml create mode 100644 config/datasource/smart-factory-parallel/e2-sawing-board.yaml create mode 100644 config/datasource/smart-factory-parallel/e3-drilling-board.yaml create mode 100644 config/datasource/smart-factory-parallel/e4-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-parallel/e6-quality-control.yaml create mode 100644 config/datasource/smart-factory-parallel/handoverBar.yaml create mode 100644 config/datasource/smart-factory-parallel/t1-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-parallel/t2-machine-to-assembly.yaml diff --git a/config/datasource/goldsmiths-with-WF-2P/e4-shipping-earring.yaml b/config/datasource/goldsmiths-with-WF-2P/e4-shipping-earring.yaml index bc8af10..5e8f269 100644 --- a/config/datasource/goldsmiths-with-WF-2P/e4-shipping-earring.yaml +++ b/config/datasource/goldsmiths-with-WF-2P/e4-shipping-earring.yaml @@ -9,7 +9,7 @@ spec: end: "S" workstation: "S" selection: genericProbability - distribution: [ 0.8, 0.2 ] + distribution: [ 0.2, 0.8 ] input: - object: "earring" number: 2 diff --git a/config/datasource/goldsmiths-with-WF-2P/e4-shipping-ring.yaml b/config/datasource/goldsmiths-with-WF-2P/e4-shipping-ring.yaml index 0fa3977..8d8cd0f 100644 --- a/config/datasource/goldsmiths-with-WF-2P/e4-shipping-ring.yaml +++ b/config/datasource/goldsmiths-with-WF-2P/e4-shipping-ring.yaml @@ -9,7 +9,7 @@ spec: end: "S" workstation: "S" selection: genericProbability - distribution: [ 0.8, 0.2 ] + distribution: [ 0.2, 0.8 ] input: - object: "gold" number: 1 @@ -33,7 +33,7 @@ spec: output: - object: "gold" number: 1 - change: "ring_shaped" + change: "shipped" size: transition: "" duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2P/warehouse_stock.yaml b/config/datasource/goldsmiths-with-WF-2P/warehouse_stock.yaml index cd43c5f..455a78c 100644 --- a/config/datasource/goldsmiths-with-WF-2P/warehouse_stock.yaml +++ b/config/datasource/goldsmiths-with-WF-2P/warehouse_stock.yaml @@ -3,6 +3,6 @@ name: "default" spec: stocks: - object: "order" - number: 100 + number: 1000 lastState: size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/board-resource.yaml b/config/datasource/smart-factory-parallel/board-resource.yaml new file mode 100644 index 0000000..c7cebaa --- /dev/null +++ b/config/datasource/smart-factory-parallel/board-resource.yaml @@ -0,0 +1,14 @@ +kind: object +name: "boardResource" +spec: + name: "boardResource" + type: "resource" + input: + - object: "order" + number: 1 + lastState: "" + size: + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/board.yaml b/config/datasource/smart-factory-parallel/board.yaml new file mode 100644 index 0000000..1fed704 --- /dev/null +++ b/config/datasource/smart-factory-parallel/board.yaml @@ -0,0 +1,17 @@ +kind: object +name: "board" +spec: + name: "board" + type: "processedResource" + input: + - object: "boardResource" + number: 1 + lastState: "" + size: + length: "" + width: "5" + depth: "5" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/bolt.yaml b/config/datasource/smart-factory-parallel/bolt.yaml new file mode 100644 index 0000000..a4083fd --- /dev/null +++ b/config/datasource/smart-factory-parallel/bolt.yaml @@ -0,0 +1,11 @@ +kind: object +name: "bolt" +spec: + name: "bolt" + type: "smallComponent" + input: + - object: "order" + number: 1 + lastState: "" + size: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml b/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml index a88a2f0..0d87273 100644 --- a/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml +++ b/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml @@ -19,15 +19,26 @@ spec: name: "retrieve resources" output: - object: "barResource" - number: 2 + number: 4 change: "" size: length: "4" width: "" depth: "" + - object: "boardResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" - object: "screw" number: 13 change: "" size: - duration: 3 + - object: "bolt" + number: 13 + change: "" + size: + duration: 13 transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e2-sawing-board.yaml b/config/datasource/smart-factory-parallel/e2-sawing-board.yaml new file mode 100644 index 0000000..a543bcc --- /dev/null +++ b/config/datasource/smart-factory-parallel/e2-sawing-board.yaml @@ -0,0 +1,37 @@ +kind: datasource +name: "SawingBoard" +spec: + name: "SawingBoard" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handover" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Sawed" + output: + - object: "board" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "DrillingBoard" + duration: 8 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e3-drilling-board.yaml b/config/datasource/smart-factory-parallel/e3-drilling-board.yaml new file mode 100644 index 0000000..81dbf2f --- /dev/null +++ b/config/datasource/smart-factory-parallel/e3-drilling-board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "DrillingBoard" +spec: + name: "DrillingBoard" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "D" + end: "D" + workstation: "D" + selection: genericProbability + distribution: [1.0] + input: + - object: "board" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + eventData: + - activity: + name: "Drilled" + output: + - object: "board" + number: 1 + change: "drilled" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoard" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml b/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml index f762faa..c7f4870 100644 --- a/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml +++ b/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml @@ -29,5 +29,5 @@ spec: length: "2" width: "" depth: "" - transition: "TransportM1A" + transition: "TransportM1ABar" duration: 5 diff --git a/config/datasource/smart-factory-parallel/e4-sanding-Board.yaml b/config/datasource/smart-factory-parallel/e4-sanding-Board.yaml new file mode 100644 index 0000000..4235865 --- /dev/null +++ b/config/datasource/smart-factory-parallel/e4-sanding-Board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBoard" +spec: + name: "SandingBoard" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "SA" + end: "SA" + workstation: "SA" + selection: genericProbability + distribution: [1.0] + input: + - object: "board" + number: 1 + lastState: "drilled" + size: + length: "" + width: "5" + depth: "5" + eventData: + - activity: + name: "Sanded board" + output: + - object: "board" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "TransportM1A" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e5-assembly.yaml b/config/datasource/smart-factory-parallel/e5-assembly.yaml index d7e308c..d190f81 100644 --- a/config/datasource/smart-factory-parallel/e5-assembly.yaml +++ b/config/datasource/smart-factory-parallel/e5-assembly.yaml @@ -18,11 +18,26 @@ spec: length: "2" width: "" depth: "" + - object: "board" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" - object: "screw" number: 13 lastState: "" size: + - object: "bolt" + number: 13 + lastState: "" + size: - object: "handover" + number: 2 + lastState: "" + size: + - object: "handoverBar" number: 1 lastState: "" size: @@ -39,7 +54,7 @@ spec: change: "assembled" size: duration: 10 - transition: "Shipping" + transition: "QualityControl" - activity: name: "Overheating" output: diff --git a/config/datasource/smart-factory-parallel/e6-quality-control.yaml b/config/datasource/smart-factory-parallel/e6-quality-control.yaml new file mode 100644 index 0000000..e2f16eb --- /dev/null +++ b/config/datasource/smart-factory-parallel/e6-quality-control.yaml @@ -0,0 +1,49 @@ +kind: datasource +name: "QualityControl" +spec: + name: "QualityControl" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.3, 0.1, 0.6 ] + input: + - object: "woodShelf" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Item Needs Corrections" + output: + - object: "woodShelf" + number: 1 + change: "proofed" + size: + transition: "Shipping" + duration: 22 + - activity: + name: "Quality Insufficient" + output: + - object: "woodShelf" + number: 1 + change: "damaged" + size: + transition: "" + duration: 2 + - activity: + name: "Quality check passed" + output: + - object: "woodShelf" + number: 1 + change: "proofed" + size: + transition: "Shipping" + duration: + type: uniform + lowerBound: 5 + upperBound: 10 + diff --git a/config/datasource/smart-factory-parallel/e7-shipping.yaml b/config/datasource/smart-factory-parallel/e7-shipping.yaml index d4316fc..0a1044f 100644 --- a/config/datasource/smart-factory-parallel/e7-shipping.yaml +++ b/config/datasource/smart-factory-parallel/e7-shipping.yaml @@ -13,7 +13,7 @@ spec: input: - object: "woodShelf" number: 1 - lastState: "assembled" + lastState: "proofed" size: eventData: - activity: @@ -21,7 +21,7 @@ spec: output: - object: "woodShelf" number: 1 - change: "" + change: "proofed" size: transition: "Shipping" duration: 180 @@ -30,7 +30,7 @@ spec: output: - object: "woodShelf" number: 1 - change: "" + change: "sent" size: transition: "" duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/handoverBar.yaml b/config/datasource/smart-factory-parallel/handoverBar.yaml new file mode 100644 index 0000000..e432926 --- /dev/null +++ b/config/datasource/smart-factory-parallel/handoverBar.yaml @@ -0,0 +1,11 @@ +kind: object +name: "handoverBar" +spec: + name: "handoverBar" + type: "transport" + input: + - object: + number: + lastState: + size: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml b/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml index 79b5366..62f51e5 100644 --- a/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml +++ b/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml @@ -1,7 +1,7 @@ kind: datasource -name: "TransportM1" +name: "TransportM1Bar" spec: - name: "TransportM1" + name: "TransportM1Bar" group: "transport" type: objectCentric workforce: hasWorkforce @@ -32,7 +32,7 @@ spec: length: "4" width: "" depth: "" - - object: "handover" + - object: "handoverBar" number: 1 change: "" size: diff --git a/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml b/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml index 907dc58..7f3a7e6 100644 --- a/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml +++ b/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml @@ -1,7 +1,7 @@ kind: datasource -name: "TransportM1A" +name: "TransportM1ABar" spec: - name: "TransportM1A" + name: "TransportM1ABar" group: "transport" type: objectCentric workforce: hasWorkforce @@ -32,7 +32,7 @@ spec: length: "2" width: "" depth: "" - - object: "handover" + - object: "handoverBar" number: 1 change: "" size: diff --git a/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml index e12e3d0..18197d9 100644 --- a/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml +++ b/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml @@ -15,6 +15,10 @@ spec: number: 13 lastState: "" size: + - object: "bolt" + number: 13 + lastState: "" + size: workforces: - workforce: "transportRobot" number: 1 @@ -26,6 +30,10 @@ spec: number: 13 change: "" size: + - object: "bolt" + number: 13 + change: "" + size: - object: "handoverStock" number: 1 change: "" diff --git a/config/datasource/smart-factory-parallel/t1-stock-to-machine.yaml b/config/datasource/smart-factory-parallel/t1-stock-to-machine.yaml new file mode 100644 index 0000000..931f01a --- /dev/null +++ b/config/datasource/smart-factory-parallel/t1-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1" +spec: + name: "TransportM1" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport from stock to M1" + output: + - object: "boardResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handover" + number: 1 + change: "" + size: + transition: "SawingBar" + duration: 10 diff --git a/config/datasource/smart-factory-parallel/t2-machine-to-assembly.yaml b/config/datasource/smart-factory-parallel/t2-machine-to-assembly.yaml new file mode 100644 index 0000000..6557a85 --- /dev/null +++ b/config/datasource/smart-factory-parallel/t2-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1A" +spec: + name: "TransportM1A" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "M" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "board" + number: 3 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport from M1 to assembly" + output: + - object: "board" + number: 3 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "handover" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 10 diff --git a/config/datasource/smart-factory-parallel/warehouse_stock.yaml b/config/datasource/smart-factory-parallel/warehouse_stock.yaml index cd43c5f..455a78c 100644 --- a/config/datasource/smart-factory-parallel/warehouse_stock.yaml +++ b/config/datasource/smart-factory-parallel/warehouse_stock.yaml @@ -3,6 +3,6 @@ name: "default" spec: stocks: - object: "order" - number: 100 + number: 1000 lastState: size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/workforces.yaml b/config/datasource/smart-factory-parallel/workforces.yaml index 5a80ccd..5f56ddc 100644 --- a/config/datasource/smart-factory-parallel/workforces.yaml +++ b/config/datasource/smart-factory-parallel/workforces.yaml @@ -4,7 +4,7 @@ spec: workforces: - name: "transportRobot" startLocation: "ST" - number: 10 + number: 15 - name: "manager" startLocation: "O" number: 1 \ No newline at end of file diff --git a/config/simulation/countbased.yaml b/config/simulation/countbased.yaml index a43bafc..2baf22a 100644 --- a/config/simulation/countbased.yaml +++ b/config/simulation/countbased.yaml @@ -2,6 +2,6 @@ kind: simulation name: countBasedSimulation spec: type: countBased - steps: 100 + steps: 1000 caseId: increasing maxConcurrentCases: 10 \ No newline at end of file diff --git a/config/sink/ocel.yaml b/config/sink/ocel.yaml index ad2672f..e762f11 100644 --- a/config/sink/ocel.yaml +++ b/config/sink/ocel.yaml @@ -18,13 +18,19 @@ spec: - "SandingBar" - "OrderPlacement" - "TransportM1" + - "TransportM1Bar" - "TransportM1A" + - "TransportM1ABar" - "TransportSA" - "Forging" - "ForgingA" - "ForgingB" - "ShippingA" - "ShippingB" + - "SawingBoard" + - "DrillingBoard" + - "SandingBoard" + - "QualityControl" - "A" - "B" - "C" diff --git a/distributed_event_factory/provider/sink/ocel/ocel_sink.py b/distributed_event_factory/provider/sink/ocel/ocel_sink.py index fcf6b70..7c4d760 100644 --- a/distributed_event_factory/provider/sink/ocel/ocel_sink.py +++ b/distributed_event_factory/provider/sink/ocel/ocel_sink.py @@ -105,16 +105,16 @@ def end_timeframe(self): start_time_dt = datetime.strptime(self.start_time, "%Y-%m-%d %H:%M:%S") end_time_dt = datetime.strptime(self.end_time, "%Y-%m-%d %H:%M:%S") - print("time: "+ str(end_time_dt - start_time_dt)) petri_nety_per_object_type = petri_net.get("petri_nets") simplicity_nodes = [] simplicity_transition = [] for object_type in self.object_types: - petri_type = petri_nety_per_object_type.get(object_type)[0] + petri_type = petri_nety_per_object_type.get(object_type) if petri_type is not None: - simplicity_nodes.append(len(petri_type.places)) - simplicity_transition.append(len(petri_type.transitions)) + simplicity_nodes.append(len(petri_type[0].places)) + simplicity_transition.append(len(petri_type[0].transitions)) + print("Time: " + str(end_time_dt - start_time_dt)) print("Simplicity nodes: " + str(simplicity_nodes)) print("Simplicity transitions: " + str(simplicity_transition)) print("Problems Events: "+ str(self.problem_event_counter)) diff --git a/distributed_event_factory/simulation/simulator_objects/object_storage.py b/distributed_event_factory/simulation/simulator_objects/object_storage.py index dec7791..8c77237 100644 --- a/distributed_event_factory/simulation/simulator_objects/object_storage.py +++ b/distributed_event_factory/simulation/simulator_objects/object_storage.py @@ -133,8 +133,8 @@ def get_times_given_object_generates_wanted_object(self, given_size, wanted_size depth_times = None width_times = None length_times = None - if given_size.depth and wanted_size.dept: - depth_times = round(given_size.depth / wanted_size.dept) + if given_size.depth and wanted_size.depth: + depth_times = round(given_size.depth / wanted_size.depth) if given_size.width and wanted_size.width: width_times = round(given_size.width / wanted_size.width) if given_size.length and wanted_size.length: @@ -149,8 +149,8 @@ def get_leftover_size_of_given_object(self, given_size, wanted_size): depth = given_size.depth width = given_size.width length = given_size.length - if given_size.depth and wanted_size.dept: - depth = given_size.depth - (wanted_size.dept * factor) + if given_size.depth and wanted_size.depth: + depth = given_size.depth - (wanted_size.depth * factor) if given_size.width and wanted_size.width: width = given_size.width - (wanted_size.width * factor) if given_size.length and wanted_size.length: From 7c43fb908150f6f2540520b219a955adc451de9c Mon Sep 17 00:00:00 2001 From: ulpi Date: Wed, 6 Aug 2025 18:06:37 +0200 Subject: [PATCH 100/124] bug fix and adding original example --- .../smart-factory-parallel2/bar-resource.yaml | 14 +++++ .../smart-factory-parallel2/bar.yaml | 17 ++++++ .../smart-factory-parallel2/e0-order.yaml | 30 ++++++++++ .../e1-outgoing-stock.yaml | 33 ++++++++++ .../e2-sawing-bar.yaml | 37 ++++++++++++ .../e3-drilling-bar.yaml | 33 ++++++++++ .../e4-sanding-Bar.yaml | 33 ++++++++++ .../smart-factory-parallel2/e5-assembly.yaml | 60 +++++++++++++++++++ .../smart-factory-parallel2/e7-shipping.yaml | 36 +++++++++++ .../smart-factory-parallel2/handover.yaml | 11 ++++ .../handoverStock.yaml | 11 ++++ .../smart-factory-parallel2/order.yaml | 7 +++ .../resourceOrder.yaml | 7 +++ .../smart-factory-parallel2/routing.yaml | 46 ++++++++++++++ .../smart-factory-parallel2/screw.yaml | 11 ++++ .../t0-stock-to-machine.yaml | 40 +++++++++++++ .../t1-machine-to-assembly.yaml | 40 +++++++++++++ .../t1-stock-to-assembly.yaml | 34 +++++++++++ .../warehouse_stock.yaml | 8 +++ .../smart-factory-parallel2/woodShelf.yaml | 15 +++++ .../smart-factory-parallel2/workforces.yaml | 10 ++++ .../provider/sink/ocel/ocel_sink.py | 3 +- .../simulator_objects/object_storage.py | 2 +- 23 files changed, 536 insertions(+), 2 deletions(-) create mode 100644 config/datasource/smart-factory-parallel2/bar-resource.yaml create mode 100644 config/datasource/smart-factory-parallel2/bar.yaml create mode 100644 config/datasource/smart-factory-parallel2/e0-order.yaml create mode 100644 config/datasource/smart-factory-parallel2/e1-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-parallel2/e2-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-parallel2/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-parallel2/e4-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-parallel2/e5-assembly.yaml create mode 100644 config/datasource/smart-factory-parallel2/e7-shipping.yaml create mode 100644 config/datasource/smart-factory-parallel2/handover.yaml create mode 100644 config/datasource/smart-factory-parallel2/handoverStock.yaml create mode 100644 config/datasource/smart-factory-parallel2/order.yaml create mode 100644 config/datasource/smart-factory-parallel2/resourceOrder.yaml create mode 100644 config/datasource/smart-factory-parallel2/routing.yaml create mode 100644 config/datasource/smart-factory-parallel2/screw.yaml create mode 100644 config/datasource/smart-factory-parallel2/t0-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-parallel2/t1-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-parallel2/t1-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-parallel2/warehouse_stock.yaml create mode 100644 config/datasource/smart-factory-parallel2/woodShelf.yaml create mode 100644 config/datasource/smart-factory-parallel2/workforces.yaml diff --git a/config/datasource/smart-factory-parallel2/bar-resource.yaml b/config/datasource/smart-factory-parallel2/bar-resource.yaml new file mode 100644 index 0000000..5d1e61e --- /dev/null +++ b/config/datasource/smart-factory-parallel2/bar-resource.yaml @@ -0,0 +1,14 @@ +kind: object +name: "barResource" +spec: + name: "barResource" + type: "resource" + input: + - object: "order" + number: 1 + lastState: "" + size: + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/bar.yaml b/config/datasource/smart-factory-parallel2/bar.yaml new file mode 100644 index 0000000..0adc313 --- /dev/null +++ b/config/datasource/smart-factory-parallel2/bar.yaml @@ -0,0 +1,17 @@ +kind: object +name: "bar" +spec: + name: "bar" + type: "processedResource" + input: + - object: "barResource" + number: 1 + lastState: "" + size: + length: "5" + width: "" + depth: "" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/e0-order.yaml b/config/datasource/smart-factory-parallel2/e0-order.yaml new file mode 100644 index 0000000..ca7b2e5 --- /dev/null +++ b/config/datasource/smart-factory-parallel2/e0-order.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + workforces: + - workforce: "manager" + number: 1 + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 diff --git a/config/datasource/smart-factory-parallel2/e1-outgoing-stock.yaml b/config/datasource/smart-factory-parallel2/e1-outgoing-stock.yaml new file mode 100644 index 0000000..a88a2f0 --- /dev/null +++ b/config/datasource/smart-factory-parallel2/e1-outgoing-stock.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "screw" + number: 13 + change: "" + size: + duration: 3 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/e2-sawing-bar.yaml b/config/datasource/smart-factory-parallel2/e2-sawing-bar.yaml new file mode 100644 index 0000000..2af6491 --- /dev/null +++ b/config/datasource/smart-factory-parallel2/e2-sawing-bar.yaml @@ -0,0 +1,37 @@ +kind: datasource +name: "SawingBar" +spec: + name: "SawingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "barResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + - object: "handover" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Sawed" + output: + - object: "bar" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBar" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/e3-drilling-bar.yaml b/config/datasource/smart-factory-parallel2/e3-drilling-bar.yaml new file mode 100644 index 0000000..b8b0e4a --- /dev/null +++ b/config/datasource/smart-factory-parallel2/e3-drilling-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "DrillingBar" +spec: + name: "DrillingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "D" + end: "D" + workstation: "D" + selection: genericProbability + distribution: [1.0] + input: + - object: "bar" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Drilled" + output: + - object: "bar" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBar" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/e4-sanding-Bar.yaml b/config/datasource/smart-factory-parallel2/e4-sanding-Bar.yaml new file mode 100644 index 0000000..f762faa --- /dev/null +++ b/config/datasource/smart-factory-parallel2/e4-sanding-Bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBar" +spec: + name: "SandingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "SA" + end: "SA" + workstation: "SA" + selection: genericProbability + distribution: [1.0] + input: + - object: "bar" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Sanded bar" + output: + - object: "bar" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "TransportM1A" + duration: 5 diff --git a/config/datasource/smart-factory-parallel2/e5-assembly.yaml b/config/datasource/smart-factory-parallel2/e5-assembly.yaml new file mode 100644 index 0000000..d7e308c --- /dev/null +++ b/config/datasource/smart-factory-parallel2/e5-assembly.yaml @@ -0,0 +1,60 @@ +kind: datasource +name: "Assembly" +spec: + name: "Assembly" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.8, 0.1, 0.1 ] + input: + - object: "bar" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "screw" + number: 13 + lastState: "" + size: + - object: "handover" + number: 1 + lastState: "" + size: + - object: "handoverStock" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "woodShelf" + number: 1 + change: "assembled" + size: + duration: 10 + transition: "Shipping" + - activity: + name: "Overheating" + output: + - object: "woodShelf" + number: 1 + change: "overheated" + size: + transition: "" + duration: 2 + - activity: + name: "Item broke" + output: + - object: "woodShelf" + number: 1 + change: "broke" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/e7-shipping.yaml b/config/datasource/smart-factory-parallel2/e7-shipping.yaml new file mode 100644 index 0000000..d4316fc --- /dev/null +++ b/config/datasource/smart-factory-parallel2/e7-shipping.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 0.8, 0.2 ] + input: + - object: "woodShelf" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Package waits for sending" + output: + - object: "woodShelf" + number: 1 + change: "" + size: + transition: "Shipping" + duration: 180 + - activity: + name: "Package sent" + output: + - object: "woodShelf" + number: 1 + change: "" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/handover.yaml b/config/datasource/smart-factory-parallel2/handover.yaml new file mode 100644 index 0000000..3bd5a18 --- /dev/null +++ b/config/datasource/smart-factory-parallel2/handover.yaml @@ -0,0 +1,11 @@ +kind: object +name: "handover" +spec: + name: "handover" + type: "transport" + input: + - object: + number: + lastState: + size: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/handoverStock.yaml b/config/datasource/smart-factory-parallel2/handoverStock.yaml new file mode 100644 index 0000000..b860b6b --- /dev/null +++ b/config/datasource/smart-factory-parallel2/handoverStock.yaml @@ -0,0 +1,11 @@ +kind: object +name: "handoverStock" +spec: + name: "handoverStock" + type: "transport" + input: + - object: + number: + lastState: + size: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/order.yaml b/config/datasource/smart-factory-parallel2/order.yaml new file mode 100644 index 0000000..4e843d9 --- /dev/null +++ b/config/datasource/smart-factory-parallel2/order.yaml @@ -0,0 +1,7 @@ +kind: object +name: "order" +spec: + name: "order" + type: "order" + input: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/resourceOrder.yaml b/config/datasource/smart-factory-parallel2/resourceOrder.yaml new file mode 100644 index 0000000..b4207e5 --- /dev/null +++ b/config/datasource/smart-factory-parallel2/resourceOrder.yaml @@ -0,0 +1,7 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "order" + input: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/routing.yaml b/config/datasource/smart-factory-parallel2/routing.yaml new file mode 100644 index 0000000..1c9507b --- /dev/null +++ b/config/datasource/smart-factory-parallel2/routing.yaml @@ -0,0 +1,46 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + transferObjects: + - name: "barResource" + number: 1 + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "A" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "ST" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "A" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Back to machine" + start: "A" + end: "M" + transferObjects: + - name: "screw" + number: 13 + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/screw.yaml b/config/datasource/smart-factory-parallel2/screw.yaml new file mode 100644 index 0000000..cd815cf --- /dev/null +++ b/config/datasource/smart-factory-parallel2/screw.yaml @@ -0,0 +1,11 @@ +kind: object +name: "screw" +spec: + name: "screw" + type: "smallComponent" + input: + - object: "order" + number: 1 + lastState: "" + size: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/t0-stock-to-machine.yaml b/config/datasource/smart-factory-parallel2/t0-stock-to-machine.yaml new file mode 100644 index 0000000..79b5366 --- /dev/null +++ b/config/datasource/smart-factory-parallel2/t0-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1" +spec: + name: "TransportM1" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "barResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport from stock to M1" + output: + - object: "barResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handover" + number: 1 + change: "" + size: + transition: "SawingBar" + duration: 10 diff --git a/config/datasource/smart-factory-parallel2/t1-machine-to-assembly.yaml b/config/datasource/smart-factory-parallel2/t1-machine-to-assembly.yaml new file mode 100644 index 0000000..907dc58 --- /dev/null +++ b/config/datasource/smart-factory-parallel2/t1-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1A" +spec: + name: "TransportM1A" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "M" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "bar" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport from M1 to assembly" + output: + - object: "bar" + number: 4 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "handover" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 10 diff --git a/config/datasource/smart-factory-parallel2/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-parallel2/t1-stock-to-assembly.yaml new file mode 100644 index 0000000..e12e3d0 --- /dev/null +++ b/config/datasource/smart-factory-parallel2/t1-stock-to-assembly.yaml @@ -0,0 +1,34 @@ +kind: datasource +name: "TransportSA" +spec: + name: "TransportSA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw" + number: 13 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport from stock to assembly" + output: + - object: "screw" + number: 13 + change: "" + size: + - object: "handoverStock" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 10 diff --git a/config/datasource/smart-factory-parallel2/warehouse_stock.yaml b/config/datasource/smart-factory-parallel2/warehouse_stock.yaml new file mode 100644 index 0000000..cd43c5f --- /dev/null +++ b/config/datasource/smart-factory-parallel2/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 100 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/woodShelf.yaml b/config/datasource/smart-factory-parallel2/woodShelf.yaml new file mode 100644 index 0000000..483c571 --- /dev/null +++ b/config/datasource/smart-factory-parallel2/woodShelf.yaml @@ -0,0 +1,15 @@ +kind: object +name: "woodShelf" +spec: + name: "woodShelf" + type: "product" + input: + - object: "bar" + number: 4 + lastState: "sanded" + size: + - object: "screw" + number: 13 + lastState: "" + size: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/workforces.yaml b/config/datasource/smart-factory-parallel2/workforces.yaml new file mode 100644 index 0000000..5a80ccd --- /dev/null +++ b/config/datasource/smart-factory-parallel2/workforces.yaml @@ -0,0 +1,10 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "transportRobot" + startLocation: "ST" + number: 10 + - name: "manager" + startLocation: "O" + number: 1 \ No newline at end of file diff --git a/distributed_event_factory/provider/sink/ocel/ocel_sink.py b/distributed_event_factory/provider/sink/ocel/ocel_sink.py index fcf6b70..67ab2e8 100644 --- a/distributed_event_factory/provider/sink/ocel/ocel_sink.py +++ b/distributed_event_factory/provider/sink/ocel/ocel_sink.py @@ -98,7 +98,7 @@ def end_timeframe(self): additional_event_attributes=["ocel:node", "ocel:workstation"], additional_object_attributes=type_attributes) petri_net=pm4py.algo.discovery.ocel.ocpn.variants.classic.apply(ocel=ocel, parameters=ocel.parameters) - #pm4py.visualization.ocel.ocpn.visualizer.apply(ocpn=petri_net).view() ## Install graphviz + pm4py.visualization.ocel.ocpn.visualizer.apply(ocpn=petri_net).view() pm4py.objects.ocel.exporter.jsonocel.exporter.apply(ocel=ocel, target_path=self.contentRoot + "/ocel.jsonocel") #pm4py.algo.conformance.alignments.petri_net.variants(obj=df, petri_net=petri_net, initial_marking=None, final_marking=None) @@ -106,6 +106,7 @@ def end_timeframe(self): end_time_dt = datetime.strptime(self.end_time, "%Y-%m-%d %H:%M:%S") print("time: "+ str(end_time_dt - start_time_dt)) + print("duration: "+ str(datetime.now() - start_time_dt)) petri_nety_per_object_type = petri_net.get("petri_nets") simplicity_nodes = [] simplicity_transition = [] diff --git a/distributed_event_factory/simulation/simulator_objects/object_storage.py b/distributed_event_factory/simulation/simulator_objects/object_storage.py index dec7791..1ac2f01 100644 --- a/distributed_event_factory/simulation/simulator_objects/object_storage.py +++ b/distributed_event_factory/simulation/simulator_objects/object_storage.py @@ -226,7 +226,7 @@ def manage_input_and_output_of_steps(self, input_objects: List[InputObjectProvid outgoing_objects.append(obj) else: return ValueError("Object not found") - outgoing_objects.extend(self.add_output_changed_objects_to_store(ingoing_objects, object_templates, output_objects, + outgoing_objects.extend(self.add_output_changed_objects_to_store(ingoing_objects.copy(), object_templates, output_objects, timestamp)) return ingoing_objects, outgoing_objects From 320d4736923f745b20f4f8841d838ea55e9d0b3a Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 7 Aug 2025 13:40:40 +0200 Subject: [PATCH 101/124] correct scenario goldsmith files and add files for different object type version --- .../goldsmiths-with-WF-2PV2/e0-order.yaml | 27 +++++++++++ .../e1-outgoing-stock.yaml | 43 +++++++++++++++++ .../e2-forging-earring.yaml | 30 ++++++++++++ .../e2-forging-ring.yaml | 30 ++++++++++++ .../goldsmiths-with-WF-2PV2/e3-assembly.yaml | 40 ++++++++++++++++ .../e4-shipping-earring.yaml | 39 ++++++++++++++++ .../e4-shipping-ring.yaml | 39 ++++++++++++++++ .../goldsmiths-with-WF-2PV2/earring.yaml | 11 +++++ .../goldsmiths-with-WF-2PV2/gold.yaml | 11 +++++ .../goldsmiths-with-WF-2PV2/order.yaml | 7 +++ .../resourceOrder.yaml | 7 +++ .../goldsmiths-with-WF-2PV2/routing.yaml | 46 +++++++++++++++++++ .../goldsmiths-with-WF-2PV2/stone.yaml | 11 +++++ .../warehouse_stock.yaml | 8 ++++ .../goldsmiths-with-WF-2PV2/workforces.yaml | 7 +++ .../goldsmiths-with-WF/e3-shipping.yaml | 25 ++++++---- .../goldsmiths-with-WF/warehouse_stock.yaml | 2 +- .../goldsmiths-without-WF/e3-shipping.yaml | 25 ++++++---- .../warehouse_stock.yaml | 2 +- .../provider/sink/ocel/ocel_sink.py | 4 +- 20 files changed, 394 insertions(+), 20 deletions(-) create mode 100644 config/datasource/goldsmiths-with-WF-2PV2/e0-order.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV2/e1-outgoing-stock.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV2/e2-forging-earring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV2/e2-forging-ring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV2/e3-assembly.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV2/e4-shipping-earring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV2/e4-shipping-ring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV2/earring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV2/gold.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV2/order.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV2/routing.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV2/stone.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV2/warehouse_stock.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV2/workforces.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV2/e0-order.yaml b/config/datasource/goldsmiths-with-WF-2PV2/e0-order.yaml new file mode 100644 index 0000000..3f31a9f --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV2/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/e1-outgoing-stock.yaml b/config/datasource/goldsmiths-with-WF-2PV2/e1-outgoing-stock.yaml new file mode 100644 index 0000000..30f3ff7 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV2/e1-outgoing-stock.yaml @@ -0,0 +1,43 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: genericProbability + distribution: [ 0.5, 0.5 ] + input: + - object: "resourceOrder" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "retrieve resources ring" + output: + - object: "gold" + number: 1 + change: "" + size: + duration: 3 + transition: "ForgingA" + - activity: + name: "retrieve resources earrings" + output: + - object: "gold" + number: 2 + change: "" + size: + - object: "stone" + number: 2 + change: "" + size: + duration: 8 + transition: "ForgingB" \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/e2-forging-earring.yaml b/config/datasource/goldsmiths-with-WF-2PV2/e2-forging-earring.yaml new file mode 100644 index 0000000..b9a8e33 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV2/e2-forging-earring.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "ForgingB" +spec: + name: "ForgingB" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "gold" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Forged" + output: + - object: "gold" + number: 1 + change: "earring_shaped" + size: + transition: "Assembly" + duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/e2-forging-ring.yaml b/config/datasource/goldsmiths-with-WF-2PV2/e2-forging-ring.yaml new file mode 100644 index 0000000..0672e03 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV2/e2-forging-ring.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "ForgingA" +spec: + name: "ForgingA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "gold" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Forged" + output: + - object: "gold" + number: 1 + change: "ring_shaped" + size: + transition: "ShippingA" + duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/e3-assembly.yaml b/config/datasource/goldsmiths-with-WF-2PV2/e3-assembly.yaml new file mode 100644 index 0000000..d200888 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV2/e3-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "Assembly" +spec: + name: "Assembly" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [ 0.9, 0.1 ] + input: + - object: "gold" + number: 2 + lastState: "earring_shaped" + size: + - object: "stone" + number: 2 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "earring" + number: 2 + change: "assembled" + size: + duration: 10 + transition: "ShippingB" + - activity: + name: "Failure: Item broke" + output: + - object: "earring" + number: 2 + change: "broke" + size: + transition: "" + duration: 2 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/e4-shipping-earring.yaml b/config/datasource/goldsmiths-with-WF-2PV2/e4-shipping-earring.yaml new file mode 100644 index 0000000..5e8f269 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV2/e4-shipping-earring.yaml @@ -0,0 +1,39 @@ +kind: datasource +name: "ShippingB" +spec: + name: "ShippingB" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 0.2, 0.8 ] + input: + - object: "earring" + number: 2 + lastState: "assembled" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Package waits for sending" + output: + - object: "earring" + number: 2 + change: "assembled" + size: + transition: "Shipping" + duration: 20 + - activity: + name: "Package sent" + output: + - object: "earring" + number: 2 + change: "shipped" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/e4-shipping-ring.yaml b/config/datasource/goldsmiths-with-WF-2PV2/e4-shipping-ring.yaml new file mode 100644 index 0000000..8d8cd0f --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV2/e4-shipping-ring.yaml @@ -0,0 +1,39 @@ +kind: datasource +name: "ShippingA" +spec: + name: "ShippingA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 0.2, 0.8 ] + input: + - object: "gold" + number: 1 + lastState: "ring_shaped" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Package waits for sending" + output: + - object: "gold" + number: 1 + change: "ring_shaped" + size: + transition: "Shipping" + duration: 20 + - activity: + name: "Package sent" + output: + - object: "gold" + number: 1 + change: "shipped" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/earring.yaml b/config/datasource/goldsmiths-with-WF-2PV2/earring.yaml new file mode 100644 index 0000000..e9a25ef --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV2/earring.yaml @@ -0,0 +1,11 @@ +kind: object +name: "earring" +spec: + name: "earring" + type: "earring" + input: + - object: "order" + number: 1 + lastState: "" + size: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/gold.yaml b/config/datasource/goldsmiths-with-WF-2PV2/gold.yaml new file mode 100644 index 0000000..1b3faca --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV2/gold.yaml @@ -0,0 +1,11 @@ +kind: object +name: "gold" +spec: + name: "gold" + type: "ring" + input: + - object: "order" + number: 1 + lastState: "" + size: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/order.yaml b/config/datasource/goldsmiths-with-WF-2PV2/order.yaml new file mode 100644 index 0000000..2587e47 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV2/order.yaml @@ -0,0 +1,7 @@ +kind: object +name: "order" +spec: + name: "order" + type: "ring" + input: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml b/config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml new file mode 100644 index 0000000..013d8c2 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml @@ -0,0 +1,7 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "ring" + input: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/routing.yaml b/config/datasource/goldsmiths-with-WF-2PV2/routing.yaml new file mode 100644 index 0000000..9344e4b --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV2/routing.yaml @@ -0,0 +1,46 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + transferObjects: + - name: "barResource" + number: 1 + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "S" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Back to stock" + start: "S" + end: "ST" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "S" + transferObjects: + - name: "screw" + number: 13 + duration: 3 + - routeForActivity: "Back to machine" + start: "S" + end: "M" + transferObjects: + - name: "screw" + number: 13 + duration: 3 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/stone.yaml b/config/datasource/goldsmiths-with-WF-2PV2/stone.yaml new file mode 100644 index 0000000..1261af3 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV2/stone.yaml @@ -0,0 +1,11 @@ +kind: object +name: "stone" +spec: + name: "stone" + type: "earring" + input: + - object: "order" + number: 1 + lastState: "" + size: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/warehouse_stock.yaml b/config/datasource/goldsmiths-with-WF-2PV2/warehouse_stock.yaml new file mode 100644 index 0000000..455a78c --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV2/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/workforces.yaml b/config/datasource/goldsmiths-with-WF-2PV2/workforces.yaml new file mode 100644 index 0000000..30a6dcb --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV2/workforces.yaml @@ -0,0 +1,7 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "humanWorkforce" + startLocation: "ST" + number: 3 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF/e3-shipping.yaml b/config/datasource/goldsmiths-with-WF/e3-shipping.yaml index 1771d01..0db55aa 100644 --- a/config/datasource/goldsmiths-with-WF/e3-shipping.yaml +++ b/config/datasource/goldsmiths-with-WF/e3-shipping.yaml @@ -9,22 +9,31 @@ spec: end: "S" workstation: "S" selection: genericProbability - distribution: [1.0] + distribution: [0.1, 0.9] input: - - object: "order" + - object: "gold" number: 1 - lastState: "" + lastState: "shaped" size: workforces: - workforce: "humanWorkforce" number: 1 eventData: - activity: - name: "order for resources" + name: "Package waits for sending" output: - - object: "resourceOrder" + - object: "gold" number: 1 - change: "" + change: "shaped" size: - transition: "OutgoingStock" - duration: 0 \ No newline at end of file + transition: "Shipping" + duration: 20 + - activity: + name: "Package sent" + output: + - object: "gold" + number: 1 + change: "shipped" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF/warehouse_stock.yaml b/config/datasource/goldsmiths-with-WF/warehouse_stock.yaml index cd43c5f..455a78c 100644 --- a/config/datasource/goldsmiths-with-WF/warehouse_stock.yaml +++ b/config/datasource/goldsmiths-with-WF/warehouse_stock.yaml @@ -3,6 +3,6 @@ name: "default" spec: stocks: - object: "order" - number: 100 + number: 1000 lastState: size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF/e3-shipping.yaml b/config/datasource/goldsmiths-without-WF/e3-shipping.yaml index 5e211ae..cc0cd64 100644 --- a/config/datasource/goldsmiths-without-WF/e3-shipping.yaml +++ b/config/datasource/goldsmiths-without-WF/e3-shipping.yaml @@ -9,19 +9,28 @@ spec: end: "S" workstation: "S" selection: genericProbability - distribution: [1.0] + distribution: [0.1, 0.9] input: - - object: "order" + - object: "gold" number: 1 - lastState: "" + lastState: "shaped" size: eventData: - activity: - name: "order for resources" + name: "Package waits for sending" output: - - object: "resourceOrder" + - object: "gold" number: 1 - change: "" + change: "shaped" size: - transition: "OutgoingStock" - duration: 0 \ No newline at end of file + transition: "Shipping" + duration: 20 + - activity: + name: "Package sent" + output: + - object: "gold" + number: 1 + change: "shipped" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF/warehouse_stock.yaml b/config/datasource/goldsmiths-without-WF/warehouse_stock.yaml index cd43c5f..455a78c 100644 --- a/config/datasource/goldsmiths-without-WF/warehouse_stock.yaml +++ b/config/datasource/goldsmiths-without-WF/warehouse_stock.yaml @@ -3,6 +3,6 @@ name: "default" spec: stocks: - object: "order" - number: 100 + number: 1000 lastState: size: \ No newline at end of file diff --git a/distributed_event_factory/provider/sink/ocel/ocel_sink.py b/distributed_event_factory/provider/sink/ocel/ocel_sink.py index 172cb24..0904b35 100644 --- a/distributed_event_factory/provider/sink/ocel/ocel_sink.py +++ b/distributed_event_factory/provider/sink/ocel/ocel_sink.py @@ -114,8 +114,8 @@ def end_timeframe(self): simplicity_nodes.append(len(petri_type[0].places)) simplicity_transition.append(len(petri_type[0].transitions)) - print("Time: "+ str(end_time_dt - start_time_dt)) - print("Duration: "+ str(datetime.now() - start_time_dt)) + print("Time: " + str(end_time_dt - start_time_dt)) + print("Duration: " + str(datetime.now() - start_time_dt)) print("Simplicity nodes: " + str(simplicity_nodes)) print("Simplicity transitions: " + str(simplicity_transition)) print("Problems Events: "+ str(self.problem_event_counter)) From f2a79f084064bcabb6306e2db16d7aac2bcb11f5 Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 7 Aug 2025 13:43:52 +0200 Subject: [PATCH 102/124] clean up route configuration --- .../datasource/goldsmiths-with-WF/routing.yaml | 18 ------------------ distributed_event_factory/core/route.py | 8 -------- .../parser/route/route_parser.py | 3 --- 3 files changed, 29 deletions(-) diff --git a/config/datasource/goldsmiths-with-WF/routing.yaml b/config/datasource/goldsmiths-with-WF/routing.yaml index 9344e4b..4647302 100644 --- a/config/datasource/goldsmiths-with-WF/routing.yaml +++ b/config/datasource/goldsmiths-with-WF/routing.yaml @@ -5,42 +5,24 @@ spec: - routeForActivity: "retrieve resources" start: "ST" end: "M" - transferObjects: - - name: "barResource" - number: 1 duration: 3 - routeForActivity: "Sent to assembly station" start: "ST" end: "S" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Back to stock" start: "S" end: "ST" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Back to stock" start: "M" end: "ST" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Sent to assembly station" start: "M" end: "S" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Back to machine" start: "S" end: "M" - transferObjects: - - name: "screw" - number: 13 duration: 3 \ No newline at end of file diff --git a/distributed_event_factory/core/route.py b/distributed_event_factory/core/route.py index 3a58afb..fb6ae8e 100644 --- a/distributed_event_factory/core/route.py +++ b/distributed_event_factory/core/route.py @@ -1,6 +1,3 @@ -from typing import List, Tuple - - class Route: def __init__( @@ -8,14 +5,12 @@ def __init__( route_for_activity: str, start: str, end: str, - transfer_objects: List[Tuple[str, int]], duration: int ): self.route_for_activity = route_for_activity self.start = start self.end = end - self.transfer_objects = transfer_objects self.duration = duration def get_route_for_activity(self): @@ -27,8 +22,5 @@ def get_start(self): def get_end(self): return self.end - def get_transfer_objects(self): - return self.transfer_objects - def get_duration(self): return self.duration \ No newline at end of file diff --git a/distributed_event_factory/parser/route/route_parser.py b/distributed_event_factory/parser/route/route_parser.py index c33d5e7..7fb7c14 100644 --- a/distributed_event_factory/parser/route/route_parser.py +++ b/distributed_event_factory/parser/route/route_parser.py @@ -1,5 +1,3 @@ -from typing import List - from core.route import Route from parser.parser import Parser @@ -19,7 +17,6 @@ def parse(self, config): route_for_activity=route["routeForActivity"], start=route["start"], end=route["end"], - transfer_objects=route["transferObjects"], duration=route["duration"] )) return route_list \ No newline at end of file From 3187aaead8cde37ecda93976c6f2276a3099f9c3 Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 7 Aug 2025 13:58:32 +0200 Subject: [PATCH 103/124] clean up object configuration --- config/datasource/goldsmiths-with-WF/gold.yaml | 5 ----- config/datasource/goldsmiths-with-WF/order.yaml | 1 - .../goldsmiths-with-WF/resourceOrder.yaml | 1 - distributed_event_factory/core/object.py | 7 ------- .../parser/object/object_source_parser.py | 15 --------------- 5 files changed, 29 deletions(-) diff --git a/config/datasource/goldsmiths-with-WF/gold.yaml b/config/datasource/goldsmiths-with-WF/gold.yaml index f499f22..ad33055 100644 --- a/config/datasource/goldsmiths-with-WF/gold.yaml +++ b/config/datasource/goldsmiths-with-WF/gold.yaml @@ -3,9 +3,4 @@ name: "gold" spec: name: "gold" type: "object" - input: - - object: "order" - number: 1 - lastState: "" - size: size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF/order.yaml b/config/datasource/goldsmiths-with-WF/order.yaml index 4c946af..031b156 100644 --- a/config/datasource/goldsmiths-with-WF/order.yaml +++ b/config/datasource/goldsmiths-with-WF/order.yaml @@ -3,5 +3,4 @@ name: "order" spec: name: "order" type: "object" - input: size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF/resourceOrder.yaml b/config/datasource/goldsmiths-with-WF/resourceOrder.yaml index cf286e6..e4e6fa1 100644 --- a/config/datasource/goldsmiths-with-WF/resourceOrder.yaml +++ b/config/datasource/goldsmiths-with-WF/resourceOrder.yaml @@ -3,5 +3,4 @@ name: "resourceOrder" spec: name: "resourceOrder" type: "object" - input: size: \ No newline at end of file diff --git a/distributed_event_factory/core/object.py b/distributed_event_factory/core/object.py index 6cf4c06..46e53db 100644 --- a/distributed_event_factory/core/object.py +++ b/distributed_event_factory/core/object.py @@ -23,15 +23,12 @@ def __init__( self, object_id_name: str, object_type: str, - input_objects: [], size - ): self.values_changed: List[ObjectData] = [] self.object_id_name = object_id_name self.object_id = ObjectId(object_id_name) self.object_type = object_type - self.input_objects = input_objects self.size = size def emit_object(self, id, object_name, timestamp) -> ObjectData: @@ -49,9 +46,6 @@ def get_id(self) -> ObjectId: def get_object_type(self) -> str: return self.object_type - def get_input_objects(self) -> []: - return self.input_objects - def get_size(self): return self.size @@ -66,5 +60,4 @@ def add_change(self, change): def clone(self): return GenericObjectSource(self.object_id_name, self.object_type, - self.input_objects, self.size) diff --git a/distributed_event_factory/parser/object/object_source_parser.py b/distributed_event_factory/parser/object/object_source_parser.py index 1982381..ca7e971 100644 --- a/distributed_event_factory/parser/object/object_source_parser.py +++ b/distributed_event_factory/parser/object/object_source_parser.py @@ -14,27 +14,12 @@ def add_dependency(self, key: str, dependency): pass def parse(self, config): - input_list = [] size_params = None - if config["input"]: - for input in config["input"]: - size_params = None - if input["size"]: - size_params = SizeParamsProvider(width=input["size"]["width"], - depth=input["size"]["depth"], - length=input["size"]["length"]) - input_list.append(InputObjectProvider( - objectName=input["object"], - numberOfObject=input["number"], - lastState=input["lastState"], - size=size_params, - )) if config["size"]: size_params = SizeParamsProvider(length=config["size"]["length"], depth=config["size"]["depth"], width=config["size"]["width"]) return GenericObjectSource( object_id_name=ObjectId(config["name"]), object_type=config["type"], - input_objects=input_list, size=size_params ) From 59c101de3c93de4d17ce79e93a225b1f90bff12d Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 7 Aug 2025 14:08:15 +0200 Subject: [PATCH 104/124] clean up second example objects and routes --- .../smart-factory-parallel/bar-resource.yaml | 5 ----- .../datasource/smart-factory-parallel/bar.yaml | 8 -------- .../smart-factory-parallel/board-resource.yaml | 5 ----- .../smart-factory-parallel/board.yaml | 8 -------- .../smart-factory-parallel/bolt.yaml | 5 ----- .../smart-factory-parallel/handover.yaml | 5 ----- .../smart-factory-parallel/handoverBar.yaml | 5 ----- .../smart-factory-parallel/handoverStock.yaml | 5 ----- .../smart-factory-parallel/order.yaml | 1 - .../smart-factory-parallel/resourceOrder.yaml | 1 - .../smart-factory-parallel/routing.yaml | 18 ------------------ .../smart-factory-parallel/screw.yaml | 5 ----- .../smart-factory-parallel/woodShelf.yaml | 9 --------- 13 files changed, 80 deletions(-) diff --git a/config/datasource/smart-factory-parallel/bar-resource.yaml b/config/datasource/smart-factory-parallel/bar-resource.yaml index 5d1e61e..5959b49 100644 --- a/config/datasource/smart-factory-parallel/bar-resource.yaml +++ b/config/datasource/smart-factory-parallel/bar-resource.yaml @@ -3,11 +3,6 @@ name: "barResource" spec: name: "barResource" type: "resource" - input: - - object: "order" - number: 1 - lastState: "" - size: size: length: "5" width: "" diff --git a/config/datasource/smart-factory-parallel/bar.yaml b/config/datasource/smart-factory-parallel/bar.yaml index 0adc313..e075f62 100644 --- a/config/datasource/smart-factory-parallel/bar.yaml +++ b/config/datasource/smart-factory-parallel/bar.yaml @@ -3,14 +3,6 @@ name: "bar" spec: name: "bar" type: "processedResource" - input: - - object: "barResource" - number: 1 - lastState: "" - size: - length: "5" - width: "" - depth: "" size: length: "2" width: "" diff --git a/config/datasource/smart-factory-parallel/board-resource.yaml b/config/datasource/smart-factory-parallel/board-resource.yaml index c7cebaa..43f93bb 100644 --- a/config/datasource/smart-factory-parallel/board-resource.yaml +++ b/config/datasource/smart-factory-parallel/board-resource.yaml @@ -3,11 +3,6 @@ name: "boardResource" spec: name: "boardResource" type: "resource" - input: - - object: "order" - number: 1 - lastState: "" - size: size: length: "" width: "30" diff --git a/config/datasource/smart-factory-parallel/board.yaml b/config/datasource/smart-factory-parallel/board.yaml index 1fed704..8422765 100644 --- a/config/datasource/smart-factory-parallel/board.yaml +++ b/config/datasource/smart-factory-parallel/board.yaml @@ -3,14 +3,6 @@ name: "board" spec: name: "board" type: "processedResource" - input: - - object: "boardResource" - number: 1 - lastState: "" - size: - length: "" - width: "5" - depth: "5" size: length: width: "5" diff --git a/config/datasource/smart-factory-parallel/bolt.yaml b/config/datasource/smart-factory-parallel/bolt.yaml index a4083fd..2dacd3d 100644 --- a/config/datasource/smart-factory-parallel/bolt.yaml +++ b/config/datasource/smart-factory-parallel/bolt.yaml @@ -3,9 +3,4 @@ name: "bolt" spec: name: "bolt" type: "smallComponent" - input: - - object: "order" - number: 1 - lastState: "" - size: size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/handover.yaml b/config/datasource/smart-factory-parallel/handover.yaml index 3bd5a18..b018412 100644 --- a/config/datasource/smart-factory-parallel/handover.yaml +++ b/config/datasource/smart-factory-parallel/handover.yaml @@ -3,9 +3,4 @@ name: "handover" spec: name: "handover" type: "transport" - input: - - object: - number: - lastState: - size: size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/handoverBar.yaml b/config/datasource/smart-factory-parallel/handoverBar.yaml index e432926..d9add8d 100644 --- a/config/datasource/smart-factory-parallel/handoverBar.yaml +++ b/config/datasource/smart-factory-parallel/handoverBar.yaml @@ -3,9 +3,4 @@ name: "handoverBar" spec: name: "handoverBar" type: "transport" - input: - - object: - number: - lastState: - size: size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/handoverStock.yaml b/config/datasource/smart-factory-parallel/handoverStock.yaml index b860b6b..e444615 100644 --- a/config/datasource/smart-factory-parallel/handoverStock.yaml +++ b/config/datasource/smart-factory-parallel/handoverStock.yaml @@ -3,9 +3,4 @@ name: "handoverStock" spec: name: "handoverStock" type: "transport" - input: - - object: - number: - lastState: - size: size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/order.yaml b/config/datasource/smart-factory-parallel/order.yaml index 4e843d9..f0ae6f9 100644 --- a/config/datasource/smart-factory-parallel/order.yaml +++ b/config/datasource/smart-factory-parallel/order.yaml @@ -3,5 +3,4 @@ name: "order" spec: name: "order" type: "order" - input: size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/resourceOrder.yaml b/config/datasource/smart-factory-parallel/resourceOrder.yaml index b4207e5..435f300 100644 --- a/config/datasource/smart-factory-parallel/resourceOrder.yaml +++ b/config/datasource/smart-factory-parallel/resourceOrder.yaml @@ -3,5 +3,4 @@ name: "resourceOrder" spec: name: "resourceOrder" type: "order" - input: size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/routing.yaml b/config/datasource/smart-factory-parallel/routing.yaml index 1c9507b..1b83480 100644 --- a/config/datasource/smart-factory-parallel/routing.yaml +++ b/config/datasource/smart-factory-parallel/routing.yaml @@ -5,42 +5,24 @@ spec: - routeForActivity: "retrieve resources" start: "ST" end: "M" - transferObjects: - - name: "barResource" - number: 1 duration: 3 - routeForActivity: "Sent to assembly station" start: "ST" end: "A" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Back to stock" start: "A" end: "ST" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Back to stock" start: "M" end: "ST" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Sent to assembly station" start: "M" end: "A" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Back to machine" start: "A" end: "M" - transferObjects: - - name: "screw" - number: 13 duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/screw.yaml b/config/datasource/smart-factory-parallel/screw.yaml index cd815cf..b721d7d 100644 --- a/config/datasource/smart-factory-parallel/screw.yaml +++ b/config/datasource/smart-factory-parallel/screw.yaml @@ -3,9 +3,4 @@ name: "screw" spec: name: "screw" type: "smallComponent" - input: - - object: "order" - number: 1 - lastState: "" - size: size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/woodShelf.yaml b/config/datasource/smart-factory-parallel/woodShelf.yaml index 483c571..f4859dd 100644 --- a/config/datasource/smart-factory-parallel/woodShelf.yaml +++ b/config/datasource/smart-factory-parallel/woodShelf.yaml @@ -3,13 +3,4 @@ name: "woodShelf" spec: name: "woodShelf" type: "product" - input: - - object: "bar" - number: 4 - lastState: "sanded" - size: - - object: "screw" - number: 13 - lastState: "" - size: size: \ No newline at end of file From 632ca0a906a8126ccb17f52095dfc05be5029e7b Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 7 Aug 2025 18:47:14 +0200 Subject: [PATCH 105/124] clean up another example and add another configuration for object types in goldsmith example --- .idea/misc.xml | 2 +- .../goldsmiths-with-WF-2PV2/gold.yaml | 5 --- .../goldsmiths-with-WF-2PV2/order.yaml | 1 - .../resourceOrder.yaml | 1 - .../goldsmiths-with-WF-2PV2/routing.yaml | 18 --------- .../goldsmiths-with-WF-2PV2/stone.yaml | 5 --- .../goldsmiths-with-WF-2PV3/e0-order.yaml | 27 +++++++++++++ .../goldsmiths-with-WF-2PV3/e0a-order.yaml | 27 +++++++++++++ .../e1-outgoing-stock.yaml | 30 ++++++++++++++ .../e1a-outgoing-stock.yaml | 34 ++++++++++++++++ .../e2-forging-earring.yaml | 30 ++++++++++++++ .../e2-forging-ring.yaml | 30 ++++++++++++++ .../goldsmiths-with-WF-2PV3/e3-assembly.yaml | 40 +++++++++++++++++++ .../e4-shipping-earring.yaml | 39 ++++++++++++++++++ .../e4-shipping-ring.yaml | 39 ++++++++++++++++++ .../goldsmiths-with-WF-2PV3/earring.yaml | 6 +++ .../goldsmiths-with-WF-2PV3/earringGold.yaml | 6 +++ .../goldsmiths-with-WF-2PV3/earringOrder.yaml | 6 +++ .../earringResourceOrder.yaml | 6 +++ .../goldsmiths-with-WF-2PV3/ringGold.yaml | 6 +++ .../goldsmiths-with-WF-2PV3/ringOrder.yaml | 6 +++ .../ringResourceOrder.yaml | 6 +++ .../goldsmiths-with-WF-2PV3/routing.yaml | 28 +++++++++++++ .../goldsmiths-with-WF-2PV3/stone.yaml | 6 +++ .../warehouse_stock.yaml | 12 ++++++ .../goldsmiths-with-WF-2PV3/workforces.yaml | 7 ++++ 26 files changed, 392 insertions(+), 31 deletions(-) create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e0-order.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e0a-order.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e1-outgoing-stock.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e1a-outgoing-stock.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e2-forging-earring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e2-forging-ring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e3-assembly.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-earring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-ring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/earring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/earringGold.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/earringOrder.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/earringResourceOrder.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/ringGold.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/ringOrder.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/ringResourceOrder.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/routing.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/stone.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/warehouse_stock.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/workforces.yaml diff --git a/.idea/misc.xml b/.idea/misc.xml index cefd9a2..4aeead5 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,5 +3,5 @@ - + \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/gold.yaml b/config/datasource/goldsmiths-with-WF-2PV2/gold.yaml index 1b3faca..617da49 100644 --- a/config/datasource/goldsmiths-with-WF-2PV2/gold.yaml +++ b/config/datasource/goldsmiths-with-WF-2PV2/gold.yaml @@ -3,9 +3,4 @@ name: "gold" spec: name: "gold" type: "ring" - input: - - object: "order" - number: 1 - lastState: "" - size: size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/order.yaml b/config/datasource/goldsmiths-with-WF-2PV2/order.yaml index 2587e47..38eda64 100644 --- a/config/datasource/goldsmiths-with-WF-2PV2/order.yaml +++ b/config/datasource/goldsmiths-with-WF-2PV2/order.yaml @@ -3,5 +3,4 @@ name: "order" spec: name: "order" type: "ring" - input: size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml b/config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml index 013d8c2..2fc27b8 100644 --- a/config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml +++ b/config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml @@ -3,5 +3,4 @@ name: "resourceOrder" spec: name: "resourceOrder" type: "ring" - input: size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/routing.yaml b/config/datasource/goldsmiths-with-WF-2PV2/routing.yaml index 9344e4b..4647302 100644 --- a/config/datasource/goldsmiths-with-WF-2PV2/routing.yaml +++ b/config/datasource/goldsmiths-with-WF-2PV2/routing.yaml @@ -5,42 +5,24 @@ spec: - routeForActivity: "retrieve resources" start: "ST" end: "M" - transferObjects: - - name: "barResource" - number: 1 duration: 3 - routeForActivity: "Sent to assembly station" start: "ST" end: "S" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Back to stock" start: "S" end: "ST" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Back to stock" start: "M" end: "ST" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Sent to assembly station" start: "M" end: "S" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Back to machine" start: "S" end: "M" - transferObjects: - - name: "screw" - number: 13 duration: 3 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/stone.yaml b/config/datasource/goldsmiths-with-WF-2PV2/stone.yaml index 1261af3..a588a61 100644 --- a/config/datasource/goldsmiths-with-WF-2PV2/stone.yaml +++ b/config/datasource/goldsmiths-with-WF-2PV2/stone.yaml @@ -3,9 +3,4 @@ name: "stone" spec: name: "stone" type: "earring" - input: - - object: "order" - number: 1 - lastState: "" - size: size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e0-order.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e0-order.yaml new file mode 100644 index 0000000..7290f47 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "ringOrder" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "ringResourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e0a-order.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e0a-order.yaml new file mode 100644 index 0000000..b02ae90 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e0a-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacementa" +spec: + name: "OrderPlacementa" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "earringOrder" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "earringResourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStocka" + duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e1-outgoing-stock.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e1-outgoing-stock.yaml new file mode 100644 index 0000000..7e7f254 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e1-outgoing-stock.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: genericProbability + distribution: [ 1 ] + input: + - object: "ringResourceOrder" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "retrieve resources ring" + output: + - object: "ringGold" + number: 1 + change: "" + size: + duration: 3 + transition: "ForgingA" \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e1a-outgoing-stock.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e1a-outgoing-stock.yaml new file mode 100644 index 0000000..4b5f970 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e1a-outgoing-stock.yaml @@ -0,0 +1,34 @@ +kind: datasource +name: "OutgoingStocka" +spec: + name: "OutgoingStocka" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: genericProbability + distribution: [ 1 ] + input: + - object: "earringResourceOrder" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "retrieve resources earrings" + output: + - object: "earringGold" + number: 2 + change: "" + size: + - object: "stone" + number: 2 + change: "" + size: + duration: 8 + transition: "ForgingB" \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-earring.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-earring.yaml new file mode 100644 index 0000000..d0b2d7a --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-earring.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "ForgingB" +spec: + name: "ForgingB" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "earringGold" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Forged" + output: + - object: "earringGold" + number: 1 + change: "earring_shaped" + size: + transition: "Assembly" + duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-ring.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-ring.yaml new file mode 100644 index 0000000..2fde270 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-ring.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "ForgingA" +spec: + name: "ForgingA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "ringGold" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Forged" + output: + - object: "ringGold" + number: 1 + change: "ring_shaped" + size: + transition: "ShippingA" + duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e3-assembly.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e3-assembly.yaml new file mode 100644 index 0000000..311ac05 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e3-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "Assembly" +spec: + name: "Assembly" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [ 0.9, 0.1 ] + input: + - object: "earringGold" + number: 2 + lastState: "earring_shaped" + size: + - object: "stone" + number: 2 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "earring" + number: 2 + change: "assembled" + size: + duration: 10 + transition: "ShippingB" + - activity: + name: "Failure: Item broke" + output: + - object: "earring" + number: 2 + change: "broke" + size: + transition: "" + duration: 2 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-earring.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-earring.yaml new file mode 100644 index 0000000..5e8f269 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-earring.yaml @@ -0,0 +1,39 @@ +kind: datasource +name: "ShippingB" +spec: + name: "ShippingB" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 0.2, 0.8 ] + input: + - object: "earring" + number: 2 + lastState: "assembled" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Package waits for sending" + output: + - object: "earring" + number: 2 + change: "assembled" + size: + transition: "Shipping" + duration: 20 + - activity: + name: "Package sent" + output: + - object: "earring" + number: 2 + change: "shipped" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-ring.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-ring.yaml new file mode 100644 index 0000000..51d0902 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-ring.yaml @@ -0,0 +1,39 @@ +kind: datasource +name: "ShippingA" +spec: + name: "ShippingA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 0.2, 0.8 ] + input: + - object: "ringGold" + number: 1 + lastState: "ring_shaped" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Package waits for sending" + output: + - object: "ringGold" + number: 1 + change: "ring_shaped" + size: + transition: "Shipping" + duration: 20 + - activity: + name: "Package sent" + output: + - object: "ringGold" + number: 1 + change: "shipped" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/earring.yaml b/config/datasource/goldsmiths-with-WF-2PV3/earring.yaml new file mode 100644 index 0000000..30ef150 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/earring.yaml @@ -0,0 +1,6 @@ +kind: object +name: "earring" +spec: + name: "earring" + type: "earring" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/earringGold.yaml b/config/datasource/goldsmiths-with-WF-2PV3/earringGold.yaml new file mode 100644 index 0000000..ee4444c --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/earringGold.yaml @@ -0,0 +1,6 @@ +kind: object +name: "earringGold" +spec: + name: "earringGold" + type: "earring" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/earringOrder.yaml b/config/datasource/goldsmiths-with-WF-2PV3/earringOrder.yaml new file mode 100644 index 0000000..c8ad05a --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/earringOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "earringOrder" +spec: + name: "earringOrder" + type: "earring" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/earringResourceOrder.yaml b/config/datasource/goldsmiths-with-WF-2PV3/earringResourceOrder.yaml new file mode 100644 index 0000000..acb3210 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/earringResourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "earringResourceOrder" +spec: + name: "earringResourceOrder" + type: "earring" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/ringGold.yaml b/config/datasource/goldsmiths-with-WF-2PV3/ringGold.yaml new file mode 100644 index 0000000..bcbdb42 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/ringGold.yaml @@ -0,0 +1,6 @@ +kind: object +name: "ringGold" +spec: + name: "ringGold" + type: "ring" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/ringOrder.yaml b/config/datasource/goldsmiths-with-WF-2PV3/ringOrder.yaml new file mode 100644 index 0000000..b94081d --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/ringOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "ringOrder" +spec: + name: "ringOrder" + type: "ring" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/ringResourceOrder.yaml b/config/datasource/goldsmiths-with-WF-2PV3/ringResourceOrder.yaml new file mode 100644 index 0000000..b5df7f4 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/ringResourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "ringResourceOrder" +spec: + name: "ringResourceOrder" + type: "ring" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/routing.yaml b/config/datasource/goldsmiths-with-WF-2PV3/routing.yaml new file mode 100644 index 0000000..4647302 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/routing.yaml @@ -0,0 +1,28 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "S" + duration: 3 + - routeForActivity: "Back to stock" + start: "S" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "S" + duration: 3 + - routeForActivity: "Back to machine" + start: "S" + end: "M" + duration: 3 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/stone.yaml b/config/datasource/goldsmiths-with-WF-2PV3/stone.yaml new file mode 100644 index 0000000..a588a61 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/stone.yaml @@ -0,0 +1,6 @@ +kind: object +name: "stone" +spec: + name: "stone" + type: "earring" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/warehouse_stock.yaml b/config/datasource/goldsmiths-with-WF-2PV3/warehouse_stock.yaml new file mode 100644 index 0000000..6b12456 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/warehouse_stock.yaml @@ -0,0 +1,12 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "ringOrder" + number: 500 + lastState: + size: + - object: "earringOrder" + number: 500 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/workforces.yaml b/config/datasource/goldsmiths-with-WF-2PV3/workforces.yaml new file mode 100644 index 0000000..30a6dcb --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/workforces.yaml @@ -0,0 +1,7 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "humanWorkforce" + startLocation: "ST" + number: 3 \ No newline at end of file From fe4115a2fee89e1e8b34ce9b064b1071a4228c00 Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 7 Aug 2025 18:52:45 +0200 Subject: [PATCH 106/124] Revert "clean up another example and add another configuration for object types in goldsmith example" This reverts commit 4611a289e416e0eca5fadce4ff5971fe36c1e3e4. --- .idea/misc.xml | 2 +- .../goldsmiths-with-WF-2PV2/gold.yaml | 5 +++ .../goldsmiths-with-WF-2PV2/order.yaml | 1 + .../resourceOrder.yaml | 1 + .../goldsmiths-with-WF-2PV2/routing.yaml | 18 +++++++++ .../goldsmiths-with-WF-2PV2/stone.yaml | 5 +++ .../goldsmiths-with-WF-2PV3/e0-order.yaml | 27 ------------- .../goldsmiths-with-WF-2PV3/e0a-order.yaml | 27 ------------- .../e1-outgoing-stock.yaml | 30 -------------- .../e1a-outgoing-stock.yaml | 34 ---------------- .../e2-forging-earring.yaml | 30 -------------- .../e2-forging-ring.yaml | 30 -------------- .../goldsmiths-with-WF-2PV3/e3-assembly.yaml | 40 ------------------- .../e4-shipping-earring.yaml | 39 ------------------ .../e4-shipping-ring.yaml | 39 ------------------ .../goldsmiths-with-WF-2PV3/earring.yaml | 6 --- .../goldsmiths-with-WF-2PV3/earringGold.yaml | 6 --- .../goldsmiths-with-WF-2PV3/earringOrder.yaml | 6 --- .../earringResourceOrder.yaml | 6 --- .../goldsmiths-with-WF-2PV3/ringGold.yaml | 6 --- .../goldsmiths-with-WF-2PV3/ringOrder.yaml | 6 --- .../ringResourceOrder.yaml | 6 --- .../goldsmiths-with-WF-2PV3/routing.yaml | 28 ------------- .../goldsmiths-with-WF-2PV3/stone.yaml | 6 --- .../warehouse_stock.yaml | 12 ------ .../goldsmiths-with-WF-2PV3/workforces.yaml | 7 ---- 26 files changed, 31 insertions(+), 392 deletions(-) delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e0-order.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e0a-order.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e1-outgoing-stock.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e1a-outgoing-stock.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e2-forging-earring.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e2-forging-ring.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e3-assembly.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-earring.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-ring.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/earring.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/earringGold.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/earringOrder.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/earringResourceOrder.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/ringGold.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/ringOrder.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/ringResourceOrder.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/routing.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/stone.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/warehouse_stock.yaml delete mode 100644 config/datasource/goldsmiths-with-WF-2PV3/workforces.yaml diff --git a/.idea/misc.xml b/.idea/misc.xml index 4aeead5..cefd9a2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,5 +3,5 @@ - + \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/gold.yaml b/config/datasource/goldsmiths-with-WF-2PV2/gold.yaml index 617da49..1b3faca 100644 --- a/config/datasource/goldsmiths-with-WF-2PV2/gold.yaml +++ b/config/datasource/goldsmiths-with-WF-2PV2/gold.yaml @@ -3,4 +3,9 @@ name: "gold" spec: name: "gold" type: "ring" + input: + - object: "order" + number: 1 + lastState: "" + size: size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/order.yaml b/config/datasource/goldsmiths-with-WF-2PV2/order.yaml index 38eda64..2587e47 100644 --- a/config/datasource/goldsmiths-with-WF-2PV2/order.yaml +++ b/config/datasource/goldsmiths-with-WF-2PV2/order.yaml @@ -3,4 +3,5 @@ name: "order" spec: name: "order" type: "ring" + input: size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml b/config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml index 2fc27b8..013d8c2 100644 --- a/config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml +++ b/config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml @@ -3,4 +3,5 @@ name: "resourceOrder" spec: name: "resourceOrder" type: "ring" + input: size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/routing.yaml b/config/datasource/goldsmiths-with-WF-2PV2/routing.yaml index 4647302..9344e4b 100644 --- a/config/datasource/goldsmiths-with-WF-2PV2/routing.yaml +++ b/config/datasource/goldsmiths-with-WF-2PV2/routing.yaml @@ -5,24 +5,42 @@ spec: - routeForActivity: "retrieve resources" start: "ST" end: "M" + transferObjects: + - name: "barResource" + number: 1 duration: 3 - routeForActivity: "Sent to assembly station" start: "ST" end: "S" + transferObjects: + - name: "screw" + number: 13 duration: 3 - routeForActivity: "Back to stock" start: "S" end: "ST" + transferObjects: + - name: "screw" + number: 13 duration: 3 - routeForActivity: "Back to stock" start: "M" end: "ST" + transferObjects: + - name: "screw" + number: 13 duration: 3 - routeForActivity: "Sent to assembly station" start: "M" end: "S" + transferObjects: + - name: "screw" + number: 13 duration: 3 - routeForActivity: "Back to machine" start: "S" end: "M" + transferObjects: + - name: "screw" + number: 13 duration: 3 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/stone.yaml b/config/datasource/goldsmiths-with-WF-2PV2/stone.yaml index a588a61..1261af3 100644 --- a/config/datasource/goldsmiths-with-WF-2PV2/stone.yaml +++ b/config/datasource/goldsmiths-with-WF-2PV2/stone.yaml @@ -3,4 +3,9 @@ name: "stone" spec: name: "stone" type: "earring" + input: + - object: "order" + number: 1 + lastState: "" + size: size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e0-order.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e0-order.yaml deleted file mode 100644 index 7290f47..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/e0-order.yaml +++ /dev/null @@ -1,27 +0,0 @@ -kind: datasource -name: "OrderPlacement" -spec: - name: "OrderPlacement" - group: "factory" - type: objectCentric - workforce: noWorkforce - start: "O" - end: "O" - workstation: "O" - selection: genericProbability - distribution: [1.0] - input: - - object: "ringOrder" - number: 1 - lastState: "" - size: - eventData: - - activity: - name: "order for resources" - output: - - object: "ringResourceOrder" - number: 1 - change: "" - size: - transition: "OutgoingStock" - duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e0a-order.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e0a-order.yaml deleted file mode 100644 index b02ae90..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/e0a-order.yaml +++ /dev/null @@ -1,27 +0,0 @@ -kind: datasource -name: "OrderPlacementa" -spec: - name: "OrderPlacementa" - group: "factory" - type: objectCentric - workforce: noWorkforce - start: "O" - end: "O" - workstation: "O" - selection: genericProbability - distribution: [1.0] - input: - - object: "earringOrder" - number: 1 - lastState: "" - size: - eventData: - - activity: - name: "order for resources" - output: - - object: "earringResourceOrder" - number: 1 - change: "" - size: - transition: "OutgoingStocka" - duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e1-outgoing-stock.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e1-outgoing-stock.yaml deleted file mode 100644 index 7e7f254..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/e1-outgoing-stock.yaml +++ /dev/null @@ -1,30 +0,0 @@ -kind: datasource -name: "OutgoingStock" -spec: - name: "OutgoingStock" - group: "factory" - type: objectCentric - workforce: hasWorkforce - start: "ST" - end: "ST" - workstation: "ST" - selection: genericProbability - distribution: [ 1 ] - input: - - object: "ringResourceOrder" - number: 1 - lastState: "" - size: - workforces: - - workforce: "humanWorkforce" - number: 1 - eventData: - - activity: - name: "retrieve resources ring" - output: - - object: "ringGold" - number: 1 - change: "" - size: - duration: 3 - transition: "ForgingA" \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e1a-outgoing-stock.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e1a-outgoing-stock.yaml deleted file mode 100644 index 4b5f970..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/e1a-outgoing-stock.yaml +++ /dev/null @@ -1,34 +0,0 @@ -kind: datasource -name: "OutgoingStocka" -spec: - name: "OutgoingStocka" - group: "factory" - type: objectCentric - workforce: hasWorkforce - start: "ST" - end: "ST" - workstation: "ST" - selection: genericProbability - distribution: [ 1 ] - input: - - object: "earringResourceOrder" - number: 1 - lastState: "" - size: - workforces: - - workforce: "humanWorkforce" - number: 1 - eventData: - - activity: - name: "retrieve resources earrings" - output: - - object: "earringGold" - number: 2 - change: "" - size: - - object: "stone" - number: 2 - change: "" - size: - duration: 8 - transition: "ForgingB" \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-earring.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-earring.yaml deleted file mode 100644 index d0b2d7a..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-earring.yaml +++ /dev/null @@ -1,30 +0,0 @@ -kind: datasource -name: "ForgingB" -spec: - name: "ForgingB" - group: "factory" - type: objectCentric - workforce: hasWorkforce - start: "M" - end: "M" - workstation: "M" - selection: genericProbability - distribution: [1.0] - input: - - object: "earringGold" - number: 1 - lastState: "" - size: - workforces: - - workforce: "humanWorkforce" - number: 1 - eventData: - - activity: - name: "Forged" - output: - - object: "earringGold" - number: 1 - change: "earring_shaped" - size: - transition: "Assembly" - duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-ring.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-ring.yaml deleted file mode 100644 index 2fde270..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-ring.yaml +++ /dev/null @@ -1,30 +0,0 @@ -kind: datasource -name: "ForgingA" -spec: - name: "ForgingA" - group: "factory" - type: objectCentric - workforce: hasWorkforce - start: "M" - end: "M" - workstation: "M" - selection: genericProbability - distribution: [1.0] - input: - - object: "ringGold" - number: 1 - lastState: "" - size: - workforces: - - workforce: "humanWorkforce" - number: 1 - eventData: - - activity: - name: "Forged" - output: - - object: "ringGold" - number: 1 - change: "ring_shaped" - size: - transition: "ShippingA" - duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e3-assembly.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e3-assembly.yaml deleted file mode 100644 index 311ac05..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/e3-assembly.yaml +++ /dev/null @@ -1,40 +0,0 @@ -kind: datasource -name: "Assembly" -spec: - name: "Assembly" - group: "factory" - type: objectCentric - workforce: noWorkforce - start: "M" - end: "M" - workstation: "M" - selection: genericProbability - distribution: [ 0.9, 0.1 ] - input: - - object: "earringGold" - number: 2 - lastState: "earring_shaped" - size: - - object: "stone" - number: 2 - lastState: "" - size: - eventData: - - activity: - name: "Assembling completed" - output: - - object: "earring" - number: 2 - change: "assembled" - size: - duration: 10 - transition: "ShippingB" - - activity: - name: "Failure: Item broke" - output: - - object: "earring" - number: 2 - change: "broke" - size: - transition: "" - duration: 2 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-earring.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-earring.yaml deleted file mode 100644 index 5e8f269..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-earring.yaml +++ /dev/null @@ -1,39 +0,0 @@ -kind: datasource -name: "ShippingB" -spec: - name: "ShippingB" - group: "factory" - type: objectCentric - workforce: hasWorkforce - start: "S" - end: "S" - workstation: "S" - selection: genericProbability - distribution: [ 0.2, 0.8 ] - input: - - object: "earring" - number: 2 - lastState: "assembled" - size: - workforces: - - workforce: "humanWorkforce" - number: 1 - eventData: - - activity: - name: "Package waits for sending" - output: - - object: "earring" - number: 2 - change: "assembled" - size: - transition: "Shipping" - duration: 20 - - activity: - name: "Package sent" - output: - - object: "earring" - number: 2 - change: "shipped" - size: - transition: "" - duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-ring.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-ring.yaml deleted file mode 100644 index 51d0902..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-ring.yaml +++ /dev/null @@ -1,39 +0,0 @@ -kind: datasource -name: "ShippingA" -spec: - name: "ShippingA" - group: "factory" - type: objectCentric - workforce: hasWorkforce - start: "S" - end: "S" - workstation: "S" - selection: genericProbability - distribution: [ 0.2, 0.8 ] - input: - - object: "ringGold" - number: 1 - lastState: "ring_shaped" - size: - workforces: - - workforce: "humanWorkforce" - number: 1 - eventData: - - activity: - name: "Package waits for sending" - output: - - object: "ringGold" - number: 1 - change: "ring_shaped" - size: - transition: "Shipping" - duration: 20 - - activity: - name: "Package sent" - output: - - object: "ringGold" - number: 1 - change: "shipped" - size: - transition: "" - duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/earring.yaml b/config/datasource/goldsmiths-with-WF-2PV3/earring.yaml deleted file mode 100644 index 30ef150..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/earring.yaml +++ /dev/null @@ -1,6 +0,0 @@ -kind: object -name: "earring" -spec: - name: "earring" - type: "earring" - size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/earringGold.yaml b/config/datasource/goldsmiths-with-WF-2PV3/earringGold.yaml deleted file mode 100644 index ee4444c..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/earringGold.yaml +++ /dev/null @@ -1,6 +0,0 @@ -kind: object -name: "earringGold" -spec: - name: "earringGold" - type: "earring" - size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/earringOrder.yaml b/config/datasource/goldsmiths-with-WF-2PV3/earringOrder.yaml deleted file mode 100644 index c8ad05a..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/earringOrder.yaml +++ /dev/null @@ -1,6 +0,0 @@ -kind: object -name: "earringOrder" -spec: - name: "earringOrder" - type: "earring" - size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/earringResourceOrder.yaml b/config/datasource/goldsmiths-with-WF-2PV3/earringResourceOrder.yaml deleted file mode 100644 index acb3210..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/earringResourceOrder.yaml +++ /dev/null @@ -1,6 +0,0 @@ -kind: object -name: "earringResourceOrder" -spec: - name: "earringResourceOrder" - type: "earring" - size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/ringGold.yaml b/config/datasource/goldsmiths-with-WF-2PV3/ringGold.yaml deleted file mode 100644 index bcbdb42..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/ringGold.yaml +++ /dev/null @@ -1,6 +0,0 @@ -kind: object -name: "ringGold" -spec: - name: "ringGold" - type: "ring" - size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/ringOrder.yaml b/config/datasource/goldsmiths-with-WF-2PV3/ringOrder.yaml deleted file mode 100644 index b94081d..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/ringOrder.yaml +++ /dev/null @@ -1,6 +0,0 @@ -kind: object -name: "ringOrder" -spec: - name: "ringOrder" - type: "ring" - size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/ringResourceOrder.yaml b/config/datasource/goldsmiths-with-WF-2PV3/ringResourceOrder.yaml deleted file mode 100644 index b5df7f4..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/ringResourceOrder.yaml +++ /dev/null @@ -1,6 +0,0 @@ -kind: object -name: "ringResourceOrder" -spec: - name: "ringResourceOrder" - type: "ring" - size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/routing.yaml b/config/datasource/goldsmiths-with-WF-2PV3/routing.yaml deleted file mode 100644 index 4647302..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/routing.yaml +++ /dev/null @@ -1,28 +0,0 @@ -kind: route -name: "default" -spec: - routes: - - routeForActivity: "retrieve resources" - start: "ST" - end: "M" - duration: 3 - - routeForActivity: "Sent to assembly station" - start: "ST" - end: "S" - duration: 3 - - routeForActivity: "Back to stock" - start: "S" - end: "ST" - duration: 3 - - routeForActivity: "Back to stock" - start: "M" - end: "ST" - duration: 3 - - routeForActivity: "Sent to assembly station" - start: "M" - end: "S" - duration: 3 - - routeForActivity: "Back to machine" - start: "S" - end: "M" - duration: 3 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/stone.yaml b/config/datasource/goldsmiths-with-WF-2PV3/stone.yaml deleted file mode 100644 index a588a61..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/stone.yaml +++ /dev/null @@ -1,6 +0,0 @@ -kind: object -name: "stone" -spec: - name: "stone" - type: "earring" - size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/warehouse_stock.yaml b/config/datasource/goldsmiths-with-WF-2PV3/warehouse_stock.yaml deleted file mode 100644 index 6b12456..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/warehouse_stock.yaml +++ /dev/null @@ -1,12 +0,0 @@ -kind: stock -name: "default" -spec: - stocks: - - object: "ringOrder" - number: 500 - lastState: - size: - - object: "earringOrder" - number: 500 - lastState: - size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/workforces.yaml b/config/datasource/goldsmiths-with-WF-2PV3/workforces.yaml deleted file mode 100644 index 30a6dcb..0000000 --- a/config/datasource/goldsmiths-with-WF-2PV3/workforces.yaml +++ /dev/null @@ -1,7 +0,0 @@ -kind: workforces -name: "default" -spec: - workforces: - - name: "humanWorkforce" - startLocation: "ST" - number: 3 \ No newline at end of file From b7ef8336649fed2cedc696ca828b36d64f5edc81 Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 7 Aug 2025 19:01:48 +0200 Subject: [PATCH 107/124] Reapply "clean up another example and add another configuration for object types in goldsmith example" This reverts commit 97f69bd09675ea7081860db1ab67c6d2b5fbbb97. --- .idea/misc.xml | 2 +- .../goldsmiths-with-WF-2PV2/gold.yaml | 5 --- .../goldsmiths-with-WF-2PV2/order.yaml | 1 - .../resourceOrder.yaml | 1 - .../goldsmiths-with-WF-2PV2/routing.yaml | 18 --------- .../goldsmiths-with-WF-2PV2/stone.yaml | 5 --- .../goldsmiths-with-WF-2PV3/e0-order.yaml | 27 +++++++++++++ .../goldsmiths-with-WF-2PV3/e0a-order.yaml | 27 +++++++++++++ .../e1-outgoing-stock.yaml | 30 ++++++++++++++ .../e1a-outgoing-stock.yaml | 34 ++++++++++++++++ .../e2-forging-earring.yaml | 30 ++++++++++++++ .../e2-forging-ring.yaml | 30 ++++++++++++++ .../goldsmiths-with-WF-2PV3/e3-assembly.yaml | 40 +++++++++++++++++++ .../e4-shipping-earring.yaml | 39 ++++++++++++++++++ .../e4-shipping-ring.yaml | 39 ++++++++++++++++++ .../goldsmiths-with-WF-2PV3/earring.yaml | 6 +++ .../goldsmiths-with-WF-2PV3/earringGold.yaml | 6 +++ .../goldsmiths-with-WF-2PV3/earringOrder.yaml | 6 +++ .../earringResourceOrder.yaml | 6 +++ .../goldsmiths-with-WF-2PV3/ringGold.yaml | 6 +++ .../goldsmiths-with-WF-2PV3/ringOrder.yaml | 6 +++ .../ringResourceOrder.yaml | 6 +++ .../goldsmiths-with-WF-2PV3/routing.yaml | 28 +++++++++++++ .../goldsmiths-with-WF-2PV3/stone.yaml | 6 +++ .../warehouse_stock.yaml | 12 ++++++ .../goldsmiths-with-WF-2PV3/workforces.yaml | 7 ++++ 26 files changed, 392 insertions(+), 31 deletions(-) create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e0-order.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e0a-order.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e1-outgoing-stock.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e1a-outgoing-stock.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e2-forging-earring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e2-forging-ring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e3-assembly.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-earring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-ring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/earring.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/earringGold.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/earringOrder.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/earringResourceOrder.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/ringGold.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/ringOrder.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/ringResourceOrder.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/routing.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/stone.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/warehouse_stock.yaml create mode 100644 config/datasource/goldsmiths-with-WF-2PV3/workforces.yaml diff --git a/.idea/misc.xml b/.idea/misc.xml index cefd9a2..4aeead5 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,5 +3,5 @@ - + \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/gold.yaml b/config/datasource/goldsmiths-with-WF-2PV2/gold.yaml index 1b3faca..617da49 100644 --- a/config/datasource/goldsmiths-with-WF-2PV2/gold.yaml +++ b/config/datasource/goldsmiths-with-WF-2PV2/gold.yaml @@ -3,9 +3,4 @@ name: "gold" spec: name: "gold" type: "ring" - input: - - object: "order" - number: 1 - lastState: "" - size: size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/order.yaml b/config/datasource/goldsmiths-with-WF-2PV2/order.yaml index 2587e47..38eda64 100644 --- a/config/datasource/goldsmiths-with-WF-2PV2/order.yaml +++ b/config/datasource/goldsmiths-with-WF-2PV2/order.yaml @@ -3,5 +3,4 @@ name: "order" spec: name: "order" type: "ring" - input: size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml b/config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml index 013d8c2..2fc27b8 100644 --- a/config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml +++ b/config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml @@ -3,5 +3,4 @@ name: "resourceOrder" spec: name: "resourceOrder" type: "ring" - input: size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/routing.yaml b/config/datasource/goldsmiths-with-WF-2PV2/routing.yaml index 9344e4b..4647302 100644 --- a/config/datasource/goldsmiths-with-WF-2PV2/routing.yaml +++ b/config/datasource/goldsmiths-with-WF-2PV2/routing.yaml @@ -5,42 +5,24 @@ spec: - routeForActivity: "retrieve resources" start: "ST" end: "M" - transferObjects: - - name: "barResource" - number: 1 duration: 3 - routeForActivity: "Sent to assembly station" start: "ST" end: "S" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Back to stock" start: "S" end: "ST" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Back to stock" start: "M" end: "ST" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Sent to assembly station" start: "M" end: "S" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Back to machine" start: "S" end: "M" - transferObjects: - - name: "screw" - number: 13 duration: 3 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/stone.yaml b/config/datasource/goldsmiths-with-WF-2PV2/stone.yaml index 1261af3..a588a61 100644 --- a/config/datasource/goldsmiths-with-WF-2PV2/stone.yaml +++ b/config/datasource/goldsmiths-with-WF-2PV2/stone.yaml @@ -3,9 +3,4 @@ name: "stone" spec: name: "stone" type: "earring" - input: - - object: "order" - number: 1 - lastState: "" - size: size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e0-order.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e0-order.yaml new file mode 100644 index 0000000..7290f47 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "ringOrder" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "ringResourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e0a-order.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e0a-order.yaml new file mode 100644 index 0000000..b02ae90 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e0a-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacementa" +spec: + name: "OrderPlacementa" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "earringOrder" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "earringResourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStocka" + duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e1-outgoing-stock.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e1-outgoing-stock.yaml new file mode 100644 index 0000000..7e7f254 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e1-outgoing-stock.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: genericProbability + distribution: [ 1 ] + input: + - object: "ringResourceOrder" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "retrieve resources ring" + output: + - object: "ringGold" + number: 1 + change: "" + size: + duration: 3 + transition: "ForgingA" \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e1a-outgoing-stock.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e1a-outgoing-stock.yaml new file mode 100644 index 0000000..4b5f970 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e1a-outgoing-stock.yaml @@ -0,0 +1,34 @@ +kind: datasource +name: "OutgoingStocka" +spec: + name: "OutgoingStocka" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: genericProbability + distribution: [ 1 ] + input: + - object: "earringResourceOrder" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "retrieve resources earrings" + output: + - object: "earringGold" + number: 2 + change: "" + size: + - object: "stone" + number: 2 + change: "" + size: + duration: 8 + transition: "ForgingB" \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-earring.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-earring.yaml new file mode 100644 index 0000000..d0b2d7a --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-earring.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "ForgingB" +spec: + name: "ForgingB" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "earringGold" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Forged" + output: + - object: "earringGold" + number: 1 + change: "earring_shaped" + size: + transition: "Assembly" + duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-ring.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-ring.yaml new file mode 100644 index 0000000..2fde270 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-ring.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "ForgingA" +spec: + name: "ForgingA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "ringGold" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Forged" + output: + - object: "ringGold" + number: 1 + change: "ring_shaped" + size: + transition: "ShippingA" + duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e3-assembly.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e3-assembly.yaml new file mode 100644 index 0000000..311ac05 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e3-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "Assembly" +spec: + name: "Assembly" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [ 0.9, 0.1 ] + input: + - object: "earringGold" + number: 2 + lastState: "earring_shaped" + size: + - object: "stone" + number: 2 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "earring" + number: 2 + change: "assembled" + size: + duration: 10 + transition: "ShippingB" + - activity: + name: "Failure: Item broke" + output: + - object: "earring" + number: 2 + change: "broke" + size: + transition: "" + duration: 2 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-earring.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-earring.yaml new file mode 100644 index 0000000..5e8f269 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-earring.yaml @@ -0,0 +1,39 @@ +kind: datasource +name: "ShippingB" +spec: + name: "ShippingB" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 0.2, 0.8 ] + input: + - object: "earring" + number: 2 + lastState: "assembled" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Package waits for sending" + output: + - object: "earring" + number: 2 + change: "assembled" + size: + transition: "Shipping" + duration: 20 + - activity: + name: "Package sent" + output: + - object: "earring" + number: 2 + change: "shipped" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-ring.yaml b/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-ring.yaml new file mode 100644 index 0000000..51d0902 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-ring.yaml @@ -0,0 +1,39 @@ +kind: datasource +name: "ShippingA" +spec: + name: "ShippingA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 0.2, 0.8 ] + input: + - object: "ringGold" + number: 1 + lastState: "ring_shaped" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Package waits for sending" + output: + - object: "ringGold" + number: 1 + change: "ring_shaped" + size: + transition: "Shipping" + duration: 20 + - activity: + name: "Package sent" + output: + - object: "ringGold" + number: 1 + change: "shipped" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/earring.yaml b/config/datasource/goldsmiths-with-WF-2PV3/earring.yaml new file mode 100644 index 0000000..30ef150 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/earring.yaml @@ -0,0 +1,6 @@ +kind: object +name: "earring" +spec: + name: "earring" + type: "earring" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/earringGold.yaml b/config/datasource/goldsmiths-with-WF-2PV3/earringGold.yaml new file mode 100644 index 0000000..ee4444c --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/earringGold.yaml @@ -0,0 +1,6 @@ +kind: object +name: "earringGold" +spec: + name: "earringGold" + type: "earring" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/earringOrder.yaml b/config/datasource/goldsmiths-with-WF-2PV3/earringOrder.yaml new file mode 100644 index 0000000..c8ad05a --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/earringOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "earringOrder" +spec: + name: "earringOrder" + type: "earring" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/earringResourceOrder.yaml b/config/datasource/goldsmiths-with-WF-2PV3/earringResourceOrder.yaml new file mode 100644 index 0000000..acb3210 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/earringResourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "earringResourceOrder" +spec: + name: "earringResourceOrder" + type: "earring" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/ringGold.yaml b/config/datasource/goldsmiths-with-WF-2PV3/ringGold.yaml new file mode 100644 index 0000000..bcbdb42 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/ringGold.yaml @@ -0,0 +1,6 @@ +kind: object +name: "ringGold" +spec: + name: "ringGold" + type: "ring" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/ringOrder.yaml b/config/datasource/goldsmiths-with-WF-2PV3/ringOrder.yaml new file mode 100644 index 0000000..b94081d --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/ringOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "ringOrder" +spec: + name: "ringOrder" + type: "ring" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/ringResourceOrder.yaml b/config/datasource/goldsmiths-with-WF-2PV3/ringResourceOrder.yaml new file mode 100644 index 0000000..b5df7f4 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/ringResourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "ringResourceOrder" +spec: + name: "ringResourceOrder" + type: "ring" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/routing.yaml b/config/datasource/goldsmiths-with-WF-2PV3/routing.yaml new file mode 100644 index 0000000..4647302 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/routing.yaml @@ -0,0 +1,28 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "S" + duration: 3 + - routeForActivity: "Back to stock" + start: "S" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "S" + duration: 3 + - routeForActivity: "Back to machine" + start: "S" + end: "M" + duration: 3 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/stone.yaml b/config/datasource/goldsmiths-with-WF-2PV3/stone.yaml new file mode 100644 index 0000000..a588a61 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/stone.yaml @@ -0,0 +1,6 @@ +kind: object +name: "stone" +spec: + name: "stone" + type: "earring" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/warehouse_stock.yaml b/config/datasource/goldsmiths-with-WF-2PV3/warehouse_stock.yaml new file mode 100644 index 0000000..6b12456 --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/warehouse_stock.yaml @@ -0,0 +1,12 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "ringOrder" + number: 500 + lastState: + size: + - object: "earringOrder" + number: 500 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV3/workforces.yaml b/config/datasource/goldsmiths-with-WF-2PV3/workforces.yaml new file mode 100644 index 0000000..30a6dcb --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2PV3/workforces.yaml @@ -0,0 +1,7 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "humanWorkforce" + startLocation: "ST" + number: 3 \ No newline at end of file From a3d0f0f006b73ac5cd5fe8384a6c34d5072e714a Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 8 Aug 2025 15:25:32 +0200 Subject: [PATCH 108/124] revert misc change --- .idea/misc.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 4aeead5..cefd9a2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,5 +3,5 @@ - + \ No newline at end of file From e785a63b972692618a95199f28df9cdf32d22cc6 Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 8 Aug 2025 15:37:17 +0200 Subject: [PATCH 109/124] clean yaml --- config/datasource/goldsmiths-with-WF-2PV2/earring.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/config/datasource/goldsmiths-with-WF-2PV2/earring.yaml b/config/datasource/goldsmiths-with-WF-2PV2/earring.yaml index e9a25ef..30ef150 100644 --- a/config/datasource/goldsmiths-with-WF-2PV2/earring.yaml +++ b/config/datasource/goldsmiths-with-WF-2PV2/earring.yaml @@ -3,9 +3,4 @@ name: "earring" spec: name: "earring" type: "earring" - input: - - object: "order" - number: 1 - lastState: "" - size: size: \ No newline at end of file From 86422ca193a002877772cc04fd55f3d69381f8bf Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 8 Aug 2025 18:15:53 +0200 Subject: [PATCH 110/124] add smart factory configs without WF without defects --- .../bar-resource.yaml | 7 +-- .../smart-factory-1P-withoutDefects/bar.yaml | 9 ++++ .../board-resource.yaml | 7 +-- .../board.yaml | 9 ++++ .../bolt.yaml | 2 +- .../e0-order.yaml | 30 ++++++++++++ .../e1-outgoing-stock.yaml | 44 +++++++++++++++++ .../e2-sawing-bar.yaml | 33 +++++++++++++ .../e2-sawing-board.yaml | 33 +++++++++++++ .../e3-drilling-bar.yaml | 33 +++++++++++++ .../e4-sanding-Bar.yaml | 33 +++++++++++++ .../e4-sanding-Board.yaml | 33 +++++++++++++ .../e5-assembly.yaml | 45 +++++++++++++++++ .../e6-quality-control.yaml | 28 +++++++++++ .../e7-shipping.yaml | 27 ++++++++++ .../order.yaml | 2 +- .../resourceOrder.yaml | 6 +++ .../routing.yaml | 28 +++++++++++ .../screw.yaml | 2 +- .../warehouse_stock.yaml | 8 +++ .../woodShelf.yaml | 6 +++ .../barA-resource.yaml | 9 ++++ .../smart-factory-2P-withoutDefects/barA.yaml | 9 ++++ .../barW-resource.yaml | 9 ++++ .../smart-factory-2P-withoutDefects/barW.yaml | 9 ++++ .../boardA-resource.yaml | 9 ++++ .../boardA.yaml | 9 ++++ .../boardW-resource.yaml | 9 ++++ .../boardW.yaml | 9 ++++ .../e0-order.yaml | 30 ++++++++++++ .../e0a-order.yaml | 30 ++++++++++++ .../e1-outgoing-stock.yaml | 44 +++++++++++++++++ .../e1a-outgoing-stock.yaml | 44 +++++++++++++++++ .../e2-sawing-bar.yaml | 33 +++++++++++++ .../e2-sawing-board.yaml | 33 +++++++++++++ .../e2a-sawing-bar.yaml | 33 +++++++++++++ .../e2a-sawing-board.yaml | 33 +++++++++++++ .../e3-drilling-bar.yaml | 33 +++++++++++++ .../e3a-drilling-bar.yaml | 33 +++++++++++++ .../e4-sanding-Bar.yaml | 33 +++++++++++++ .../e4-sanding-Board.yaml | 33 +++++++++++++ .../e4a-sanding-Bar.yaml | 33 +++++++++++++ .../e4a-sanding-Board.yaml | 33 +++++++++++++ .../e5-assembly.yaml | 45 +++++++++++++++++ .../e5a-assembly.yaml | 45 +++++++++++++++++ .../e6-quality-control.yaml | 28 +++++++++++ .../e6a-quality-control.yaml | 28 +++++++++++ .../e7-shipping.yaml | 27 ++++++++++ .../e7a-shipping.yaml | 27 ++++++++++ .../order1.yaml | 6 +++ .../order2.yaml | 6 +++ .../smart-factory-2P-withoutDefects/pinA.yaml | 6 +++ .../smart-factory-2P-withoutDefects/pinW.yaml | 6 +++ .../resourceOrder1.yaml | 6 +++ .../resourceOrder2.yaml | 6 +++ .../routing.yaml | 28 +++++++++++ .../screw1.yaml | 6 +++ .../screw2.yaml | 6 +++ .../shelf1.yaml | 6 +++ .../shelf2.yaml | 6 +++ .../warehouse_stock.yaml | 12 +++++ .../barA-resource.yaml | 9 ++++ .../barA.yaml | 9 ++++ .../barW-resource.yaml | 9 ++++ .../barW.yaml | 9 ++++ .../boardA-resource.yaml | 9 ++++ .../boardA.yaml | 9 ++++ .../boardW-resource.yaml | 9 ++++ .../boardW.yaml | 9 ++++ .../e0-order.yaml | 30 ++++++++++++ .../e0a-order.yaml | 30 ++++++++++++ .../e1-outgoing-stock.yaml | 44 +++++++++++++++++ .../e1a-outgoing-stock.yaml | 44 +++++++++++++++++ .../e2-sawing-bar.yaml | 33 +++++++++++++ .../e2-sawing-board.yaml | 33 +++++++++++++ .../e2a-sawing-bar.yaml | 33 +++++++++++++ .../e2a-sawing-board.yaml | 33 +++++++++++++ .../e3-drilling-bar.yaml | 33 +++++++++++++ .../e3a-drilling-bar.yaml | 33 +++++++++++++ .../e4-sanding-Bar.yaml | 33 +++++++++++++ .../e4-sanding-Board.yaml | 33 +++++++++++++ .../e4a-sanding-Bar.yaml | 33 +++++++++++++ .../e4a-sanding-Board.yaml | 33 +++++++++++++ .../e5-assembly.yaml | 45 +++++++++++++++++ .../e5a-assembly.yaml | 45 +++++++++++++++++ .../e6-quality-control.yaml | 28 +++++++++++ .../e6a-quality-control.yaml | 28 +++++++++++ .../e7-shipping.yaml | 27 ++++++++++ .../e7a-shipping.yaml | 27 ++++++++++ .../order1.yaml | 6 +++ .../order2.yaml | 6 +++ .../pinA.yaml} | 6 +-- .../pinW.yaml | 6 +++ .../resourceOrder1.yaml | 6 +++ .../resourceOrder2.yaml | 6 +++ .../routing.yaml | 28 +++++++++++ .../screw1.yaml | 6 +++ .../screw2.yaml | 6 +++ .../shelf1.yaml | 6 +++ .../shelf2.yaml | 6 +++ .../warehouse_stock.yaml | 12 +++++ .../barA-resource.yaml | 9 ++++ .../barA.yaml | 9 ++++ .../barW-resource.yaml | 9 ++++ .../barW.yaml | 9 ++++ .../boardA-resource.yaml | 9 ++++ .../boardA.yaml | 9 ++++ .../boardW-resource.yaml | 9 ++++ .../boardW.yaml | 9 ++++ .../e0-order.yaml | 30 ++++++++++++ .../e0a-order.yaml | 30 ++++++++++++ .../e1-outgoing-stock.yaml | 44 +++++++++++++++++ .../e1a-outgoing-stock.yaml | 44 +++++++++++++++++ .../e2-sawing-bar.yaml | 33 +++++++++++++ .../e2-sawing-board.yaml | 33 +++++++++++++ .../e2a-sawing-bar.yaml | 33 +++++++++++++ .../e2a-sawing-board.yaml | 33 +++++++++++++ .../e3-drilling-bar.yaml | 33 +++++++++++++ .../e3a-drilling-bar.yaml | 33 +++++++++++++ .../e4-sanding-Bar.yaml | 33 +++++++++++++ .../e4-sanding-Board.yaml | 33 +++++++++++++ .../e4a-sanding-Bar.yaml | 33 +++++++++++++ .../e4a-sanding-Board.yaml | 33 +++++++++++++ .../e5-assembly.yaml | 45 +++++++++++++++++ .../e5a-assembly.yaml | 45 +++++++++++++++++ .../e6-quality-control.yaml | 28 +++++++++++ .../e6a-quality-control.yaml | 28 +++++++++++ .../e7-shipping.yaml | 27 ++++++++++ .../e7a-shipping.yaml | 27 ++++++++++ .../order1.yaml | 6 +++ .../order2.yaml | 6 +++ .../pinA.yaml | 6 +++ .../pinW.yaml | 6 +++ .../resourceOrder1.yaml | 6 +++ .../resourceOrder2.yaml | 6 +++ .../routing.yaml | 28 +++++++++++ .../screw1.yaml | 6 +++ .../screw2.yaml | 6 +++ .../shelf1.yaml | 6 +++ .../shelf2.yaml | 6 +++ .../warehouse_stock.yaml | 12 +++++ .../barA-resource.yaml | 9 ++++ .../barA.yaml | 9 ++++ .../barW-resource.yaml | 9 ++++ .../barW.yaml | 9 ++++ .../boardA-resource.yaml | 9 ++++ .../boardA.yaml | 9 ++++ .../boardW-resource.yaml | 9 ++++ .../boardW.yaml | 9 ++++ .../e0-order.yaml | 30 ++++++++++++ .../e0a-order.yaml | 30 ++++++++++++ .../e1-outgoing-stock.yaml | 44 +++++++++++++++++ .../e1a-outgoing-stock.yaml | 44 +++++++++++++++++ .../e2-sawing-bar.yaml | 33 +++++++++++++ .../e2-sawing-board.yaml | 33 +++++++++++++ .../e2a-sawing-bar.yaml | 33 +++++++++++++ .../e2a-sawing-board.yaml | 33 +++++++++++++ .../e3-drilling-bar.yaml | 33 +++++++++++++ .../e3a-drilling-bar.yaml | 33 +++++++++++++ .../e4-sanding-Bar.yaml | 33 +++++++++++++ .../e4-sanding-Board.yaml | 33 +++++++++++++ .../e4a-sanding-Bar.yaml | 33 +++++++++++++ .../e4a-sanding-Board.yaml | 33 +++++++++++++ .../e5-assembly.yaml | 45 +++++++++++++++++ .../e5a-assembly.yaml | 45 +++++++++++++++++ .../e6-quality-control.yaml | 28 +++++++++++ .../e6a-quality-control.yaml | 28 +++++++++++ .../e7-shipping.yaml | 27 ++++++++++ .../e7a-shipping.yaml | 27 ++++++++++ .../order1.yaml | 6 +++ .../order2.yaml | 6 +++ .../pinA.yaml | 6 +++ .../pinW.yaml | 6 +++ .../resourceOrder1.yaml | 6 +++ .../resourceOrder2.yaml | 6 +++ .../routing.yaml | 28 +++++++++++ .../screw1.yaml | 6 +++ .../screw2.yaml | 6 +++ .../shelf1.yaml | 6 +++ .../shelf2.yaml | 6 +++ .../warehouse_stock.yaml | 12 +++++ .../smart-factory-parallel2/e5-assembly.yaml | 6 +-- .../e6-quality-control.yaml | 49 +++++++++++++++++++ .../smart-factory-parallel2/e7-shipping.yaml | 6 +-- config/datasource/smart-factory/bar.yaml | 6 --- config/datasource/smart-factory/board.yaml | 6 --- config/datasource/smart-factory/e0-order.yaml | 16 ------ .../smart-factory/e1-outgoing-stock.yaml | 40 --------------- .../smart-factory/e2-goods-delivery.yaml | 25 ---------- .../smart-factory/e2-sawing-bar.yaml | 20 -------- .../smart-factory/e2-sawing-board.yaml | 20 -------- .../smart-factory/e3-drilling-bar.yaml | 20 -------- .../smart-factory/e3-drilling-board.yaml | 20 -------- .../smart-factory/e4-sanding-Bar.yaml | 20 -------- .../smart-factory/e4-sanding-Board.yaml | 20 -------- .../datasource/smart-factory/e5-assembly.yaml | 40 --------------- .../smart-factory/e6-quality-control.yaml | 35 ------------- .../datasource/smart-factory/e7-shipping.yaml | 22 --------- .../datasource/smart-factory/woodShelf.yaml | 6 --- config/sink/ocel.yaml | 21 +++++++- 200 files changed, 3888 insertions(+), 335 deletions(-) rename config/datasource/{smart-factory => smart-factory-1P-withoutDefects}/bar-resource.yaml (61%) create mode 100644 config/datasource/smart-factory-1P-withoutDefects/bar.yaml rename config/datasource/{smart-factory => smart-factory-1P-withoutDefects}/board-resource.yaml (60%) create mode 100644 config/datasource/smart-factory-1P-withoutDefects/board.yaml rename config/datasource/{smart-factory => smart-factory-1P-withoutDefects}/bolt.yaml (81%) create mode 100644 config/datasource/smart-factory-1P-withoutDefects/e0-order.yaml create mode 100644 config/datasource/smart-factory-1P-withoutDefects/e1-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-1P-withoutDefects/e2-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-1P-withoutDefects/e2-sawing-board.yaml create mode 100644 config/datasource/smart-factory-1P-withoutDefects/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-1P-withoutDefects/e4-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-1P-withoutDefects/e4-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-1P-withoutDefects/e5-assembly.yaml create mode 100644 config/datasource/smart-factory-1P-withoutDefects/e6-quality-control.yaml create mode 100644 config/datasource/smart-factory-1P-withoutDefects/e7-shipping.yaml rename config/datasource/{smart-factory => smart-factory-1P-withoutDefects}/order.yaml (85%) create mode 100644 config/datasource/smart-factory-1P-withoutDefects/resourceOrder.yaml create mode 100644 config/datasource/smart-factory-1P-withoutDefects/routing.yaml rename config/datasource/{smart-factory => smart-factory-1P-withoutDefects}/screw.yaml (82%) create mode 100644 config/datasource/smart-factory-1P-withoutDefects/warehouse_stock.yaml create mode 100644 config/datasource/smart-factory-1P-withoutDefects/woodShelf.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/barA-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/barA.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/barW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/barW.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/boardA-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/boardA.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/boardW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/boardW.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e0-order.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e0a-order.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e1-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e1a-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e2-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e2-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e2a-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e2a-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e3a-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e4-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e4-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e4a-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e4a-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e5-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e5a-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e6-quality-control.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e6a-quality-control.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e7-shipping.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/e7a-shipping.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/order1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/order2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/pinA.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/pinW.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/resourceOrder1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/resourceOrder2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/routing.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/screw1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/screw2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/shelf1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/shelf2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects/warehouse_stock.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/barA-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/barA.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/barW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/barW.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/boardA-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/boardA.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/boardW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/boardW.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e0-order.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e0a-order.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e1-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e1a-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e2-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e2-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e2a-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e2a-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e3a-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e4-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e4-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e4a-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e4a-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e5-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e5a-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e6-quality-control.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e6a-quality-control.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e7-shipping.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/e7a-shipping.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/order1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/order2.yaml rename config/datasource/{smart-factory/pin.yaml => smart-factory-2P-withoutDefects2/pinA.yaml} (51%) create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/pinW.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/resourceOrder1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/resourceOrder2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/routing.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/screw1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/screw2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/shelf1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/shelf2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects2/warehouse_stock.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/barA-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/barA.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/barW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/barW.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/boardA-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/boardA.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/boardW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/boardW.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e0-order.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e0a-order.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e1-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e1a-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e2-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e2-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e2a-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e2a-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e3a-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e4-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e4-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e4a-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e4a-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e5-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e5a-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e6-quality-control.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e6a-quality-control.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e7-shipping.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/e7a-shipping.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/order1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/order2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/pinA.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/pinW.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/resourceOrder1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/resourceOrder2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/routing.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/screw1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/screw2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/shelf1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/shelf2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects3/warehouse_stock.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/barA-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/barA.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/barW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/barW.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/boardA-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/boardA.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/boardW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/boardW.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e0-order.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e0a-order.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e1-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e1a-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e2-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e2-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e2a-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e2a-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e3a-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e4-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e4-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e4a-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e4a-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e5-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e5a-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e6-quality-control.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e6a-quality-control.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e7-shipping.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/e7a-shipping.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/order1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/order2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/pinA.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/pinW.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/resourceOrder1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/resourceOrder2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/routing.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/screw1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/screw2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/shelf1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/shelf2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects4/warehouse_stock.yaml create mode 100644 config/datasource/smart-factory-parallel2/e6-quality-control.yaml delete mode 100644 config/datasource/smart-factory/bar.yaml delete mode 100644 config/datasource/smart-factory/board.yaml delete mode 100644 config/datasource/smart-factory/e0-order.yaml delete mode 100644 config/datasource/smart-factory/e1-outgoing-stock.yaml delete mode 100644 config/datasource/smart-factory/e2-goods-delivery.yaml delete mode 100644 config/datasource/smart-factory/e2-sawing-bar.yaml delete mode 100644 config/datasource/smart-factory/e2-sawing-board.yaml delete mode 100644 config/datasource/smart-factory/e3-drilling-bar.yaml delete mode 100644 config/datasource/smart-factory/e3-drilling-board.yaml delete mode 100644 config/datasource/smart-factory/e4-sanding-Bar.yaml delete mode 100644 config/datasource/smart-factory/e4-sanding-Board.yaml delete mode 100644 config/datasource/smart-factory/e5-assembly.yaml delete mode 100644 config/datasource/smart-factory/e6-quality-control.yaml delete mode 100644 config/datasource/smart-factory/e7-shipping.yaml delete mode 100644 config/datasource/smart-factory/woodShelf.yaml diff --git a/config/datasource/smart-factory/bar-resource.yaml b/config/datasource/smart-factory-1P-withoutDefects/bar-resource.yaml similarity index 61% rename from config/datasource/smart-factory/bar-resource.yaml rename to config/datasource/smart-factory-1P-withoutDefects/bar-resource.yaml index 6656856..5959b49 100644 --- a/config/datasource/smart-factory/bar-resource.yaml +++ b/config/datasource/smart-factory-1P-withoutDefects/bar-resource.yaml @@ -3,6 +3,7 @@ name: "barResource" spec: name: "barResource" type: "resource" - input: "order" - length: "5" - width: "" \ No newline at end of file + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withoutDefects/bar.yaml b/config/datasource/smart-factory-1P-withoutDefects/bar.yaml new file mode 100644 index 0000000..e075f62 --- /dev/null +++ b/config/datasource/smart-factory-1P-withoutDefects/bar.yaml @@ -0,0 +1,9 @@ +kind: object +name: "bar" +spec: + name: "bar" + type: "processedResource" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory/board-resource.yaml b/config/datasource/smart-factory-1P-withoutDefects/board-resource.yaml similarity index 60% rename from config/datasource/smart-factory/board-resource.yaml rename to config/datasource/smart-factory-1P-withoutDefects/board-resource.yaml index ec37d0d..43f93bb 100644 --- a/config/datasource/smart-factory/board-resource.yaml +++ b/config/datasource/smart-factory-1P-withoutDefects/board-resource.yaml @@ -3,6 +3,7 @@ name: "boardResource" spec: name: "boardResource" type: "resource" - input: "order" - length: "5" - width: "5" \ No newline at end of file + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withoutDefects/board.yaml b/config/datasource/smart-factory-1P-withoutDefects/board.yaml new file mode 100644 index 0000000..8422765 --- /dev/null +++ b/config/datasource/smart-factory-1P-withoutDefects/board.yaml @@ -0,0 +1,9 @@ +kind: object +name: "board" +spec: + name: "board" + type: "processedResource" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory/bolt.yaml b/config/datasource/smart-factory-1P-withoutDefects/bolt.yaml similarity index 81% rename from config/datasource/smart-factory/bolt.yaml rename to config/datasource/smart-factory-1P-withoutDefects/bolt.yaml index 482d079..2dacd3d 100644 --- a/config/datasource/smart-factory/bolt.yaml +++ b/config/datasource/smart-factory-1P-withoutDefects/bolt.yaml @@ -3,4 +3,4 @@ name: "bolt" spec: name: "bolt" type: "smallComponent" - input: "order" \ No newline at end of file + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withoutDefects/e0-order.yaml b/config/datasource/smart-factory-1P-withoutDefects/e0-order.yaml new file mode 100644 index 0000000..ca7b2e5 --- /dev/null +++ b/config/datasource/smart-factory-1P-withoutDefects/e0-order.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + workforces: + - workforce: "manager" + number: 1 + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 diff --git a/config/datasource/smart-factory-1P-withoutDefects/e1-outgoing-stock.yaml b/config/datasource/smart-factory-1P-withoutDefects/e1-outgoing-stock.yaml new file mode 100644 index 0000000..49cb60f --- /dev/null +++ b/config/datasource/smart-factory-1P-withoutDefects/e1-outgoing-stock.yaml @@ -0,0 +1,44 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw" + number: 13 + change: "" + size: + - object: "bolt" + number: 13 + change: "" + size: + duration: 5 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withoutDefects/e2-sawing-bar.yaml b/config/datasource/smart-factory-1P-withoutDefects/e2-sawing-bar.yaml new file mode 100644 index 0000000..3c4b48c --- /dev/null +++ b/config/datasource/smart-factory-1P-withoutDefects/e2-sawing-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBar" +spec: + name: "SawingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "barResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + eventData: + - activity: + name: "Sawed" + output: + - object: "bar" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBar" + duration: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withoutDefects/e2-sawing-board.yaml b/config/datasource/smart-factory-1P-withoutDefects/e2-sawing-board.yaml new file mode 100644 index 0000000..70fbbf9 --- /dev/null +++ b/config/datasource/smart-factory-1P-withoutDefects/e2-sawing-board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBoard" +spec: + name: "SawingBoard" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + eventData: + - activity: + name: "Sawed" + output: + - object: "board" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoard" + duration: 9 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withoutDefects/e3-drilling-bar.yaml b/config/datasource/smart-factory-1P-withoutDefects/e3-drilling-bar.yaml new file mode 100644 index 0000000..b772c85 --- /dev/null +++ b/config/datasource/smart-factory-1P-withoutDefects/e3-drilling-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "DrillingBar" +spec: + name: "DrillingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "D" + end: "D" + workstation: "D" + selection: genericProbability + distribution: [1.0] + input: + - object: "bar" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Drilled" + output: + - object: "bar" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBar" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withoutDefects/e4-sanding-Bar.yaml b/config/datasource/smart-factory-1P-withoutDefects/e4-sanding-Bar.yaml new file mode 100644 index 0000000..c33fd6c --- /dev/null +++ b/config/datasource/smart-factory-1P-withoutDefects/e4-sanding-Bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBar" +spec: + name: "SandingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "SA" + end: "SA" + workstation: "SA" + selection: genericProbability + distribution: [1.0] + input: + - object: "bar" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Sanded bar" + output: + - object: "bar" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "TransportM1A" + duration: 2 diff --git a/config/datasource/smart-factory-1P-withoutDefects/e4-sanding-Board.yaml b/config/datasource/smart-factory-1P-withoutDefects/e4-sanding-Board.yaml new file mode 100644 index 0000000..07fab9d --- /dev/null +++ b/config/datasource/smart-factory-1P-withoutDefects/e4-sanding-Board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBoard" +spec: + name: "SandingBoard" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "SA" + end: "SA" + workstation: "SA" + selection: genericProbability + distribution: [1.0] + input: + - object: "board" + number: 1 + lastState: "drilled" + size: + length: "" + width: "5" + depth: "5" + eventData: + - activity: + name: "Sanded board" + output: + - object: "board" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "TransportM1A" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withoutDefects/e5-assembly.yaml b/config/datasource/smart-factory-1P-withoutDefects/e5-assembly.yaml new file mode 100644 index 0000000..94e23bf --- /dev/null +++ b/config/datasource/smart-factory-1P-withoutDefects/e5-assembly.yaml @@ -0,0 +1,45 @@ +kind: datasource +name: "Assembly" +spec: + name: "Assembly" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "bar" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "board" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw" + number: 13 + lastState: "" + size: + - object: "bolt" + number: 13 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "woodShelf" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withoutDefects/e6-quality-control.yaml b/config/datasource/smart-factory-1P-withoutDefects/e6-quality-control.yaml new file mode 100644 index 0000000..6ca7909 --- /dev/null +++ b/config/datasource/smart-factory-1P-withoutDefects/e6-quality-control.yaml @@ -0,0 +1,28 @@ +kind: datasource +name: "QualityControl" +spec: + name: "QualityControl" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "woodShelf" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "woodShelf" + number: 1 + change: "proofed" + size: + transition: "Shipping" + duration: 2 + diff --git a/config/datasource/smart-factory-1P-withoutDefects/e7-shipping.yaml b/config/datasource/smart-factory-1P-withoutDefects/e7-shipping.yaml new file mode 100644 index 0000000..c0805d2 --- /dev/null +++ b/config/datasource/smart-factory-1P-withoutDefects/e7-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "woodShelf" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "woodShelf" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory/order.yaml b/config/datasource/smart-factory-1P-withoutDefects/order.yaml similarity index 85% rename from config/datasource/smart-factory/order.yaml rename to config/datasource/smart-factory-1P-withoutDefects/order.yaml index 5da52b5..f0ae6f9 100644 --- a/config/datasource/smart-factory/order.yaml +++ b/config/datasource/smart-factory-1P-withoutDefects/order.yaml @@ -3,4 +3,4 @@ name: "order" spec: name: "order" type: "order" - input: "" \ No newline at end of file + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withoutDefects/resourceOrder.yaml b/config/datasource/smart-factory-1P-withoutDefects/resourceOrder.yaml new file mode 100644 index 0000000..435f300 --- /dev/null +++ b/config/datasource/smart-factory-1P-withoutDefects/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withoutDefects/routing.yaml b/config/datasource/smart-factory-1P-withoutDefects/routing.yaml new file mode 100644 index 0000000..1b83480 --- /dev/null +++ b/config/datasource/smart-factory-1P-withoutDefects/routing.yaml @@ -0,0 +1,28 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "A" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "A" + duration: 3 + - routeForActivity: "Back to machine" + start: "A" + end: "M" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory/screw.yaml b/config/datasource/smart-factory-1P-withoutDefects/screw.yaml similarity index 82% rename from config/datasource/smart-factory/screw.yaml rename to config/datasource/smart-factory-1P-withoutDefects/screw.yaml index 997cb35..b721d7d 100644 --- a/config/datasource/smart-factory/screw.yaml +++ b/config/datasource/smart-factory-1P-withoutDefects/screw.yaml @@ -3,4 +3,4 @@ name: "screw" spec: name: "screw" type: "smallComponent" - input: "order" \ No newline at end of file + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withoutDefects/warehouse_stock.yaml b/config/datasource/smart-factory-1P-withoutDefects/warehouse_stock.yaml new file mode 100644 index 0000000..455a78c --- /dev/null +++ b/config/datasource/smart-factory-1P-withoutDefects/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withoutDefects/woodShelf.yaml b/config/datasource/smart-factory-1P-withoutDefects/woodShelf.yaml new file mode 100644 index 0000000..f4859dd --- /dev/null +++ b/config/datasource/smart-factory-1P-withoutDefects/woodShelf.yaml @@ -0,0 +1,6 @@ +kind: object +name: "woodShelf" +spec: + name: "woodShelf" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/barA-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects/barA-resource.yaml new file mode 100644 index 0000000..0d5e252 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/barA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barAResource" +spec: + name: "barAResource" + type: "shelf1" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/barA.yaml b/config/datasource/smart-factory-2P-withoutDefects/barA.yaml new file mode 100644 index 0000000..38157df --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/barA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barA" +spec: + name: "barA" + type: "shelf1" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/barW-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects/barW-resource.yaml new file mode 100644 index 0000000..ed4cb73 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/barW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barWResource" +spec: + name: "barWResource" + type: "shelf2" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/barW.yaml b/config/datasource/smart-factory-2P-withoutDefects/barW.yaml new file mode 100644 index 0000000..d2a03ca --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/barW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barW" +spec: + name: "barW" + type: "shelf2" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/boardA-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects/boardA-resource.yaml new file mode 100644 index 0000000..f0dca8b --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/boardA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardAResource" +spec: + name: "boardAResource" + type: "shelf2" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/boardA.yaml b/config/datasource/smart-factory-2P-withoutDefects/boardA.yaml new file mode 100644 index 0000000..4203a57 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/boardA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardA" +spec: + name: "boardA" + type: "shelf2" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/boardW-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects/boardW-resource.yaml new file mode 100644 index 0000000..69d1118 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/boardW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardWResource" +spec: + name: "boardWResource" + type: "shelf1" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/boardW.yaml b/config/datasource/smart-factory-2P-withoutDefects/boardW.yaml new file mode 100644 index 0000000..add2fdf --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/boardW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardW" +spec: + name: "boardW" + type: "shelf1" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/e0-order.yaml b/config/datasource/smart-factory-2P-withoutDefects/e0-order.yaml new file mode 100644 index 0000000..66822eb --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e0-order.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order1" + number: 1 + lastState: "" + size: + workforces: + - workforce: "manager" + number: 1 + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder1" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withoutDefects/e0a-order.yaml b/config/datasource/smart-factory-2P-withoutDefects/e0a-order.yaml new file mode 100644 index 0000000..fe5d9df --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e0a-order.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "OrderPlacementA" +spec: + name: "OrderPlacementA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order2" + number: 1 + lastState: "" + size: + workforces: + - workforce: "manager" + number: 1 + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder2" + number: 1 + change: "" + size: + transition: "OutgoingStockA" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withoutDefects/e1-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withoutDefects/e1-outgoing-stock.yaml new file mode 100644 index 0000000..892ae06 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e1-outgoing-stock.yaml @@ -0,0 +1,44 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder1" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw1" + number: 13 + change: "" + size: + - object: "pinW" + number: 13 + change: "" + size: + duration: 5 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/e1a-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withoutDefects/e1a-outgoing-stock.yaml new file mode 100644 index 0000000..3ac506b --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e1a-outgoing-stock.yaml @@ -0,0 +1,44 @@ +kind: datasource +name: "OutgoingStockA" +spec: + name: "OutgoingStockA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barWResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw2" + number: 13 + change: "" + size: + - object: "pinA" + number: 13 + change: "" + size: + duration: 5 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/e2-sawing-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects/e2-sawing-bar.yaml new file mode 100644 index 0000000..01a5a3c --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e2-sawing-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBarW" +spec: + name: "SawingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barWResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + eventData: + - activity: + name: "Sawed" + output: + - object: "barW" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarW" + duration: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/e2-sawing-board.yaml b/config/datasource/smart-factory-2P-withoutDefects/e2-sawing-board.yaml new file mode 100644 index 0000000..dbeab1f --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e2-sawing-board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBoardW" +spec: + name: "SawingBoardW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardWResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + eventData: + - activity: + name: "Sawed" + output: + - object: "boardW" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardW" + duration: 9 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/e2a-sawing-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects/e2a-sawing-bar.yaml new file mode 100644 index 0000000..467e1af --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e2a-sawing-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBarA" +spec: + name: "SawingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barAResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + eventData: + - activity: + name: "Sawed" + output: + - object: "barA" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarA" + duration: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/e2a-sawing-board.yaml b/config/datasource/smart-factory-2P-withoutDefects/e2a-sawing-board.yaml new file mode 100644 index 0000000..864b61c --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e2a-sawing-board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBoardA" +spec: + name: "SawingBoardA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + eventData: + - activity: + name: "Sawed" + output: + - object: "boardA" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardA" + duration: 9 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects/e3-drilling-bar.yaml new file mode 100644 index 0000000..77004b5 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e3-drilling-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "DrillingBarW" +spec: + name: "DrillingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Drilled" + output: + - object: "barW" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarW" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/e3a-drilling-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects/e3a-drilling-bar.yaml new file mode 100644 index 0000000..499fac8 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e3a-drilling-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "DrillingBarA" +spec: + name: "DrillingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Drilled" + output: + - object: "barA" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarA" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/e4-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withoutDefects/e4-sanding-Bar.yaml new file mode 100644 index 0000000..d9a9173 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e4-sanding-Bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBarW" +spec: + name: "SandingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Sanded" + output: + - object: "barW" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "Assembly2" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withoutDefects/e4-sanding-Board.yaml b/config/datasource/smart-factory-2P-withoutDefects/e4-sanding-Board.yaml new file mode 100644 index 0000000..d7341b1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e4-sanding-Board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBoardW" +spec: + name: "SandingBoardW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + eventData: + - activity: + name: "Sanded" + output: + - object: "boardW" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly1" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withoutDefects/e4a-sanding-Bar.yaml new file mode 100644 index 0000000..2f2344d --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e4a-sanding-Bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBarA" +spec: + name: "SandingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Sanded" + output: + - object: "barA" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "Assembly1" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withoutDefects/e4a-sanding-Board.yaml b/config/datasource/smart-factory-2P-withoutDefects/e4a-sanding-Board.yaml new file mode 100644 index 0000000..5ad3f27 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e4a-sanding-Board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBoardA" +spec: + name: "SandingBoardA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + eventData: + - activity: + name: "Sanded" + output: + - object: "boardA" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly2" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/e5-assembly.yaml b/config/datasource/smart-factory-2P-withoutDefects/e5-assembly.yaml new file mode 100644 index 0000000..f8eab0f --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e5-assembly.yaml @@ -0,0 +1,45 @@ +kind: datasource +name: "Assembly1" +spec: + name: "Assembly1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardW" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw1" + number: 13 + lastState: "" + size: + - object: "pinW" + number: 13 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf1" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl1" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/e5a-assembly.yaml b/config/datasource/smart-factory-2P-withoutDefects/e5a-assembly.yaml new file mode 100644 index 0000000..c9aa6ea --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e5a-assembly.yaml @@ -0,0 +1,45 @@ +kind: datasource +name: "Assembly2" +spec: + name: "Assembly2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "barW" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardA" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw2" + number: 13 + lastState: "" + size: + - object: "pinA" + number: 13 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf2" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl2" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/e6-quality-control.yaml b/config/datasource/smart-factory-2P-withoutDefects/e6-quality-control.yaml new file mode 100644 index 0000000..4fa5e58 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e6-quality-control.yaml @@ -0,0 +1,28 @@ +kind: datasource +name: "QualityControl1" +spec: + name: "QualityControl1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf1" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf1" + number: 1 + change: "proofed" + size: + transition: "Shipping1" + duration: 2 + diff --git a/config/datasource/smart-factory-2P-withoutDefects/e6a-quality-control.yaml b/config/datasource/smart-factory-2P-withoutDefects/e6a-quality-control.yaml new file mode 100644 index 0000000..2e7f462 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e6a-quality-control.yaml @@ -0,0 +1,28 @@ +kind: datasource +name: "QualityControl2" +spec: + name: "QualityControl2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 2 + diff --git a/config/datasource/smart-factory-2P-withoutDefects/e7-shipping.yaml b/config/datasource/smart-factory-2P-withoutDefects/e7-shipping.yaml new file mode 100644 index 0000000..d3c6dd3 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e7-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping1" +spec: + name: "Shipping1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf1" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf1" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/e7a-shipping.yaml b/config/datasource/smart-factory-2P-withoutDefects/e7a-shipping.yaml new file mode 100644 index 0000000..94c8670 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/e7a-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping2" +spec: + name: "Shipping2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf2" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/order1.yaml b/config/datasource/smart-factory-2P-withoutDefects/order1.yaml new file mode 100644 index 0000000..d3aa2fc --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/order1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order1" +spec: + name: "order1" + type: "shelf1" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/order2.yaml b/config/datasource/smart-factory-2P-withoutDefects/order2.yaml new file mode 100644 index 0000000..a84e395 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/order2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order2" +spec: + name: "order2" + type: "shelf2" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/pinA.yaml b/config/datasource/smart-factory-2P-withoutDefects/pinA.yaml new file mode 100644 index 0000000..1684a78 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/pinA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinA" +spec: + name: "pinA" + type: "shelf2" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/pinW.yaml b/config/datasource/smart-factory-2P-withoutDefects/pinW.yaml new file mode 100644 index 0000000..9478326 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/pinW.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinW" +spec: + name: "pinW" + type: "shelf1" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/resourceOrder1.yaml b/config/datasource/smart-factory-2P-withoutDefects/resourceOrder1.yaml new file mode 100644 index 0000000..bc82d53 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/resourceOrder1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder1" +spec: + name: "resourceOrder1" + type: "shelf1" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/resourceOrder2.yaml b/config/datasource/smart-factory-2P-withoutDefects/resourceOrder2.yaml new file mode 100644 index 0000000..32bc0d8 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/resourceOrder2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder2" +spec: + name: "resourceOrder2" + type: "shelf2" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/routing.yaml b/config/datasource/smart-factory-2P-withoutDefects/routing.yaml new file mode 100644 index 0000000..1b83480 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/routing.yaml @@ -0,0 +1,28 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "A" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "A" + duration: 3 + - routeForActivity: "Back to machine" + start: "A" + end: "M" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/screw1.yaml b/config/datasource/smart-factory-2P-withoutDefects/screw1.yaml new file mode 100644 index 0000000..39bf3e2 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/screw1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw1" +spec: + name: "screw1" + type: "shelf1" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/screw2.yaml b/config/datasource/smart-factory-2P-withoutDefects/screw2.yaml new file mode 100644 index 0000000..25d0828 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/screw2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw2" +spec: + name: "screw2" + type: "shelf2" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/shelf1.yaml b/config/datasource/smart-factory-2P-withoutDefects/shelf1.yaml new file mode 100644 index 0000000..a546cec --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/shelf1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf1" +spec: + name: "shelf1" + type: "shelf1" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/shelf2.yaml b/config/datasource/smart-factory-2P-withoutDefects/shelf2.yaml new file mode 100644 index 0000000..5f764a4 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/shelf2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf2" +spec: + name: "shelf2" + type: "shelf2" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/warehouse_stock.yaml b/config/datasource/smart-factory-2P-withoutDefects/warehouse_stock.yaml new file mode 100644 index 0000000..bca347e --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects/warehouse_stock.yaml @@ -0,0 +1,12 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order2" + number: 1000 + lastState: + size: + - object: "order1" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/barA-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects2/barA-resource.yaml new file mode 100644 index 0000000..39b9f11 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/barA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barAResource" +spec: + name: "barAResource" + type: "aluminium" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/barA.yaml b/config/datasource/smart-factory-2P-withoutDefects2/barA.yaml new file mode 100644 index 0000000..ec86fb2 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/barA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barA" +spec: + name: "barA" + type: "aluminium" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/barW-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects2/barW-resource.yaml new file mode 100644 index 0000000..870fcbd --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/barW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barWResource" +spec: + name: "barWResource" + type: "wood" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/barW.yaml b/config/datasource/smart-factory-2P-withoutDefects2/barW.yaml new file mode 100644 index 0000000..0bc30cd --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/barW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barW" +spec: + name: "barW" + type: "wood" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/boardA-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects2/boardA-resource.yaml new file mode 100644 index 0000000..4e3cc1a --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/boardA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardAResource" +spec: + name: "boardAResource" + type: "aluminium" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/boardA.yaml b/config/datasource/smart-factory-2P-withoutDefects2/boardA.yaml new file mode 100644 index 0000000..eb8f78c --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/boardA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardA" +spec: + name: "boardA" + type: "aluminium" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/boardW-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects2/boardW-resource.yaml new file mode 100644 index 0000000..8adec30 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/boardW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardWResource" +spec: + name: "boardWResource" + type: "wood" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/boardW.yaml b/config/datasource/smart-factory-2P-withoutDefects2/boardW.yaml new file mode 100644 index 0000000..52d7b3d --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/boardW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardW" +spec: + name: "boardW" + type: "wood" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e0-order.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e0-order.yaml new file mode 100644 index 0000000..66822eb --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e0-order.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order1" + number: 1 + lastState: "" + size: + workforces: + - workforce: "manager" + number: 1 + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder1" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e0a-order.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e0a-order.yaml new file mode 100644 index 0000000..fe5d9df --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e0a-order.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "OrderPlacementA" +spec: + name: "OrderPlacementA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order2" + number: 1 + lastState: "" + size: + workforces: + - workforce: "manager" + number: 1 + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder2" + number: 1 + change: "" + size: + transition: "OutgoingStockA" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e1-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e1-outgoing-stock.yaml new file mode 100644 index 0000000..892ae06 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e1-outgoing-stock.yaml @@ -0,0 +1,44 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder1" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw1" + number: 13 + change: "" + size: + - object: "pinW" + number: 13 + change: "" + size: + duration: 5 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e1a-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e1a-outgoing-stock.yaml new file mode 100644 index 0000000..3ac506b --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e1a-outgoing-stock.yaml @@ -0,0 +1,44 @@ +kind: datasource +name: "OutgoingStockA" +spec: + name: "OutgoingStockA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barWResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw2" + number: 13 + change: "" + size: + - object: "pinA" + number: 13 + change: "" + size: + duration: 5 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e2-sawing-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e2-sawing-bar.yaml new file mode 100644 index 0000000..01a5a3c --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e2-sawing-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBarW" +spec: + name: "SawingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barWResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + eventData: + - activity: + name: "Sawed" + output: + - object: "barW" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarW" + duration: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e2-sawing-board.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e2-sawing-board.yaml new file mode 100644 index 0000000..dbeab1f --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e2-sawing-board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBoardW" +spec: + name: "SawingBoardW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardWResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + eventData: + - activity: + name: "Sawed" + output: + - object: "boardW" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardW" + duration: 9 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e2a-sawing-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e2a-sawing-bar.yaml new file mode 100644 index 0000000..467e1af --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e2a-sawing-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBarA" +spec: + name: "SawingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barAResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + eventData: + - activity: + name: "Sawed" + output: + - object: "barA" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarA" + duration: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e2a-sawing-board.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e2a-sawing-board.yaml new file mode 100644 index 0000000..864b61c --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e2a-sawing-board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBoardA" +spec: + name: "SawingBoardA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + eventData: + - activity: + name: "Sawed" + output: + - object: "boardA" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardA" + duration: 9 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e3-drilling-bar.yaml new file mode 100644 index 0000000..77004b5 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e3-drilling-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "DrillingBarW" +spec: + name: "DrillingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Drilled" + output: + - object: "barW" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarW" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e3a-drilling-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e3a-drilling-bar.yaml new file mode 100644 index 0000000..499fac8 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e3a-drilling-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "DrillingBarA" +spec: + name: "DrillingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Drilled" + output: + - object: "barA" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarA" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e4-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e4-sanding-Bar.yaml new file mode 100644 index 0000000..d9a9173 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e4-sanding-Bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBarW" +spec: + name: "SandingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Sanded" + output: + - object: "barW" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "Assembly2" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e4-sanding-Board.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e4-sanding-Board.yaml new file mode 100644 index 0000000..d7341b1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e4-sanding-Board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBoardW" +spec: + name: "SandingBoardW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + eventData: + - activity: + name: "Sanded" + output: + - object: "boardW" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly1" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e4a-sanding-Bar.yaml new file mode 100644 index 0000000..2f2344d --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e4a-sanding-Bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBarA" +spec: + name: "SandingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Sanded" + output: + - object: "barA" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "Assembly1" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e4a-sanding-Board.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e4a-sanding-Board.yaml new file mode 100644 index 0000000..5ad3f27 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e4a-sanding-Board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBoardA" +spec: + name: "SandingBoardA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + eventData: + - activity: + name: "Sanded" + output: + - object: "boardA" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly2" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e5-assembly.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e5-assembly.yaml new file mode 100644 index 0000000..f8eab0f --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e5-assembly.yaml @@ -0,0 +1,45 @@ +kind: datasource +name: "Assembly1" +spec: + name: "Assembly1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardW" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw1" + number: 13 + lastState: "" + size: + - object: "pinW" + number: 13 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf1" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl1" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e5a-assembly.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e5a-assembly.yaml new file mode 100644 index 0000000..c9aa6ea --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e5a-assembly.yaml @@ -0,0 +1,45 @@ +kind: datasource +name: "Assembly2" +spec: + name: "Assembly2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "barW" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardA" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw2" + number: 13 + lastState: "" + size: + - object: "pinA" + number: 13 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf2" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl2" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e6-quality-control.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e6-quality-control.yaml new file mode 100644 index 0000000..4fa5e58 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e6-quality-control.yaml @@ -0,0 +1,28 @@ +kind: datasource +name: "QualityControl1" +spec: + name: "QualityControl1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf1" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf1" + number: 1 + change: "proofed" + size: + transition: "Shipping1" + duration: 2 + diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e6a-quality-control.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e6a-quality-control.yaml new file mode 100644 index 0000000..2e7f462 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e6a-quality-control.yaml @@ -0,0 +1,28 @@ +kind: datasource +name: "QualityControl2" +spec: + name: "QualityControl2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 2 + diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e7-shipping.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e7-shipping.yaml new file mode 100644 index 0000000..d3c6dd3 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e7-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping1" +spec: + name: "Shipping1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf1" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf1" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e7a-shipping.yaml b/config/datasource/smart-factory-2P-withoutDefects2/e7a-shipping.yaml new file mode 100644 index 0000000..94c8670 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/e7a-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping2" +spec: + name: "Shipping2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf2" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/order1.yaml b/config/datasource/smart-factory-2P-withoutDefects2/order1.yaml new file mode 100644 index 0000000..bcaf45f --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/order1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order1" +spec: + name: "order1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/order2.yaml b/config/datasource/smart-factory-2P-withoutDefects2/order2.yaml new file mode 100644 index 0000000..dbc0dcf --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/order2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order2" +spec: + name: "order2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory/pin.yaml b/config/datasource/smart-factory-2P-withoutDefects2/pinA.yaml similarity index 51% rename from config/datasource/smart-factory/pin.yaml rename to config/datasource/smart-factory-2P-withoutDefects2/pinA.yaml index 65028c6..65266d9 100644 --- a/config/datasource/smart-factory/pin.yaml +++ b/config/datasource/smart-factory-2P-withoutDefects2/pinA.yaml @@ -1,6 +1,6 @@ kind: object -name: "pin" +name: "pinA" spec: - name: "pin" + name: "pinA" type: "smallComponent" - input: "order" \ No newline at end of file + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/pinW.yaml b/config/datasource/smart-factory-2P-withoutDefects2/pinW.yaml new file mode 100644 index 0000000..196b594 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/pinW.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinW" +spec: + name: "pinW" + type: "smallComponent" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/resourceOrder1.yaml b/config/datasource/smart-factory-2P-withoutDefects2/resourceOrder1.yaml new file mode 100644 index 0000000..be67937 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/resourceOrder1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder1" +spec: + name: "resourceOrder1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/resourceOrder2.yaml b/config/datasource/smart-factory-2P-withoutDefects2/resourceOrder2.yaml new file mode 100644 index 0000000..7fcf9c4 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/resourceOrder2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder2" +spec: + name: "resourceOrder2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/routing.yaml b/config/datasource/smart-factory-2P-withoutDefects2/routing.yaml new file mode 100644 index 0000000..1b83480 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/routing.yaml @@ -0,0 +1,28 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "A" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "A" + duration: 3 + - routeForActivity: "Back to machine" + start: "A" + end: "M" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/screw1.yaml b/config/datasource/smart-factory-2P-withoutDefects2/screw1.yaml new file mode 100644 index 0000000..5f02ab1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/screw1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw1" +spec: + name: "screw1" + type: "smallComponent" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/screw2.yaml b/config/datasource/smart-factory-2P-withoutDefects2/screw2.yaml new file mode 100644 index 0000000..3219433 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/screw2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw2" +spec: + name: "screw2" + type: "smallComponent" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/shelf1.yaml b/config/datasource/smart-factory-2P-withoutDefects2/shelf1.yaml new file mode 100644 index 0000000..ea1a1d8 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/shelf1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf1" +spec: + name: "shelf1" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/shelf2.yaml b/config/datasource/smart-factory-2P-withoutDefects2/shelf2.yaml new file mode 100644 index 0000000..7115caa --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/shelf2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf2" +spec: + name: "shelf2" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/warehouse_stock.yaml b/config/datasource/smart-factory-2P-withoutDefects2/warehouse_stock.yaml new file mode 100644 index 0000000..bca347e --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects2/warehouse_stock.yaml @@ -0,0 +1,12 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order2" + number: 1000 + lastState: + size: + - object: "order1" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/barA-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects3/barA-resource.yaml new file mode 100644 index 0000000..34bd237 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/barA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barAResource" +spec: + name: "barAResource" + type: "resource" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/barA.yaml b/config/datasource/smart-factory-2P-withoutDefects3/barA.yaml new file mode 100644 index 0000000..59070fc --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/barA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barA" +spec: + name: "barA" + type: "processedResource" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/barW-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects3/barW-resource.yaml new file mode 100644 index 0000000..4086ca6 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/barW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barWResource" +spec: + name: "barWResource" + type: "resource" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/barW.yaml b/config/datasource/smart-factory-2P-withoutDefects3/barW.yaml new file mode 100644 index 0000000..5fd5a06 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/barW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barW" +spec: + name: "barW" + type: "processedResource" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/boardA-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects3/boardA-resource.yaml new file mode 100644 index 0000000..34a8491 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/boardA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardAResource" +spec: + name: "boardAResource" + type: "resource" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/boardA.yaml b/config/datasource/smart-factory-2P-withoutDefects3/boardA.yaml new file mode 100644 index 0000000..8483dd9 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/boardA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardA" +spec: + name: "boardA" + type: "processedResource" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/boardW-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects3/boardW-resource.yaml new file mode 100644 index 0000000..c107fd1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/boardW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardWResource" +spec: + name: "boardWResource" + type: "resource" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/boardW.yaml b/config/datasource/smart-factory-2P-withoutDefects3/boardW.yaml new file mode 100644 index 0000000..7a4be5c --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/boardW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardW" +spec: + name: "boardW" + type: "processedResource" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e0-order.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e0-order.yaml new file mode 100644 index 0000000..66822eb --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e0-order.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order1" + number: 1 + lastState: "" + size: + workforces: + - workforce: "manager" + number: 1 + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder1" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e0a-order.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e0a-order.yaml new file mode 100644 index 0000000..fe5d9df --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e0a-order.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "OrderPlacementA" +spec: + name: "OrderPlacementA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order2" + number: 1 + lastState: "" + size: + workforces: + - workforce: "manager" + number: 1 + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder2" + number: 1 + change: "" + size: + transition: "OutgoingStockA" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e1-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e1-outgoing-stock.yaml new file mode 100644 index 0000000..892ae06 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e1-outgoing-stock.yaml @@ -0,0 +1,44 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder1" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw1" + number: 13 + change: "" + size: + - object: "pinW" + number: 13 + change: "" + size: + duration: 5 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e1a-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e1a-outgoing-stock.yaml new file mode 100644 index 0000000..3ac506b --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e1a-outgoing-stock.yaml @@ -0,0 +1,44 @@ +kind: datasource +name: "OutgoingStockA" +spec: + name: "OutgoingStockA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barWResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw2" + number: 13 + change: "" + size: + - object: "pinA" + number: 13 + change: "" + size: + duration: 5 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e2-sawing-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e2-sawing-bar.yaml new file mode 100644 index 0000000..01a5a3c --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e2-sawing-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBarW" +spec: + name: "SawingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barWResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + eventData: + - activity: + name: "Sawed" + output: + - object: "barW" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarW" + duration: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e2-sawing-board.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e2-sawing-board.yaml new file mode 100644 index 0000000..dbeab1f --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e2-sawing-board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBoardW" +spec: + name: "SawingBoardW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardWResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + eventData: + - activity: + name: "Sawed" + output: + - object: "boardW" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardW" + duration: 9 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e2a-sawing-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e2a-sawing-bar.yaml new file mode 100644 index 0000000..467e1af --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e2a-sawing-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBarA" +spec: + name: "SawingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barAResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + eventData: + - activity: + name: "Sawed" + output: + - object: "barA" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarA" + duration: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e2a-sawing-board.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e2a-sawing-board.yaml new file mode 100644 index 0000000..864b61c --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e2a-sawing-board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBoardA" +spec: + name: "SawingBoardA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + eventData: + - activity: + name: "Sawed" + output: + - object: "boardA" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardA" + duration: 9 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e3-drilling-bar.yaml new file mode 100644 index 0000000..77004b5 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e3-drilling-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "DrillingBarW" +spec: + name: "DrillingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Drilled" + output: + - object: "barW" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarW" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e3a-drilling-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e3a-drilling-bar.yaml new file mode 100644 index 0000000..499fac8 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e3a-drilling-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "DrillingBarA" +spec: + name: "DrillingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Drilled" + output: + - object: "barA" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarA" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e4-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e4-sanding-Bar.yaml new file mode 100644 index 0000000..d9a9173 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e4-sanding-Bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBarW" +spec: + name: "SandingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Sanded" + output: + - object: "barW" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "Assembly2" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e4-sanding-Board.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e4-sanding-Board.yaml new file mode 100644 index 0000000..d7341b1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e4-sanding-Board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBoardW" +spec: + name: "SandingBoardW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + eventData: + - activity: + name: "Sanded" + output: + - object: "boardW" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly1" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e4a-sanding-Bar.yaml new file mode 100644 index 0000000..2f2344d --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e4a-sanding-Bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBarA" +spec: + name: "SandingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Sanded" + output: + - object: "barA" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "Assembly1" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e4a-sanding-Board.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e4a-sanding-Board.yaml new file mode 100644 index 0000000..5ad3f27 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e4a-sanding-Board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBoardA" +spec: + name: "SandingBoardA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + eventData: + - activity: + name: "Sanded" + output: + - object: "boardA" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly2" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e5-assembly.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e5-assembly.yaml new file mode 100644 index 0000000..f8eab0f --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e5-assembly.yaml @@ -0,0 +1,45 @@ +kind: datasource +name: "Assembly1" +spec: + name: "Assembly1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardW" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw1" + number: 13 + lastState: "" + size: + - object: "pinW" + number: 13 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf1" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl1" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e5a-assembly.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e5a-assembly.yaml new file mode 100644 index 0000000..c9aa6ea --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e5a-assembly.yaml @@ -0,0 +1,45 @@ +kind: datasource +name: "Assembly2" +spec: + name: "Assembly2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "barW" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardA" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw2" + number: 13 + lastState: "" + size: + - object: "pinA" + number: 13 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf2" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl2" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e6-quality-control.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e6-quality-control.yaml new file mode 100644 index 0000000..4fa5e58 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e6-quality-control.yaml @@ -0,0 +1,28 @@ +kind: datasource +name: "QualityControl1" +spec: + name: "QualityControl1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf1" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf1" + number: 1 + change: "proofed" + size: + transition: "Shipping1" + duration: 2 + diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e6a-quality-control.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e6a-quality-control.yaml new file mode 100644 index 0000000..2e7f462 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e6a-quality-control.yaml @@ -0,0 +1,28 @@ +kind: datasource +name: "QualityControl2" +spec: + name: "QualityControl2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 2 + diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e7-shipping.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e7-shipping.yaml new file mode 100644 index 0000000..d3c6dd3 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e7-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping1" +spec: + name: "Shipping1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf1" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf1" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e7a-shipping.yaml b/config/datasource/smart-factory-2P-withoutDefects3/e7a-shipping.yaml new file mode 100644 index 0000000..94c8670 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/e7a-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping2" +spec: + name: "Shipping2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf2" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/order1.yaml b/config/datasource/smart-factory-2P-withoutDefects3/order1.yaml new file mode 100644 index 0000000..bcaf45f --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/order1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order1" +spec: + name: "order1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/order2.yaml b/config/datasource/smart-factory-2P-withoutDefects3/order2.yaml new file mode 100644 index 0000000..dbc0dcf --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/order2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order2" +spec: + name: "order2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/pinA.yaml b/config/datasource/smart-factory-2P-withoutDefects3/pinA.yaml new file mode 100644 index 0000000..3ff2a03 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/pinA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinA" +spec: + name: "pinA" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/pinW.yaml b/config/datasource/smart-factory-2P-withoutDefects3/pinW.yaml new file mode 100644 index 0000000..96ec4f7 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/pinW.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinW" +spec: + name: "pinW" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/resourceOrder1.yaml b/config/datasource/smart-factory-2P-withoutDefects3/resourceOrder1.yaml new file mode 100644 index 0000000..be67937 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/resourceOrder1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder1" +spec: + name: "resourceOrder1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/resourceOrder2.yaml b/config/datasource/smart-factory-2P-withoutDefects3/resourceOrder2.yaml new file mode 100644 index 0000000..7fcf9c4 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/resourceOrder2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder2" +spec: + name: "resourceOrder2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/routing.yaml b/config/datasource/smart-factory-2P-withoutDefects3/routing.yaml new file mode 100644 index 0000000..1b83480 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/routing.yaml @@ -0,0 +1,28 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "A" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "A" + duration: 3 + - routeForActivity: "Back to machine" + start: "A" + end: "M" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/screw1.yaml b/config/datasource/smart-factory-2P-withoutDefects3/screw1.yaml new file mode 100644 index 0000000..45e5f8b --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/screw1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw1" +spec: + name: "screw1" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/screw2.yaml b/config/datasource/smart-factory-2P-withoutDefects3/screw2.yaml new file mode 100644 index 0000000..6d6076e --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/screw2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw2" +spec: + name: "screw2" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/shelf1.yaml b/config/datasource/smart-factory-2P-withoutDefects3/shelf1.yaml new file mode 100644 index 0000000..ea1a1d8 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/shelf1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf1" +spec: + name: "shelf1" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/shelf2.yaml b/config/datasource/smart-factory-2P-withoutDefects3/shelf2.yaml new file mode 100644 index 0000000..7115caa --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/shelf2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf2" +spec: + name: "shelf2" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/warehouse_stock.yaml b/config/datasource/smart-factory-2P-withoutDefects3/warehouse_stock.yaml new file mode 100644 index 0000000..bca347e --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects3/warehouse_stock.yaml @@ -0,0 +1,12 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order2" + number: 1000 + lastState: + size: + - object: "order1" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/barA-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects4/barA-resource.yaml new file mode 100644 index 0000000..9958d8d --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/barA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barAResource" +spec: + name: "barAResource" + type: "length" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/barA.yaml b/config/datasource/smart-factory-2P-withoutDefects4/barA.yaml new file mode 100644 index 0000000..d076873 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/barA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barA" +spec: + name: "barA" + type: "length" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/barW-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects4/barW-resource.yaml new file mode 100644 index 0000000..650aa72 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/barW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barWResource" +spec: + name: "barWResource" + type: "length" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/barW.yaml b/config/datasource/smart-factory-2P-withoutDefects4/barW.yaml new file mode 100644 index 0000000..a1600db --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/barW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barW" +spec: + name: "barW" + type: "length" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/boardA-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects4/boardA-resource.yaml new file mode 100644 index 0000000..b8d29d1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/boardA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardAResource" +spec: + name: "boardAResource" + type: "2D" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/boardA.yaml b/config/datasource/smart-factory-2P-withoutDefects4/boardA.yaml new file mode 100644 index 0000000..fe4288b --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/boardA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardA" +spec: + name: "boardA" + type: "2D" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/boardW-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects4/boardW-resource.yaml new file mode 100644 index 0000000..8a45098 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/boardW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardWResource" +spec: + name: "boardWResource" + type: "2D" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/boardW.yaml b/config/datasource/smart-factory-2P-withoutDefects4/boardW.yaml new file mode 100644 index 0000000..3937f24 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/boardW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardW" +spec: + name: "boardW" + type: "2D" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e0-order.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e0-order.yaml new file mode 100644 index 0000000..66822eb --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e0-order.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order1" + number: 1 + lastState: "" + size: + workforces: + - workforce: "manager" + number: 1 + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder1" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e0a-order.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e0a-order.yaml new file mode 100644 index 0000000..fe5d9df --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e0a-order.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "OrderPlacementA" +spec: + name: "OrderPlacementA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order2" + number: 1 + lastState: "" + size: + workforces: + - workforce: "manager" + number: 1 + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder2" + number: 1 + change: "" + size: + transition: "OutgoingStockA" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e1-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e1-outgoing-stock.yaml new file mode 100644 index 0000000..892ae06 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e1-outgoing-stock.yaml @@ -0,0 +1,44 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder1" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw1" + number: 13 + change: "" + size: + - object: "pinW" + number: 13 + change: "" + size: + duration: 5 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e1a-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e1a-outgoing-stock.yaml new file mode 100644 index 0000000..3ac506b --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e1a-outgoing-stock.yaml @@ -0,0 +1,44 @@ +kind: datasource +name: "OutgoingStockA" +spec: + name: "OutgoingStockA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barWResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw2" + number: 13 + change: "" + size: + - object: "pinA" + number: 13 + change: "" + size: + duration: 5 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e2-sawing-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e2-sawing-bar.yaml new file mode 100644 index 0000000..01a5a3c --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e2-sawing-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBarW" +spec: + name: "SawingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barWResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + eventData: + - activity: + name: "Sawed" + output: + - object: "barW" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarW" + duration: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e2-sawing-board.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e2-sawing-board.yaml new file mode 100644 index 0000000..dbeab1f --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e2-sawing-board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBoardW" +spec: + name: "SawingBoardW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardWResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + eventData: + - activity: + name: "Sawed" + output: + - object: "boardW" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardW" + duration: 9 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e2a-sawing-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e2a-sawing-bar.yaml new file mode 100644 index 0000000..467e1af --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e2a-sawing-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBarA" +spec: + name: "SawingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barAResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + eventData: + - activity: + name: "Sawed" + output: + - object: "barA" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarA" + duration: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e2a-sawing-board.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e2a-sawing-board.yaml new file mode 100644 index 0000000..864b61c --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e2a-sawing-board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SawingBoardA" +spec: + name: "SawingBoardA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + eventData: + - activity: + name: "Sawed" + output: + - object: "boardA" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardA" + duration: 9 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e3-drilling-bar.yaml new file mode 100644 index 0000000..77004b5 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e3-drilling-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "DrillingBarW" +spec: + name: "DrillingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Drilled" + output: + - object: "barW" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarW" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e3a-drilling-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e3a-drilling-bar.yaml new file mode 100644 index 0000000..499fac8 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e3a-drilling-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "DrillingBarA" +spec: + name: "DrillingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Drilled" + output: + - object: "barA" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarA" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e4-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e4-sanding-Bar.yaml new file mode 100644 index 0000000..d9a9173 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e4-sanding-Bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBarW" +spec: + name: "SandingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Sanded" + output: + - object: "barW" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "Assembly2" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e4-sanding-Board.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e4-sanding-Board.yaml new file mode 100644 index 0000000..d7341b1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e4-sanding-Board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBoardW" +spec: + name: "SandingBoardW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + eventData: + - activity: + name: "Sanded" + output: + - object: "boardW" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly1" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e4a-sanding-Bar.yaml new file mode 100644 index 0000000..2f2344d --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e4a-sanding-Bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBarA" +spec: + name: "SandingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Sanded" + output: + - object: "barA" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "Assembly1" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e4a-sanding-Board.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e4a-sanding-Board.yaml new file mode 100644 index 0000000..5ad3f27 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e4a-sanding-Board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBoardA" +spec: + name: "SandingBoardA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + eventData: + - activity: + name: "Sanded" + output: + - object: "boardA" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly2" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e5-assembly.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e5-assembly.yaml new file mode 100644 index 0000000..f8eab0f --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e5-assembly.yaml @@ -0,0 +1,45 @@ +kind: datasource +name: "Assembly1" +spec: + name: "Assembly1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardW" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw1" + number: 13 + lastState: "" + size: + - object: "pinW" + number: 13 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf1" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl1" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e5a-assembly.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e5a-assembly.yaml new file mode 100644 index 0000000..c9aa6ea --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e5a-assembly.yaml @@ -0,0 +1,45 @@ +kind: datasource +name: "Assembly2" +spec: + name: "Assembly2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "barW" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardA" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw2" + number: 13 + lastState: "" + size: + - object: "pinA" + number: 13 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf2" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl2" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e6-quality-control.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e6-quality-control.yaml new file mode 100644 index 0000000..4fa5e58 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e6-quality-control.yaml @@ -0,0 +1,28 @@ +kind: datasource +name: "QualityControl1" +spec: + name: "QualityControl1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf1" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf1" + number: 1 + change: "proofed" + size: + transition: "Shipping1" + duration: 2 + diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e6a-quality-control.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e6a-quality-control.yaml new file mode 100644 index 0000000..2e7f462 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e6a-quality-control.yaml @@ -0,0 +1,28 @@ +kind: datasource +name: "QualityControl2" +spec: + name: "QualityControl2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 2 + diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e7-shipping.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e7-shipping.yaml new file mode 100644 index 0000000..d3c6dd3 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e7-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping1" +spec: + name: "Shipping1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf1" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf1" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e7a-shipping.yaml b/config/datasource/smart-factory-2P-withoutDefects4/e7a-shipping.yaml new file mode 100644 index 0000000..94c8670 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/e7a-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping2" +spec: + name: "Shipping2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf2" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/order1.yaml b/config/datasource/smart-factory-2P-withoutDefects4/order1.yaml new file mode 100644 index 0000000..b431b63 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/order1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order1" +spec: + name: "order1" + type: "standard" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/order2.yaml b/config/datasource/smart-factory-2P-withoutDefects4/order2.yaml new file mode 100644 index 0000000..cb471c1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/order2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order2" +spec: + name: "order2" + type: "standard" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/pinA.yaml b/config/datasource/smart-factory-2P-withoutDefects4/pinA.yaml new file mode 100644 index 0000000..63d9e7e --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/pinA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinA" +spec: + name: "pinA" + type: "standard" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/pinW.yaml b/config/datasource/smart-factory-2P-withoutDefects4/pinW.yaml new file mode 100644 index 0000000..0f2f808 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/pinW.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinW" +spec: + name: "pinW" + type: "standard" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/resourceOrder1.yaml b/config/datasource/smart-factory-2P-withoutDefects4/resourceOrder1.yaml new file mode 100644 index 0000000..a2474af --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/resourceOrder1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder1" +spec: + name: "resourceOrder1" + type: "standard" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/resourceOrder2.yaml b/config/datasource/smart-factory-2P-withoutDefects4/resourceOrder2.yaml new file mode 100644 index 0000000..f0c065f --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/resourceOrder2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder2" +spec: + name: "resourceOrder2" + type: "standard" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/routing.yaml b/config/datasource/smart-factory-2P-withoutDefects4/routing.yaml new file mode 100644 index 0000000..1b83480 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/routing.yaml @@ -0,0 +1,28 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "A" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "A" + duration: 3 + - routeForActivity: "Back to machine" + start: "A" + end: "M" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/screw1.yaml b/config/datasource/smart-factory-2P-withoutDefects4/screw1.yaml new file mode 100644 index 0000000..6ee38e1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/screw1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw1" +spec: + name: "screw1" + type: "standard" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/screw2.yaml b/config/datasource/smart-factory-2P-withoutDefects4/screw2.yaml new file mode 100644 index 0000000..fef802a --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/screw2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw2" +spec: + name: "screw2" + type: "standard" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/shelf1.yaml b/config/datasource/smart-factory-2P-withoutDefects4/shelf1.yaml new file mode 100644 index 0000000..a826d64 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/shelf1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf1" +spec: + name: "shelf1" + type: "3D" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/shelf2.yaml b/config/datasource/smart-factory-2P-withoutDefects4/shelf2.yaml new file mode 100644 index 0000000..ce1298a --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/shelf2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf2" +spec: + name: "shelf2" + type: "3D" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/warehouse_stock.yaml b/config/datasource/smart-factory-2P-withoutDefects4/warehouse_stock.yaml new file mode 100644 index 0000000..bca347e --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects4/warehouse_stock.yaml @@ -0,0 +1,12 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order2" + number: 1000 + lastState: + size: + - object: "order1" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/e5-assembly.yaml b/config/datasource/smart-factory-parallel2/e5-assembly.yaml index d7e308c..ede735f 100644 --- a/config/datasource/smart-factory-parallel2/e5-assembly.yaml +++ b/config/datasource/smart-factory-parallel2/e5-assembly.yaml @@ -39,9 +39,9 @@ spec: change: "assembled" size: duration: 10 - transition: "Shipping" + transition: "QualityControl" - activity: - name: "Overheating" + name: "Failure: Overheating" output: - object: "woodShelf" number: 1 @@ -50,7 +50,7 @@ spec: transition: "" duration: 2 - activity: - name: "Item broke" + name: "Failure: Item broke" output: - object: "woodShelf" number: 1 diff --git a/config/datasource/smart-factory-parallel2/e6-quality-control.yaml b/config/datasource/smart-factory-parallel2/e6-quality-control.yaml new file mode 100644 index 0000000..b777efb --- /dev/null +++ b/config/datasource/smart-factory-parallel2/e6-quality-control.yaml @@ -0,0 +1,49 @@ +kind: datasource +name: "QualityControl" +spec: + name: "QualityControl" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.3, 0.1, 0.6 ] + input: + - object: "woodShelf" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Item Corrections" + output: + - object: "woodShelf" + number: 1 + change: "proofed" + size: + transition: "Shipping" + duration: 22 + - activity: + name: "Failure: Quality Insufficient" + output: + - object: "woodShelf" + number: 1 + change: "damaged" + size: + transition: "" + duration: 2 + - activity: + name: "Quality check passed" + output: + - object: "woodShelf" + number: 1 + change: "proofed" + size: + transition: "Shipping" + duration: + type: uniform + lowerBound: 5 + upperBound: 10 + diff --git a/config/datasource/smart-factory-parallel2/e7-shipping.yaml b/config/datasource/smart-factory-parallel2/e7-shipping.yaml index d4316fc..3115212 100644 --- a/config/datasource/smart-factory-parallel2/e7-shipping.yaml +++ b/config/datasource/smart-factory-parallel2/e7-shipping.yaml @@ -13,7 +13,7 @@ spec: input: - object: "woodShelf" number: 1 - lastState: "assembled" + lastState: "proofed" size: eventData: - activity: @@ -21,7 +21,7 @@ spec: output: - object: "woodShelf" number: 1 - change: "" + change: "sent" size: transition: "Shipping" duration: 180 @@ -30,7 +30,7 @@ spec: output: - object: "woodShelf" number: 1 - change: "" + change: "sent" size: transition: "" duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory/bar.yaml b/config/datasource/smart-factory/bar.yaml deleted file mode 100644 index 4522c11..0000000 --- a/config/datasource/smart-factory/bar.yaml +++ /dev/null @@ -1,6 +0,0 @@ -kind: object -name: "bar" -spec: - name: "bar" - type: "resource" - input: "barResource" \ No newline at end of file diff --git a/config/datasource/smart-factory/board.yaml b/config/datasource/smart-factory/board.yaml deleted file mode 100644 index 117e6fe..0000000 --- a/config/datasource/smart-factory/board.yaml +++ /dev/null @@ -1,6 +0,0 @@ -kind: object -name: "board" -spec: - name: "board" - type: "resource" - input: "boardResource" \ No newline at end of file diff --git a/config/datasource/smart-factory/e0-order.yaml b/config/datasource/smart-factory/e0-order.yaml deleted file mode 100644 index f2c8a6a..0000000 --- a/config/datasource/smart-factory/e0-order.yaml +++ /dev/null @@ -1,16 +0,0 @@ -kind: datasource -name: "" -spec: - name: "" - group: "factory" - selection: genericProbability - distribution: [1.0] - eventData: - -activities: - - activity: "" - transition: "OutgoingStock" - duration: 0 - output: - - object: - name: "order" - number: "1" \ No newline at end of file diff --git a/config/datasource/smart-factory/e1-outgoing-stock.yaml b/config/datasource/smart-factory/e1-outgoing-stock.yaml deleted file mode 100644 index 45aca54..0000000 --- a/config/datasource/smart-factory/e1-outgoing-stock.yaml +++ /dev/null @@ -1,40 +0,0 @@ -kind: datasource -name: "OutgoingStock" -spec: - name: "OutgoingStock" - group: "factory" - selection: genericProbability - distribution: [1.0] - input: - - object: - name: "order" - number: 1 - eventData: - - activities: - - activity: "Sent to sawing machine" - transition: "SawingBar" - duration: 3 - output: - - object: - name: "barResource" - number: 1 - - activity: "Sent to sawing machine" - transition: "SawingBoard" - duration: 3 - output: - - object: - name: "boardResource" - number: 1 - - activity: "Sent to assembly station" - transition: "Assembly" - duration: 2 - output: - - object: - name: "screw" - number: 13 - - object: - name: "bolt" - number: 1 - - object: - name: "pin" - number: 10 \ No newline at end of file diff --git a/config/datasource/smart-factory/e2-goods-delivery.yaml b/config/datasource/smart-factory/e2-goods-delivery.yaml deleted file mode 100644 index 9ccc6af..0000000 --- a/config/datasource/smart-factory/e2-goods-delivery.yaml +++ /dev/null @@ -1,25 +0,0 @@ -kind: datasource -name: "GoodsDelivery" -spec: - name: "GoodsDelivery" - group: "factory" - selection: driftingProbability - startDistribution: [0.3, 0.7] - endDistribution: [0.1, 0.9,] - steps: 1000 - eventData: - - activities: - - activity: "Reject" - transition: "" - duration: 1 - - activities: - - activity: "Store" - transition: "GoodsDelivery" - duration: - type: gaussian - mu: 720 - sigma: 120 - output: - - object: - name: "screw" - number: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory/e2-sawing-bar.yaml b/config/datasource/smart-factory/e2-sawing-bar.yaml deleted file mode 100644 index 5685346..0000000 --- a/config/datasource/smart-factory/e2-sawing-bar.yaml +++ /dev/null @@ -1,20 +0,0 @@ -kind: datasource -name: "SawingBar" -spec: - name: "SawingBar" - group: "factory" - selection: genericProbability - distribution: [1.0] - input: - - object: - name: "barResource" - number: 1 - eventData: - - activities: - - activity: "Sawed" - transition: "DrillingBar" - duration: 5 - output: - - object: - name: "bar" - number: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory/e2-sawing-board.yaml b/config/datasource/smart-factory/e2-sawing-board.yaml deleted file mode 100644 index 9735fa5..0000000 --- a/config/datasource/smart-factory/e2-sawing-board.yaml +++ /dev/null @@ -1,20 +0,0 @@ -kind: datasource -name: "SawingBoard" -spec: - name: "SawingBoard" - group: "factory" - selection: genericProbability - distribution: [1.0] - input: - - object: - name: "boardResource" - number: 1 - eventData: - - activities: - - activity: "Sawed" - transition: "DrillingBoard" - duration: 5 - output: - - object: - name: "board" - number: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory/e3-drilling-bar.yaml b/config/datasource/smart-factory/e3-drilling-bar.yaml deleted file mode 100644 index 7cee6be..0000000 --- a/config/datasource/smart-factory/e3-drilling-bar.yaml +++ /dev/null @@ -1,20 +0,0 @@ -kind: datasource -name: "DrillingBar" -spec: - name: "DrillingBar" - group: "factory" - selection: genericProbability - distribution: [1.0] - input: - - object: - name: "bar" - number: 1 - eventData: - - activities: - - activity: "Drilled" - transition: "SandingBar" - duration: 5 - output: - - object: - name: "bar" - number: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory/e3-drilling-board.yaml b/config/datasource/smart-factory/e3-drilling-board.yaml deleted file mode 100644 index 71cb9be..0000000 --- a/config/datasource/smart-factory/e3-drilling-board.yaml +++ /dev/null @@ -1,20 +0,0 @@ -kind: datasource -name: "DrillingBoard" -spec: - name: "DrillingBoard" - group: "factory" - selection: genericProbability - distribution: [1.0] - input: - - object: - name: "board" - number: 1 - eventData: - - activities: - - activity: "Drilled" - transition: "SandingBoard" - duration: 5 - output: - - object: - name: "board" - number: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory/e4-sanding-Bar.yaml b/config/datasource/smart-factory/e4-sanding-Bar.yaml deleted file mode 100644 index 8c301d2..0000000 --- a/config/datasource/smart-factory/e4-sanding-Bar.yaml +++ /dev/null @@ -1,20 +0,0 @@ -kind: datasource -name: "SandingBar" -spec: - name: "SandingBar" - group: "factory" - selection: genericProbability - distribution: [1.0] - input: - - object: - name: "bar" - number: 1 - eventData: - - activities: - - activity: "Sanded bar" - transition: "Assembly" - duration: 5 - output: - - object: - name: "bar" - number: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory/e4-sanding-Board.yaml b/config/datasource/smart-factory/e4-sanding-Board.yaml deleted file mode 100644 index 779ddfa..0000000 --- a/config/datasource/smart-factory/e4-sanding-Board.yaml +++ /dev/null @@ -1,20 +0,0 @@ -kind: datasource -name: "SandingBoard" -spec: - name: "SandingBoard" - group: "factory" - selection: genericProbability - distribution: [1.0] - input: - - object: - name: "board" - number: 1 - eventData: - - activities: - - activity: "Sanded Board" - transition: "Assembly" - duration: 5 - output: - - object: - name: "board" - number: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory/e5-assembly.yaml b/config/datasource/smart-factory/e5-assembly.yaml deleted file mode 100644 index 92f3251..0000000 --- a/config/datasource/smart-factory/e5-assembly.yaml +++ /dev/null @@ -1,40 +0,0 @@ -ind: datasource -name: "Assembly" -spec: - name: "Assembly" - group: "factory" - selection: genericProbability - distribution: [ 0.8, 0.1, 0.1 ] - input: - - object: - name: "bar" - number: 10 - - object: - name: "board" - number: 5 - - object: - name: "screw" - number: 13 - - object: - name: "bolt" - number: 1 - - object: - name: "pin" - number: 10 - eventData: - - activities: - - activity: "Assembling completed" - duration: 10 - transition: "QualityControl" - output: - - object: - name: "woodShelf" - number: 1 - - activities: - - activity: "Overheating" - transition: "" - duration: 2 - - activities: - - activity: "Item broke" - transition: "" - duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory/e6-quality-control.yaml b/config/datasource/smart-factory/e6-quality-control.yaml deleted file mode 100644 index 61f211f..0000000 --- a/config/datasource/smart-factory/e6-quality-control.yaml +++ /dev/null @@ -1,35 +0,0 @@ -kind: datasource -name: "QualityControl" -spec: - name: "QualityControl" - group: "factory" - selection: genericProbability - distribution: [ 0.3, 0.1, 0.6 ] - input: - - object: - name: "woodShelf" - number: 1 - eventData: - - activities: - - activity: "Item Needs Corrections" - transition: "Assembly" - duration: 2 - output: - - object: - name: "woodShelf" - number: 1 - - activities: - - activity: "Quality Insufficient" - transition: "" - duration: 2 - - activities: - - activity: "Quality check passed" - transition: "Shipping" - duration: - type: uniform - lowerBound: 5 - upperBound: 10 - output: - - object: - name: "woodShelf" - number: 1 diff --git a/config/datasource/smart-factory/e7-shipping.yaml b/config/datasource/smart-factory/e7-shipping.yaml deleted file mode 100644 index f2d50db..0000000 --- a/config/datasource/smart-factory/e7-shipping.yaml +++ /dev/null @@ -1,22 +0,0 @@ -kind: datasource -name: "Shipping" -spec: - name: "Shipping" - group: "factory" - selection: genericProbability - distribution: [ 0.8, 0.2 ] - input: - - object: - name: "woodShelf" - number: 1 - eventData: - - activity: "Package waits for sending" - transition: "Shipping" - duration: 180 - output: - - object: - name: "woodShelf" - number: 1 - - activity: "Package sent" - transition: "" - duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory/woodShelf.yaml b/config/datasource/smart-factory/woodShelf.yaml deleted file mode 100644 index 2c0e4d6..0000000 --- a/config/datasource/smart-factory/woodShelf.yaml +++ /dev/null @@ -1,6 +0,0 @@ -kind: object -name: "woodenShelf" -spec: - name: "woodenShelf" - type: "product" - input: "bar,board,screw,bolt,pin" \ No newline at end of file diff --git a/config/sink/ocel.yaml b/config/sink/ocel.yaml index e762f11..4f50352 100644 --- a/config/sink/ocel.yaml +++ b/config/sink/ocel.yaml @@ -12,11 +12,21 @@ spec: - "Packaging" - "Shipping" - "OutgoingStock" + - "OutgoingStockA" - "Assembly" + - "Assembly1" + - "Assembly2" - "SawingBar" + - "SawingBarA" + - "SawingBarW" - "DrillingBar" + - "DrillingBarW" + - "DrillingBarA" - "SandingBar" + - "SandingBarA" + - "SandingBarW" - "OrderPlacement" + - "OrderPlacementA" - "TransportM1" - "TransportM1Bar" - "TransportM1A" @@ -27,12 +37,21 @@ spec: - "ForgingB" - "ShippingA" - "ShippingB" + - "Shipping1" + - "Shipping2" - "SawingBoard" + - "SawingBoardA" + - "SawingBoardW" - "DrillingBoard" - "SandingBoard" + - "SandingBoardW" + - "SandingBoardA" - "QualityControl" + - "QualityControl1" + - "QualityControl2" - "A" - "B" - "C" - "D" - - "E" \ No newline at end of file + - "E" + - \ No newline at end of file From baa7f41dd7306ca7d0ca4137487c15c399a327ba Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 8 Aug 2025 23:19:53 +0200 Subject: [PATCH 111/124] add smart factory configs with WF without defects and with defects --- .../bar-resource.yaml | 9 +++ .../smart-factory-1P-withWF+/bar.yaml | 9 +++ .../board-resource.yaml | 9 +++ .../smart-factory-1P-withWF+/board.yaml | 9 +++ .../smart-factory-1P-withWF+/bolt.yaml | 6 ++ .../smart-factory-1P-withWF+/e0-order.yaml | 27 +++++++ .../e1-outgoing-stock.yaml | 44 +++++++++++ .../e2-sawing-bar.yaml | 40 ++++++++++ .../e2-sawing-board.yaml | 40 ++++++++++ .../e3-drilling-bar.yaml | 36 +++++++++ .../e4-sanding-Bar.yaml | 36 +++++++++ .../e4-sanding-Board.yaml | 36 +++++++++ .../smart-factory-1P-withWF+/e5-assembly.yaml | 57 ++++++++++++++ .../e6-quality-control.yaml | 28 +++++++ .../smart-factory-1P-withWF+/e7-shipping.yaml | 27 +++++++ .../smart-factory-1P-withWF+/handover.yaml | 6 ++ .../smart-factory-1P-withWF+/handoverBar.yaml | 6 ++ .../handoverBarR.yaml | 6 ++ .../handoverBoard.yaml | 6 ++ .../handoverBoardR.yaml | 6 ++ .../smart-factory-1P-withWF+/order.yaml | 6 ++ .../resourceOrder.yaml | 6 ++ .../smart-factory-1P-withWF+/routing.yaml | 28 +++++++ .../smart-factory-1P-withWF+/screw.yaml | 6 ++ .../t0-stock-to-machine.yaml | 40 ++++++++++ .../t0B-stock-to-machine.yaml | 40 ++++++++++ .../t1-machine-to-assembly.yaml | 40 ++++++++++ .../t1-stock-to-assembly.yaml | 42 +++++++++++ .../t1B-machine-to-assembly.yaml | 40 ++++++++++ .../warehouse_stock.yaml | 8 ++ .../smart-factory-1P-withWF+/woodShelf.yaml | 6 ++ .../smart-factory-1P-withWF+/workforces.yaml | 10 +++ .../bar-resource.yaml | 9 +++ .../smart-factory-1P-withWF+WithD/bar.yaml | 9 +++ .../board-resource.yaml | 9 +++ .../smart-factory-1P-withWF+WithD/board.yaml | 9 +++ .../smart-factory-1P-withWF+WithD/bolt.yaml | 6 ++ .../e0-order.yaml | 27 +++++++ .../e1-outgoing-stock.yaml | 54 +++++++++++++ .../e2-sawing-bar.yaml | 75 +++++++++++++++++++ .../e2-sawing-board.yaml | 75 +++++++++++++++++++ .../e3-drilling-bar.yaml | 48 ++++++++++++ .../e4-sanding-Bar.yaml | 36 +++++++++ .../e4-sanding-Board.yaml | 36 +++++++++ .../e5-assembly.yaml | 75 +++++++++++++++++++ .../e6-quality-control.yaml | 46 ++++++++++++ .../e7-shipping.yaml | 27 +++++++ .../handover.yaml | 6 ++ .../handoverBar.yaml | 6 ++ .../handoverBarR.yaml | 6 ++ .../handoverBoard.yaml | 6 ++ .../handoverBoardR.yaml | 6 ++ .../smart-factory-1P-withWF+WithD/order.yaml | 6 ++ .../resourceOrder.yaml | 6 ++ .../routing.yaml | 28 +++++++ .../smart-factory-1P-withWF+WithD/screw.yaml | 6 ++ .../t0-stock-to-machine.yaml | 40 ++++++++++ .../t0B-stock-to-machine.yaml | 40 ++++++++++ .../t1-machine-to-assembly.yaml | 40 ++++++++++ .../t1-stock-to-assembly.yaml | 42 +++++++++++ .../t1B-machine-to-assembly.yaml | 40 ++++++++++ .../warehouse_stock.yaml | 8 ++ .../woodShelf.yaml | 6 ++ .../workforces.yaml | 10 +++ .../smart-factory-1P-withWF/bar-resource.yaml | 9 +++ .../smart-factory-1P-withWF/bar.yaml | 9 +++ .../board-resource.yaml | 9 +++ .../smart-factory-1P-withWF/board.yaml | 9 +++ .../smart-factory-1P-withWF/bolt.yaml | 6 ++ .../smart-factory-1P-withWF/e0-order.yaml | 27 +++++++ .../e1-outgoing-stock.yaml | 44 +++++++++++ .../e2-sawing-bar.yaml | 37 +++++++++ .../e2-sawing-board.yaml | 37 +++++++++ .../e3-drilling-bar.yaml | 33 ++++++++ .../e4-sanding-Bar.yaml | 33 ++++++++ .../e4-sanding-Board.yaml | 33 ++++++++ .../smart-factory-1P-withWF/e5-assembly.yaml | 57 ++++++++++++++ .../e6-quality-control.yaml | 28 +++++++ .../smart-factory-1P-withWF/e7-shipping.yaml | 27 +++++++ .../smart-factory-1P-withWF/handover.yaml | 6 ++ .../smart-factory-1P-withWF/handoverBar.yaml | 6 ++ .../smart-factory-1P-withWF/handoverBarR.yaml | 6 ++ .../handoverBoard.yaml | 6 ++ .../handoverBoardR.yaml | 6 ++ .../smart-factory-1P-withWF/order.yaml | 6 ++ .../resourceOrder.yaml | 6 ++ .../smart-factory-1P-withWF/routing.yaml | 28 +++++++ .../smart-factory-1P-withWF/screw.yaml | 6 ++ .../t0-stock-to-machine.yaml | 40 ++++++++++ .../t0B-stock-to-machine.yaml | 40 ++++++++++ .../t1-machine-to-assembly.yaml | 40 ++++++++++ .../t1-stock-to-assembly.yaml | 42 +++++++++++ .../t1B-machine-to-assembly.yaml | 40 ++++++++++ .../warehouse_stock.yaml | 8 ++ .../smart-factory-1P-withWF/woodShelf.yaml | 6 ++ .../smart-factory-1P-withWF/workforces.yaml | 7 ++ config/sink/ocel.yaml | 3 +- 97 files changed, 2257 insertions(+), 1 deletion(-) create mode 100644 config/datasource/smart-factory-1P-withWF+/bar-resource.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/bar.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/board-resource.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/board.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/bolt.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/e0-order.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/e1-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/e2-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/e2-sawing-board.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/e4-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/e4-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/e5-assembly.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/e6-quality-control.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/e7-shipping.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/handover.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/handoverBar.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/handoverBarR.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/handoverBoard.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/handoverBoardR.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/order.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/resourceOrder.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/routing.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/screw.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/t0-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/t0B-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/t1-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/t1-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/t1B-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/warehouse_stock.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/woodShelf.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+/workforces.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/bar-resource.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/bar.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/board-resource.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/board.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/bolt.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/e0-order.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/e1-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/e2-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/e2-sawing-board.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/e4-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/e4-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/e5-assembly.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/e6-quality-control.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/e7-shipping.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/handover.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/handoverBar.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/handoverBarR.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/handoverBoard.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/handoverBoardR.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/order.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/resourceOrder.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/routing.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/screw.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/t0-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/t0B-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/t1-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/t1-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/t1B-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/warehouse_stock.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/woodShelf.yaml create mode 100644 config/datasource/smart-factory-1P-withWF+WithD/workforces.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/bar-resource.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/bar.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/board-resource.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/board.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/bolt.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/e0-order.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/e1-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/e2-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/e2-sawing-board.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/e4-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/e4-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/e5-assembly.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/e6-quality-control.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/e7-shipping.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/handover.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/handoverBar.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/handoverBarR.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/handoverBoard.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/handoverBoardR.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/order.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/resourceOrder.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/routing.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/screw.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/t0-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/t0B-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/t1-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/t1-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/t1B-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/warehouse_stock.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/woodShelf.yaml create mode 100644 config/datasource/smart-factory-1P-withWF/workforces.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/bar-resource.yaml b/config/datasource/smart-factory-1P-withWF+/bar-resource.yaml new file mode 100644 index 0000000..5959b49 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/bar-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barResource" +spec: + name: "barResource" + type: "resource" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/bar.yaml b/config/datasource/smart-factory-1P-withWF+/bar.yaml new file mode 100644 index 0000000..e075f62 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/bar.yaml @@ -0,0 +1,9 @@ +kind: object +name: "bar" +spec: + name: "bar" + type: "processedResource" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/board-resource.yaml b/config/datasource/smart-factory-1P-withWF+/board-resource.yaml new file mode 100644 index 0000000..43f93bb --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/board-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardResource" +spec: + name: "boardResource" + type: "resource" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/board.yaml b/config/datasource/smart-factory-1P-withWF+/board.yaml new file mode 100644 index 0000000..8422765 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/board.yaml @@ -0,0 +1,9 @@ +kind: object +name: "board" +spec: + name: "board" + type: "processedResource" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/bolt.yaml b/config/datasource/smart-factory-1P-withWF+/bolt.yaml new file mode 100644 index 0000000..2dacd3d --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/bolt.yaml @@ -0,0 +1,6 @@ +kind: object +name: "bolt" +spec: + name: "bolt" + type: "smallComponent" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/e0-order.yaml b/config/datasource/smart-factory-1P-withWF+/e0-order.yaml new file mode 100644 index 0000000..86dcc4c --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 diff --git a/config/datasource/smart-factory-1P-withWF+/e1-outgoing-stock.yaml b/config/datasource/smart-factory-1P-withWF+/e1-outgoing-stock.yaml new file mode 100644 index 0000000..49cb60f --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/e1-outgoing-stock.yaml @@ -0,0 +1,44 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw" + number: 13 + change: "" + size: + - object: "bolt" + number: 13 + change: "" + size: + duration: 5 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/e2-sawing-bar.yaml b/config/datasource/smart-factory-1P-withWF+/e2-sawing-bar.yaml new file mode 100644 index 0000000..85d47de --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/e2-sawing-bar.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "SawingBar" +spec: + name: "SawingBar" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "barResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "bar" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBar" + duration: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/e2-sawing-board.yaml b/config/datasource/smart-factory-1P-withWF+/e2-sawing-board.yaml new file mode 100644 index 0000000..7c1c6d2 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/e2-sawing-board.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "SawingBoard" +spec: + name: "SawingBoard" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "board" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoard" + duration: 9 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/e3-drilling-bar.yaml b/config/datasource/smart-factory-1P-withWF+/e3-drilling-bar.yaml new file mode 100644 index 0000000..f5598dd --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/e3-drilling-bar.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "DrillingBar" +spec: + name: "DrillingBar" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "bar" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "bar" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBar" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/e4-sanding-Bar.yaml b/config/datasource/smart-factory-1P-withWF+/e4-sanding-Bar.yaml new file mode 100644 index 0000000..c061bd7 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/e4-sanding-Bar.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBar" +spec: + name: "SandingBar" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "bar" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded bar" + output: + - object: "bar" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "TransportM1A" + duration: 2 diff --git a/config/datasource/smart-factory-1P-withWF+/e4-sanding-Board.yaml b/config/datasource/smart-factory-1P-withWF+/e4-sanding-Board.yaml new file mode 100644 index 0000000..84834d8 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/e4-sanding-Board.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBoard" +spec: + name: "SandingBoard" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "board" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded board" + output: + - object: "board" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "TransportM1AB" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/e5-assembly.yaml b/config/datasource/smart-factory-1P-withWF+/e5-assembly.yaml new file mode 100644 index 0000000..e7af4e0 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/e5-assembly.yaml @@ -0,0 +1,57 @@ +kind: datasource +name: "Assembly" +spec: + name: "Assembly" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "bar" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "board" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw" + number: 13 + lastState: "" + size: + - object: "bolt" + number: 13 + lastState: "" + size: + - object: "handoverBoard" + number: 1 + lastState: "" + size: + - object: "handoverBar" + number: 1 + lastState: "" + size: + - object: "handover" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "woodShelf" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/e6-quality-control.yaml b/config/datasource/smart-factory-1P-withWF+/e6-quality-control.yaml new file mode 100644 index 0000000..6ca7909 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/e6-quality-control.yaml @@ -0,0 +1,28 @@ +kind: datasource +name: "QualityControl" +spec: + name: "QualityControl" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "woodShelf" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "woodShelf" + number: 1 + change: "proofed" + size: + transition: "Shipping" + duration: 2 + diff --git a/config/datasource/smart-factory-1P-withWF+/e7-shipping.yaml b/config/datasource/smart-factory-1P-withWF+/e7-shipping.yaml new file mode 100644 index 0000000..c0805d2 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/e7-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "woodShelf" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "woodShelf" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/handover.yaml b/config/datasource/smart-factory-1P-withWF+/handover.yaml new file mode 100644 index 0000000..b018412 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/handover.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handover" +spec: + name: "handover" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/handoverBar.yaml b/config/datasource/smart-factory-1P-withWF+/handoverBar.yaml new file mode 100644 index 0000000..d9add8d --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/handoverBar.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBar" +spec: + name: "handoverBar" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/handoverBarR.yaml b/config/datasource/smart-factory-1P-withWF+/handoverBarR.yaml new file mode 100644 index 0000000..aad56dd --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/handoverBarR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarR" +spec: + name: "handoverBarR" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/handoverBoard.yaml b/config/datasource/smart-factory-1P-withWF+/handoverBoard.yaml new file mode 100644 index 0000000..59186c2 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/handoverBoard.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoard" +spec: + name: "handoverBoard" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/handoverBoardR.yaml b/config/datasource/smart-factory-1P-withWF+/handoverBoardR.yaml new file mode 100644 index 0000000..493563a --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/handoverBoardR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardR" +spec: + name: "handoverBoardR" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/order.yaml b/config/datasource/smart-factory-1P-withWF+/order.yaml new file mode 100644 index 0000000..f0ae6f9 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/resourceOrder.yaml b/config/datasource/smart-factory-1P-withWF+/resourceOrder.yaml new file mode 100644 index 0000000..435f300 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/routing.yaml b/config/datasource/smart-factory-1P-withWF+/routing.yaml new file mode 100644 index 0000000..02da7f5 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/routing.yaml @@ -0,0 +1,28 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + duration: 2 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "A" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + duration: 2 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "A" + duration: 1 + - routeForActivity: "Back to machine" + start: "A" + end: "M" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/screw.yaml b/config/datasource/smart-factory-1P-withWF+/screw.yaml new file mode 100644 index 0000000..b721d7d --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/screw.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw" +spec: + name: "screw" + type: "smallComponent" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/t0-stock-to-machine.yaml b/config/datasource/smart-factory-1P-withWF+/t0-stock-to-machine.yaml new file mode 100644 index 0000000..3bcd9b8 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/t0-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1" +spec: + name: "TransportM1" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "barResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> M1" + output: + - object: "barResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + change: "" + size: + transition: "SawingBar" + duration: 1 diff --git a/config/datasource/smart-factory-1P-withWF+/t0B-stock-to-machine.yaml b/config/datasource/smart-factory-1P-withWF+/t0B-stock-to-machine.yaml new file mode 100644 index 0000000..89c52b8 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/t0B-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1B" +spec: + name: "TransportM1B" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> M1" + output: + - object: "boardResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + change: "" + size: + transition: "SawingBar" + duration: 1 diff --git a/config/datasource/smart-factory-1P-withWF+/t1-machine-to-assembly.yaml b/config/datasource/smart-factory-1P-withWF+/t1-machine-to-assembly.yaml new file mode 100644 index 0000000..235c665 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/t1-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1A" +spec: + name: "TransportM1A" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "M" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "bar" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: M1 -> assembly" + output: + - object: "bar" + number: 4 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "handoverBar" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-1P-withWF+/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-1P-withWF+/t1-stock-to-assembly.yaml new file mode 100644 index 0000000..9e9ae2f --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/t1-stock-to-assembly.yaml @@ -0,0 +1,42 @@ +kind: datasource +name: "TransportSA" +spec: + name: "TransportSA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw" + number: 13 + lastState: "" + size: + - object: "bolt" + number: 13 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> assembly" + output: + - object: "screw" + number: 13 + change: "" + size: + - object: "bolt" + number: 13 + change: "" + size: + - object: "handover" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 2 diff --git a/config/datasource/smart-factory-1P-withWF+/t1B-machine-to-assembly.yaml b/config/datasource/smart-factory-1P-withWF+/t1B-machine-to-assembly.yaml new file mode 100644 index 0000000..0aa5b12 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/t1B-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1AB" +spec: + name: "TransportM1AB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "M" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "board" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: M1 -> assembly" + output: + - object: "board" + number: 6 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "handoverBoard" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-1P-withWF+/warehouse_stock.yaml b/config/datasource/smart-factory-1P-withWF+/warehouse_stock.yaml new file mode 100644 index 0000000..455a78c --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/woodShelf.yaml b/config/datasource/smart-factory-1P-withWF+/woodShelf.yaml new file mode 100644 index 0000000..f4859dd --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/woodShelf.yaml @@ -0,0 +1,6 @@ +kind: object +name: "woodShelf" +spec: + name: "woodShelf" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/workforces.yaml b/config/datasource/smart-factory-1P-withWF+/workforces.yaml new file mode 100644 index 0000000..f333c3d --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+/workforces.yaml @@ -0,0 +1,10 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "transportRobot" + startLocation: "ST" + number: 3 + - name: "machineWorker" + startLocation: "M" + number: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/bar-resource.yaml b/config/datasource/smart-factory-1P-withWF+WithD/bar-resource.yaml new file mode 100644 index 0000000..5959b49 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/bar-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barResource" +spec: + name: "barResource" + type: "resource" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/bar.yaml b/config/datasource/smart-factory-1P-withWF+WithD/bar.yaml new file mode 100644 index 0000000..e075f62 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/bar.yaml @@ -0,0 +1,9 @@ +kind: object +name: "bar" +spec: + name: "bar" + type: "processedResource" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/board-resource.yaml b/config/datasource/smart-factory-1P-withWF+WithD/board-resource.yaml new file mode 100644 index 0000000..43f93bb --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/board-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardResource" +spec: + name: "boardResource" + type: "resource" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/board.yaml b/config/datasource/smart-factory-1P-withWF+WithD/board.yaml new file mode 100644 index 0000000..8422765 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/board.yaml @@ -0,0 +1,9 @@ +kind: object +name: "board" +spec: + name: "board" + type: "processedResource" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/bolt.yaml b/config/datasource/smart-factory-1P-withWF+WithD/bolt.yaml new file mode 100644 index 0000000..2dacd3d --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/bolt.yaml @@ -0,0 +1,6 @@ +kind: object +name: "bolt" +spec: + name: "bolt" + type: "smallComponent" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e0-order.yaml b/config/datasource/smart-factory-1P-withWF+WithD/e0-order.yaml new file mode 100644 index 0000000..86dcc4c --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e1-outgoing-stock.yaml b/config/datasource/smart-factory-1P-withWF+WithD/e1-outgoing-stock.yaml new file mode 100644 index 0000000..5bbc5f7 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/e1-outgoing-stock.yaml @@ -0,0 +1,54 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: genericProbability + distribution: [ 0.99, 0.01 ] + input: + - object: "resourceOrder" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw" + number: 13 + change: "" + size: + - object: "bolt" + number: 13 + change: "" + size: + duration: 5 + transition: "" + - activity: + name: "Failure: Missing resources" + output: + - object: "" + number: 0 + change: "" + size: + duration: 2 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e2-sawing-bar.yaml b/config/datasource/smart-factory-1P-withWF+WithD/e2-sawing-bar.yaml new file mode 100644 index 0000000..6a60199 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/e2-sawing-bar.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBar" +spec: + name: "SawingBar" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "barResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "bar" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBar" + duration: 4 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "bar" + number: 3 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + - object: "bar" + number: 1 + change: "broken" + size: + length: "1.25" + width: "" + depth: "" + duration: 4 + transition: "DrillingBar" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e2-sawing-board.yaml b/config/datasource/smart-factory-1P-withWF+WithD/e2-sawing-board.yaml new file mode 100644 index 0000000..4fc2d7c --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/e2-sawing-board.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBoard" +spec: + name: "SawingBoard" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "boardResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "board" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoard" + duration: 9 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "boardResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "board" + number: 4 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + - object: "board" + number: 2 + change: "broken" + size: + length: "" + width: "4.32" + depth: "4.24" + duration: 4 + transition: "SandingBoard" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e3-drilling-bar.yaml b/config/datasource/smart-factory-1P-withWF+WithD/e3-drilling-bar.yaml new file mode 100644 index 0000000..ebe0545 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/e3-drilling-bar.yaml @@ -0,0 +1,48 @@ +kind: datasource +name: "DrillingBar" +spec: + name: "DrillingBar" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [0.99, 0.01] + input: + - object: "bar" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "bar" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBar" + duration: 3 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "bar" + number: 1 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + duration: 20 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e4-sanding-Bar.yaml b/config/datasource/smart-factory-1P-withWF+WithD/e4-sanding-Bar.yaml new file mode 100644 index 0000000..c061bd7 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/e4-sanding-Bar.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBar" +spec: + name: "SandingBar" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "bar" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded bar" + output: + - object: "bar" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "TransportM1A" + duration: 2 diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e4-sanding-Board.yaml b/config/datasource/smart-factory-1P-withWF+WithD/e4-sanding-Board.yaml new file mode 100644 index 0000000..84834d8 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/e4-sanding-Board.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBoard" +spec: + name: "SandingBoard" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "board" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded board" + output: + - object: "board" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "TransportM1AB" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e5-assembly.yaml b/config/datasource/smart-factory-1P-withWF+WithD/e5-assembly.yaml new file mode 100644 index 0000000..fa2de13 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/e5-assembly.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "Assembly" +spec: + name: "Assembly" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.94, 0.03, 0.03 ] + input: + - object: "bar" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "board" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw" + number: 13 + lastState: "" + size: + - object: "bolt" + number: 13 + lastState: "" + size: + - object: "handoverBoard" + number: 1 + lastState: "" + size: + - object: "handoverBar" + number: 1 + lastState: "" + size: + - object: "handover" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "woodShelf" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl" + - activity: + name: "Failure: Overheating" + output: + - object: "woodShelf" + number: 1 + change: "overheated" + size: + transition: "" + duration: 2 + - activity: + name: "Failure: Item broke" + output: + - object: "woodShelf" + number: 1 + change: "broke" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e6-quality-control.yaml b/config/datasource/smart-factory-1P-withWF+WithD/e6-quality-control.yaml new file mode 100644 index 0000000..abb91be --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/e6-quality-control.yaml @@ -0,0 +1,46 @@ +kind: datasource +name: "QualityControl" +spec: + name: "QualityControl" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.8, 0.15, 0.05] + input: + - object: "woodShelf" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "woodShelf" + number: 1 + change: "proofed" + size: + transition: "Shipping" + duration: 2 + - activity: + name: "Item Corrections" + output: + - object: "woodShelf" + number: 1 + change: "proofed" + size: + transition: "Shipping" + duration: 12 + - activity: + name: "Failure: Quality Insufficient" + output: + - object: "woodShelf" + number: 1 + change: "damaged" + size: + transition: "" + duration: 2 + diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e7-shipping.yaml b/config/datasource/smart-factory-1P-withWF+WithD/e7-shipping.yaml new file mode 100644 index 0000000..c0805d2 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/e7-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "woodShelf" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "woodShelf" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/handover.yaml b/config/datasource/smart-factory-1P-withWF+WithD/handover.yaml new file mode 100644 index 0000000..b018412 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/handover.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handover" +spec: + name: "handover" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/handoverBar.yaml b/config/datasource/smart-factory-1P-withWF+WithD/handoverBar.yaml new file mode 100644 index 0000000..d9add8d --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/handoverBar.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBar" +spec: + name: "handoverBar" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/handoverBarR.yaml b/config/datasource/smart-factory-1P-withWF+WithD/handoverBarR.yaml new file mode 100644 index 0000000..aad56dd --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/handoverBarR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarR" +spec: + name: "handoverBarR" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/handoverBoard.yaml b/config/datasource/smart-factory-1P-withWF+WithD/handoverBoard.yaml new file mode 100644 index 0000000..59186c2 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/handoverBoard.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoard" +spec: + name: "handoverBoard" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/handoverBoardR.yaml b/config/datasource/smart-factory-1P-withWF+WithD/handoverBoardR.yaml new file mode 100644 index 0000000..493563a --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/handoverBoardR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardR" +spec: + name: "handoverBoardR" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/order.yaml b/config/datasource/smart-factory-1P-withWF+WithD/order.yaml new file mode 100644 index 0000000..f0ae6f9 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/resourceOrder.yaml b/config/datasource/smart-factory-1P-withWF+WithD/resourceOrder.yaml new file mode 100644 index 0000000..435f300 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/routing.yaml b/config/datasource/smart-factory-1P-withWF+WithD/routing.yaml new file mode 100644 index 0000000..02da7f5 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/routing.yaml @@ -0,0 +1,28 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + duration: 2 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "A" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + duration: 2 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "A" + duration: 1 + - routeForActivity: "Back to machine" + start: "A" + end: "M" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/screw.yaml b/config/datasource/smart-factory-1P-withWF+WithD/screw.yaml new file mode 100644 index 0000000..b721d7d --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/screw.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw" +spec: + name: "screw" + type: "smallComponent" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/t0-stock-to-machine.yaml b/config/datasource/smart-factory-1P-withWF+WithD/t0-stock-to-machine.yaml new file mode 100644 index 0000000..3bcd9b8 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/t0-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1" +spec: + name: "TransportM1" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "barResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> M1" + output: + - object: "barResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + change: "" + size: + transition: "SawingBar" + duration: 1 diff --git a/config/datasource/smart-factory-1P-withWF+WithD/t0B-stock-to-machine.yaml b/config/datasource/smart-factory-1P-withWF+WithD/t0B-stock-to-machine.yaml new file mode 100644 index 0000000..89c52b8 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/t0B-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1B" +spec: + name: "TransportM1B" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> M1" + output: + - object: "boardResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + change: "" + size: + transition: "SawingBar" + duration: 1 diff --git a/config/datasource/smart-factory-1P-withWF+WithD/t1-machine-to-assembly.yaml b/config/datasource/smart-factory-1P-withWF+WithD/t1-machine-to-assembly.yaml new file mode 100644 index 0000000..235c665 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/t1-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1A" +spec: + name: "TransportM1A" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "M" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "bar" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: M1 -> assembly" + output: + - object: "bar" + number: 4 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "handoverBar" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-1P-withWF+WithD/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-1P-withWF+WithD/t1-stock-to-assembly.yaml new file mode 100644 index 0000000..9e9ae2f --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/t1-stock-to-assembly.yaml @@ -0,0 +1,42 @@ +kind: datasource +name: "TransportSA" +spec: + name: "TransportSA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw" + number: 13 + lastState: "" + size: + - object: "bolt" + number: 13 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> assembly" + output: + - object: "screw" + number: 13 + change: "" + size: + - object: "bolt" + number: 13 + change: "" + size: + - object: "handover" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 2 diff --git a/config/datasource/smart-factory-1P-withWF+WithD/t1B-machine-to-assembly.yaml b/config/datasource/smart-factory-1P-withWF+WithD/t1B-machine-to-assembly.yaml new file mode 100644 index 0000000..0aa5b12 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/t1B-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1AB" +spec: + name: "TransportM1AB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "M" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "board" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: M1 -> assembly" + output: + - object: "board" + number: 6 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "handoverBoard" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-1P-withWF+WithD/warehouse_stock.yaml b/config/datasource/smart-factory-1P-withWF+WithD/warehouse_stock.yaml new file mode 100644 index 0000000..455a78c --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/woodShelf.yaml b/config/datasource/smart-factory-1P-withWF+WithD/woodShelf.yaml new file mode 100644 index 0000000..f4859dd --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/woodShelf.yaml @@ -0,0 +1,6 @@ +kind: object +name: "woodShelf" +spec: + name: "woodShelf" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/workforces.yaml b/config/datasource/smart-factory-1P-withWF+WithD/workforces.yaml new file mode 100644 index 0000000..f333c3d --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF+WithD/workforces.yaml @@ -0,0 +1,10 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "transportRobot" + startLocation: "ST" + number: 3 + - name: "machineWorker" + startLocation: "M" + number: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/bar-resource.yaml b/config/datasource/smart-factory-1P-withWF/bar-resource.yaml new file mode 100644 index 0000000..5959b49 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/bar-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barResource" +spec: + name: "barResource" + type: "resource" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/bar.yaml b/config/datasource/smart-factory-1P-withWF/bar.yaml new file mode 100644 index 0000000..e075f62 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/bar.yaml @@ -0,0 +1,9 @@ +kind: object +name: "bar" +spec: + name: "bar" + type: "processedResource" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/board-resource.yaml b/config/datasource/smart-factory-1P-withWF/board-resource.yaml new file mode 100644 index 0000000..43f93bb --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/board-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardResource" +spec: + name: "boardResource" + type: "resource" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/board.yaml b/config/datasource/smart-factory-1P-withWF/board.yaml new file mode 100644 index 0000000..8422765 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/board.yaml @@ -0,0 +1,9 @@ +kind: object +name: "board" +spec: + name: "board" + type: "processedResource" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/bolt.yaml b/config/datasource/smart-factory-1P-withWF/bolt.yaml new file mode 100644 index 0000000..2dacd3d --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/bolt.yaml @@ -0,0 +1,6 @@ +kind: object +name: "bolt" +spec: + name: "bolt" + type: "smallComponent" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/e0-order.yaml b/config/datasource/smart-factory-1P-withWF/e0-order.yaml new file mode 100644 index 0000000..86dcc4c --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 diff --git a/config/datasource/smart-factory-1P-withWF/e1-outgoing-stock.yaml b/config/datasource/smart-factory-1P-withWF/e1-outgoing-stock.yaml new file mode 100644 index 0000000..49cb60f --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/e1-outgoing-stock.yaml @@ -0,0 +1,44 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw" + number: 13 + change: "" + size: + - object: "bolt" + number: 13 + change: "" + size: + duration: 5 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/e2-sawing-bar.yaml b/config/datasource/smart-factory-1P-withWF/e2-sawing-bar.yaml new file mode 100644 index 0000000..25714e5 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/e2-sawing-bar.yaml @@ -0,0 +1,37 @@ +kind: datasource +name: "SawingBar" +spec: + name: "SawingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "barResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Sawed" + output: + - object: "bar" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBar" + duration: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/e2-sawing-board.yaml b/config/datasource/smart-factory-1P-withWF/e2-sawing-board.yaml new file mode 100644 index 0000000..5aef9a2 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/e2-sawing-board.yaml @@ -0,0 +1,37 @@ +kind: datasource +name: "SawingBoard" +spec: + name: "SawingBoard" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Sawed" + output: + - object: "board" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoard" + duration: 9 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/e3-drilling-bar.yaml b/config/datasource/smart-factory-1P-withWF/e3-drilling-bar.yaml new file mode 100644 index 0000000..b772c85 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/e3-drilling-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "DrillingBar" +spec: + name: "DrillingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "D" + end: "D" + workstation: "D" + selection: genericProbability + distribution: [1.0] + input: + - object: "bar" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Drilled" + output: + - object: "bar" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBar" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/e4-sanding-Bar.yaml b/config/datasource/smart-factory-1P-withWF/e4-sanding-Bar.yaml new file mode 100644 index 0000000..c33fd6c --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/e4-sanding-Bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBar" +spec: + name: "SandingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "SA" + end: "SA" + workstation: "SA" + selection: genericProbability + distribution: [1.0] + input: + - object: "bar" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Sanded bar" + output: + - object: "bar" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "TransportM1A" + duration: 2 diff --git a/config/datasource/smart-factory-1P-withWF/e4-sanding-Board.yaml b/config/datasource/smart-factory-1P-withWF/e4-sanding-Board.yaml new file mode 100644 index 0000000..14459ca --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/e4-sanding-Board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBoard" +spec: + name: "SandingBoard" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "SA" + end: "SA" + workstation: "SA" + selection: genericProbability + distribution: [1.0] + input: + - object: "board" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + eventData: + - activity: + name: "Sanded board" + output: + - object: "board" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "TransportM1AB" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/e5-assembly.yaml b/config/datasource/smart-factory-1P-withWF/e5-assembly.yaml new file mode 100644 index 0000000..e7af4e0 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/e5-assembly.yaml @@ -0,0 +1,57 @@ +kind: datasource +name: "Assembly" +spec: + name: "Assembly" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "bar" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "board" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw" + number: 13 + lastState: "" + size: + - object: "bolt" + number: 13 + lastState: "" + size: + - object: "handoverBoard" + number: 1 + lastState: "" + size: + - object: "handoverBar" + number: 1 + lastState: "" + size: + - object: "handover" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "woodShelf" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/e6-quality-control.yaml b/config/datasource/smart-factory-1P-withWF/e6-quality-control.yaml new file mode 100644 index 0000000..6ca7909 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/e6-quality-control.yaml @@ -0,0 +1,28 @@ +kind: datasource +name: "QualityControl" +spec: + name: "QualityControl" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "woodShelf" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "woodShelf" + number: 1 + change: "proofed" + size: + transition: "Shipping" + duration: 2 + diff --git a/config/datasource/smart-factory-1P-withWF/e7-shipping.yaml b/config/datasource/smart-factory-1P-withWF/e7-shipping.yaml new file mode 100644 index 0000000..c0805d2 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/e7-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "woodShelf" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "woodShelf" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/handover.yaml b/config/datasource/smart-factory-1P-withWF/handover.yaml new file mode 100644 index 0000000..b018412 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/handover.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handover" +spec: + name: "handover" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/handoverBar.yaml b/config/datasource/smart-factory-1P-withWF/handoverBar.yaml new file mode 100644 index 0000000..d9add8d --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/handoverBar.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBar" +spec: + name: "handoverBar" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/handoverBarR.yaml b/config/datasource/smart-factory-1P-withWF/handoverBarR.yaml new file mode 100644 index 0000000..aad56dd --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/handoverBarR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarR" +spec: + name: "handoverBarR" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/handoverBoard.yaml b/config/datasource/smart-factory-1P-withWF/handoverBoard.yaml new file mode 100644 index 0000000..59186c2 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/handoverBoard.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoard" +spec: + name: "handoverBoard" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/handoverBoardR.yaml b/config/datasource/smart-factory-1P-withWF/handoverBoardR.yaml new file mode 100644 index 0000000..493563a --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/handoverBoardR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardR" +spec: + name: "handoverBoardR" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/order.yaml b/config/datasource/smart-factory-1P-withWF/order.yaml new file mode 100644 index 0000000..f0ae6f9 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/resourceOrder.yaml b/config/datasource/smart-factory-1P-withWF/resourceOrder.yaml new file mode 100644 index 0000000..435f300 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/routing.yaml b/config/datasource/smart-factory-1P-withWF/routing.yaml new file mode 100644 index 0000000..02da7f5 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/routing.yaml @@ -0,0 +1,28 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + duration: 2 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "A" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + duration: 2 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "A" + duration: 1 + - routeForActivity: "Back to machine" + start: "A" + end: "M" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/screw.yaml b/config/datasource/smart-factory-1P-withWF/screw.yaml new file mode 100644 index 0000000..b721d7d --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/screw.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw" +spec: + name: "screw" + type: "smallComponent" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/t0-stock-to-machine.yaml b/config/datasource/smart-factory-1P-withWF/t0-stock-to-machine.yaml new file mode 100644 index 0000000..3bcd9b8 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/t0-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1" +spec: + name: "TransportM1" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "barResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> M1" + output: + - object: "barResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + change: "" + size: + transition: "SawingBar" + duration: 1 diff --git a/config/datasource/smart-factory-1P-withWF/t0B-stock-to-machine.yaml b/config/datasource/smart-factory-1P-withWF/t0B-stock-to-machine.yaml new file mode 100644 index 0000000..89c52b8 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/t0B-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1B" +spec: + name: "TransportM1B" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> M1" + output: + - object: "boardResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + change: "" + size: + transition: "SawingBar" + duration: 1 diff --git a/config/datasource/smart-factory-1P-withWF/t1-machine-to-assembly.yaml b/config/datasource/smart-factory-1P-withWF/t1-machine-to-assembly.yaml new file mode 100644 index 0000000..235c665 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/t1-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1A" +spec: + name: "TransportM1A" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "M" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "bar" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: M1 -> assembly" + output: + - object: "bar" + number: 4 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "handoverBar" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-1P-withWF/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-1P-withWF/t1-stock-to-assembly.yaml new file mode 100644 index 0000000..9e9ae2f --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/t1-stock-to-assembly.yaml @@ -0,0 +1,42 @@ +kind: datasource +name: "TransportSA" +spec: + name: "TransportSA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw" + number: 13 + lastState: "" + size: + - object: "bolt" + number: 13 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> assembly" + output: + - object: "screw" + number: 13 + change: "" + size: + - object: "bolt" + number: 13 + change: "" + size: + - object: "handover" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 2 diff --git a/config/datasource/smart-factory-1P-withWF/t1B-machine-to-assembly.yaml b/config/datasource/smart-factory-1P-withWF/t1B-machine-to-assembly.yaml new file mode 100644 index 0000000..0aa5b12 --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/t1B-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1AB" +spec: + name: "TransportM1AB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "M" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "board" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: M1 -> assembly" + output: + - object: "board" + number: 6 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "handoverBoard" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-1P-withWF/warehouse_stock.yaml b/config/datasource/smart-factory-1P-withWF/warehouse_stock.yaml new file mode 100644 index 0000000..455a78c --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/woodShelf.yaml b/config/datasource/smart-factory-1P-withWF/woodShelf.yaml new file mode 100644 index 0000000..f4859dd --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/woodShelf.yaml @@ -0,0 +1,6 @@ +kind: object +name: "woodShelf" +spec: + name: "woodShelf" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF/workforces.yaml b/config/datasource/smart-factory-1P-withWF/workforces.yaml new file mode 100644 index 0000000..a0f40ea --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF/workforces.yaml @@ -0,0 +1,7 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "transportRobot" + startLocation: "ST" + number: 3 \ No newline at end of file diff --git a/config/sink/ocel.yaml b/config/sink/ocel.yaml index 4f50352..da03b46 100644 --- a/config/sink/ocel.yaml +++ b/config/sink/ocel.yaml @@ -54,4 +54,5 @@ spec: - "C" - "D" - "E" - - \ No newline at end of file + - "TransportM1B" + - "TransportM1AB" \ No newline at end of file From 0cd2199e3dd25e6097abb2408b6820e8efbd456d Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 8 Aug 2025 23:26:51 +0200 Subject: [PATCH 112/124] fix no defects no wf --- .../datasource/smart-factory-1P-withoutDefects/e0-order.yaml | 5 +---- .../smart-factory-1P-withoutDefects/e4-sanding-Board.yaml | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/config/datasource/smart-factory-1P-withoutDefects/e0-order.yaml b/config/datasource/smart-factory-1P-withoutDefects/e0-order.yaml index ca7b2e5..86dcc4c 100644 --- a/config/datasource/smart-factory-1P-withoutDefects/e0-order.yaml +++ b/config/datasource/smart-factory-1P-withoutDefects/e0-order.yaml @@ -4,7 +4,7 @@ spec: name: "OrderPlacement" group: "factory" type: objectCentric - workforce: hasWorkforce + workforce: noWorkforce start: "O" end: "O" workstation: "O" @@ -15,9 +15,6 @@ spec: number: 1 lastState: "" size: - workforces: - - workforce: "manager" - number: 1 eventData: - activity: name: "order for resources" diff --git a/config/datasource/smart-factory-1P-withoutDefects/e4-sanding-Board.yaml b/config/datasource/smart-factory-1P-withoutDefects/e4-sanding-Board.yaml index 07fab9d..acae273 100644 --- a/config/datasource/smart-factory-1P-withoutDefects/e4-sanding-Board.yaml +++ b/config/datasource/smart-factory-1P-withoutDefects/e4-sanding-Board.yaml @@ -13,7 +13,7 @@ spec: input: - object: "board" number: 1 - lastState: "drilled" + lastState: "divided Resource" size: length: "" width: "5" From b8057a1013d1ef49cf17074e13264f8927592ee9 Mon Sep 17 00:00:00 2001 From: ulpi Date: Sun, 10 Aug 2025 13:30:54 +0200 Subject: [PATCH 113/124] add shelf two product configs --- .../barA-resource.yaml | 9 +++ .../smart-factory-2P-withWF+withD3/barA.yaml | 9 +++ .../barW-resource.yaml | 9 +++ .../smart-factory-2P-withWF+withD3/barW.yaml | 9 +++ .../boardA-resource.yaml | 9 +++ .../boardA.yaml | 9 +++ .../boardW-resource.yaml | 9 +++ .../boardW.yaml | 9 +++ .../e0-order.yaml | 18 +++-- .../e0a-order.yaml | 27 +++++++ .../e1-outgoing-stock.yaml | 54 +++++++++++++ .../e1a-outgoing-stock.yaml | 54 +++++++++++++ .../e2-sawing-bar.yaml | 75 +++++++++++++++++++ .../e2-sawing-board.yaml | 75 +++++++++++++++++++ .../e2a-sawing-bar.yaml | 75 +++++++++++++++++++ .../e2a-sawing-board.yaml | 75 +++++++++++++++++++ .../e3-drilling-bar.yaml | 48 ++++++++++++ .../e3a-drilling-bar.yaml | 48 ++++++++++++ .../e4-sanding-Bar.yaml | 36 +++++++++ .../e4-sanding-Board.yaml | 36 +++++++++ .../e4a-sanding-Bar.yaml | 36 +++++++++ .../e4a-sanding-Board.yaml | 36 +++++++++ .../e5-assembly.yaml | 75 +++++++++++++++++++ .../e5a-assembly.yaml | 75 +++++++++++++++++++ .../e6-quality-control.yaml | 46 ++++++++++++ .../e6a-quality-control.yaml | 47 ++++++++++++ .../e7-shipping.yaml | 27 +++++++ .../e7a-shipping.yaml | 27 +++++++ .../handover.yaml | 6 ++ .../handoverA.yaml | 6 ++ .../handoverBar.yaml | 6 ++ .../handoverBarA.yaml | 6 ++ .../handoverBarR.yaml | 6 ++ .../handoverBarRA.yaml | 6 ++ .../handoverBoard.yaml | 6 ++ .../handoverBoardA.yaml | 6 ++ .../handoverBoardR.yaml | 6 ++ .../handoverBoardRA.yaml | 6 ++ .../order1.yaml | 6 ++ .../order2.yaml | 6 ++ .../smart-factory-2P-withWF+withD3/pinA.yaml | 6 ++ .../smart-factory-2P-withWF+withD3/pinW.yaml | 6 ++ .../resourceOrder1.yaml | 6 ++ .../resourceOrder2.yaml | 6 ++ .../routing.yaml | 44 +++++++++++ .../screw1.yaml | 6 ++ .../screw2.yaml | 6 ++ .../shelf1.yaml | 6 ++ .../shelf2.yaml | 6 ++ .../t0A-stock-to-machine.yaml | 40 ++++++++++ .../t0BA-stock-to-machine.yaml | 40 ++++++++++ .../t0BW-stock-to-machine.yaml | 40 ++++++++++ .../t0W-stock-to-machine.yaml | 40 ++++++++++ .../t1-stock-to-assembly.yaml | 42 +++++++++++ .../t1A-machine-to-assembly.yaml | 40 ++++++++++ .../t1A-stock-to-assembly.yaml | 42 +++++++++++ .../t1BA-machine-to-assembly.yaml | 40 ++++++++++ .../t1BW-machine-to-assembly.yaml | 40 ++++++++++ .../t1W-machine-to-assembly.yaml | 40 ++++++++++ .../warehouse_stock.yaml | 12 +++ .../workforces.yaml | 13 ++++ .../barA-resource.yaml | 9 +++ .../barA.yaml | 9 +++ .../barW-resource.yaml | 9 +++ .../barW.yaml | 9 +++ .../boardA-resource.yaml | 9 +++ .../boardA.yaml | 9 +++ .../boardW-resource.yaml | 9 +++ .../boardW.yaml | 9 +++ .../e0-order.yaml | 27 +++++++ .../e0a-order.yaml | 27 +++++++ .../e1-outgoing-stock.yaml | 44 +++++++++++ .../e1a-outgoing-stock.yaml | 44 +++++++++++ .../e2-sawing-bar.yaml | 40 ++++++++++ .../e2-sawing-board.yaml | 40 ++++++++++ .../e2a-sawing-bar.yaml | 40 ++++++++++ .../e2a-sawing-board.yaml | 40 ++++++++++ .../e3-drilling-bar.yaml | 36 +++++++++ .../e3a-drilling-bar.yaml | 36 +++++++++ .../e4-sanding-Bar.yaml | 36 +++++++++ .../e4-sanding-Board.yaml | 36 +++++++++ .../e4a-sanding-Bar.yaml | 36 +++++++++ .../e4a-sanding-Board.yaml | 36 +++++++++ .../e5-assembly.yaml | 57 ++++++++++++++ .../e5a-assembly.yaml | 57 ++++++++++++++ .../e6-quality-control.yaml | 28 +++++++ .../e6a-quality-control.yaml | 28 +++++++ .../e7-shipping.yaml | 27 +++++++ .../e7a-shipping.yaml | 27 +++++++ .../handover.yaml | 6 ++ .../handoverA.yaml | 6 ++ .../handoverBar.yaml | 6 ++ .../handoverBarA.yaml | 6 ++ .../handoverBarR.yaml | 6 ++ .../handoverBarRA.yaml | 6 ++ .../handoverBoard.yaml | 6 ++ .../handoverBoardA.yaml | 6 ++ .../handoverBoardR.yaml | 6 ++ .../handoverBoardRA.yaml | 6 ++ .../order1.yaml | 6 ++ .../order2.yaml | 6 ++ .../pinA.yaml | 6 ++ .../pinW.yaml | 6 ++ .../resourceOrder1.yaml | 6 ++ .../resourceOrder2.yaml | 6 ++ .../routing.yaml | 44 +++++++++++ .../screw1.yaml | 6 ++ .../screw2.yaml | 6 ++ .../shelf1.yaml | 6 ++ .../shelf2.yaml | 6 ++ .../t0A-stock-to-machine.yaml | 40 ++++++++++ .../t0BA-stock-to-machine.yaml | 40 ++++++++++ .../t0BW-stock-to-machine.yaml | 40 ++++++++++ .../t0W-stock-to-machine.yaml | 40 ++++++++++ .../t1-stock-to-assembly.yaml | 42 +++++++++++ .../t1A-machine-to-assembly.yaml | 40 ++++++++++ .../t1A-stock-to-assembly.yaml | 42 +++++++++++ .../t1BA-machine-to-assembly.yaml | 40 ++++++++++ .../t1BW-machine-to-assembly.yaml | 40 ++++++++++ .../t1W-machine-to-assembly.yaml | 40 ++++++++++ .../warehouse_stock.yaml | 12 +++ .../workforces.yaml | 13 ++++ .../barA-resource.yaml | 9 +++ .../barA.yaml | 9 +++ .../barW-resource.yaml | 9 +++ .../barW.yaml | 9 +++ .../boardA-resource.yaml | 9 +++ .../boardA.yaml | 9 +++ .../boardW-resource.yaml | 9 +++ .../boardW.yaml | 9 +++ .../e0-order.yaml | 27 +++++++ .../e0a-order.yaml | 27 +++++++ .../e1-outgoing-stock.yaml | 44 +++++++++++ .../e1a-outgoing-stock.yaml | 44 +++++++++++ .../e2-sawing-bar.yaml | 37 +++++++++ .../e2-sawing-board.yaml | 37 +++++++++ .../e2a-sawing-bar.yaml | 37 +++++++++ .../e2a-sawing-board.yaml | 37 +++++++++ .../e3-drilling-bar.yaml | 33 ++++++++ .../e3a-drilling-bar.yaml | 33 ++++++++ .../e4-sanding-Bar.yaml | 33 ++++++++ .../e4-sanding-Board.yaml | 33 ++++++++ .../e4a-sanding-Bar.yaml | 33 ++++++++ .../e4a-sanding-Board.yaml | 33 ++++++++ .../e5-assembly.yaml | 57 ++++++++++++++ .../e5a-assembly.yaml | 57 ++++++++++++++ .../e6-quality-control.yaml | 28 +++++++ .../e6a-quality-control.yaml | 28 +++++++ .../e7-shipping.yaml | 27 +++++++ .../e7a-shipping.yaml | 27 +++++++ .../handover.yaml | 6 ++ .../handoverA.yaml | 6 ++ .../handoverBar.yaml | 6 ++ .../handoverBarA.yaml | 6 ++ .../handoverBarR.yaml | 6 ++ .../handoverBarRA.yaml | 6 ++ .../handoverBoard.yaml | 6 ++ .../handoverBoardA.yaml | 6 ++ .../handoverBoardR.yaml | 6 ++ .../handoverBoardRA.yaml | 6 ++ .../order1.yaml | 6 ++ .../order2.yaml | 6 ++ .../pinA.yaml | 6 ++ .../pinW.yaml | 6 ++ .../resourceOrder1.yaml | 6 ++ .../resourceOrder2.yaml | 6 ++ .../routing.yaml | 44 +++++++++++ .../screw1.yaml | 6 ++ .../screw2.yaml | 6 ++ .../shelf1.yaml | 6 ++ .../shelf2.yaml | 6 ++ .../t0A-stock-to-machine.yaml | 40 ++++++++++ .../t0BA-stock-to-machine.yaml | 40 ++++++++++ .../t0BW-stock-to-machine.yaml | 40 ++++++++++ .../t0W-stock-to-machine.yaml | 40 ++++++++++ .../t1-stock-to-assembly.yaml | 42 +++++++++++ .../t1A-machine-to-assembly.yaml | 40 ++++++++++ .../t1A-stock-to-assembly.yaml | 42 +++++++++++ .../t1BA-machine-to-assembly.yaml | 40 ++++++++++ .../t1BW-machine-to-assembly.yaml | 40 ++++++++++ .../t1W-machine-to-assembly.yaml | 40 ++++++++++ .../warehouse_stock.yaml | 12 +++ .../workforces.yaml | 7 ++ .../smart-factory-easier/bar-resource.yaml | 11 --- .../datasource/smart-factory-easier/bar.yaml | 11 --- .../e1-outgoing-stock.yaml | 23 ------ .../smart-factory-easier/e2-sawing-bar.yaml | 21 ------ .../smart-factory-easier/e3-drilling-bar.yaml | 21 ------ .../smart-factory-easier/e4-sanding-Bar.yaml | 21 ------ .../smart-factory-easier/e5-assembly.yaml | 40 ---------- .../smart-factory-easier/e7-shipping.yaml | 29 ------- .../smart-factory-easier/order.yaml | 8 -- .../smart-factory-easier/routing.yaml | 18 ----- .../smart-factory-easier/screw.yaml | 11 --- .../smart-factory-easier/warehouse_stock.yaml | 16 ---- .../smart-factory-easier/woodShelf.yaml | 14 ---- config/sink/ocel.yaml | 10 ++- 197 files changed, 4436 insertions(+), 251 deletions(-) create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/barA-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/barA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/barW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/barW.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/boardA-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/boardA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/boardW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/boardW.yaml rename config/datasource/{smart-factory-easier => smart-factory-2P-withWF+withD3}/e0-order.yaml (51%) create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e0a-order.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e1-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e1a-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e2-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e2-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e2a-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e2a-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e3a-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e4-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e4-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e4a-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e4a-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e5-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e5a-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e6-quality-control.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e6a-quality-control.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e7-shipping.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/e7a-shipping.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/handover.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/handoverA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/handoverBar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/handoverBarA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/handoverBarR.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/handoverBarRA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/handoverBoard.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/handoverBoardA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/handoverBoardR.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/handoverBoardRA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/order1.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/order2.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/pinA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/pinW.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/resourceOrder1.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/resourceOrder2.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/routing.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/screw1.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/screw2.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/shelf1.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/shelf2.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/t0A-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/t0BA-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/t0BW-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/t0W-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/t1-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/t1A-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/t1A-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/t1BA-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/t1BW-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/t1W-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/warehouse_stock.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withD3/workforces.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/barA-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/barA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/barW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/barW.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/boardA-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/boardA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/boardW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/boardW.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e0-order.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e0a-order.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e1-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e1a-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e2-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e2-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e2a-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e2a-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e3a-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e4-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e4-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e4a-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e4a-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e5-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e5a-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e6-quality-control.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e6a-quality-control.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e7-shipping.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/e7a-shipping.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/handover.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarR.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarRA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoard.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardR.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardRA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/order1.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/order2.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/pinA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/pinW.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/resourceOrder1.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/resourceOrder2.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/routing.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/screw1.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/screw2.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/shelf1.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/shelf2.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/t0A-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/t0BA-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/t0BW-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/t0W-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/t1-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/t1A-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/t1A-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/t1BA-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/t1BW-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/t1W-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/warehouse_stock.yaml create mode 100644 config/datasource/smart-factory-2P-withWF+withoutDefects3/workforces.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/barA-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/barA.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/barW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/barW.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/boardA-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/boardA.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/boardW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/boardW.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e0-order.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e0a-order.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e1-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e1a-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e2-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e2-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e2a-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e2a-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e3a-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e4-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e4-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e4a-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e4a-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e5-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e5a-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e6-quality-control.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e6a-quality-control.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e7-shipping.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/e7a-shipping.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/handover.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverA.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBar.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarA.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarR.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarRA.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoard.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardA.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardR.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardRA.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/order1.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/order2.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/pinA.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/pinW.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/resourceOrder1.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/resourceOrder2.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/routing.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/screw1.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/screw2.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/shelf1.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/shelf2.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/t0A-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/t0BA-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/t0BW-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/t0W-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/t1-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/t1A-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/t1A-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/t1BA-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/t1BW-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/t1W-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/warehouse_stock.yaml create mode 100644 config/datasource/smart-factory-2P-withWFwithoutDefects3/workforces.yaml delete mode 100644 config/datasource/smart-factory-easier/bar-resource.yaml delete mode 100644 config/datasource/smart-factory-easier/bar.yaml delete mode 100644 config/datasource/smart-factory-easier/e1-outgoing-stock.yaml delete mode 100644 config/datasource/smart-factory-easier/e2-sawing-bar.yaml delete mode 100644 config/datasource/smart-factory-easier/e3-drilling-bar.yaml delete mode 100644 config/datasource/smart-factory-easier/e4-sanding-Bar.yaml delete mode 100644 config/datasource/smart-factory-easier/e5-assembly.yaml delete mode 100644 config/datasource/smart-factory-easier/e7-shipping.yaml delete mode 100644 config/datasource/smart-factory-easier/order.yaml delete mode 100644 config/datasource/smart-factory-easier/routing.yaml delete mode 100644 config/datasource/smart-factory-easier/screw.yaml delete mode 100644 config/datasource/smart-factory-easier/warehouse_stock.yaml delete mode 100644 config/datasource/smart-factory-easier/woodShelf.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/barA-resource.yaml b/config/datasource/smart-factory-2P-withWF+withD3/barA-resource.yaml new file mode 100644 index 0000000..34bd237 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/barA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barAResource" +spec: + name: "barAResource" + type: "resource" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/barA.yaml b/config/datasource/smart-factory-2P-withWF+withD3/barA.yaml new file mode 100644 index 0000000..59070fc --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/barA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barA" +spec: + name: "barA" + type: "processedResource" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/barW-resource.yaml b/config/datasource/smart-factory-2P-withWF+withD3/barW-resource.yaml new file mode 100644 index 0000000..4086ca6 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/barW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barWResource" +spec: + name: "barWResource" + type: "resource" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/barW.yaml b/config/datasource/smart-factory-2P-withWF+withD3/barW.yaml new file mode 100644 index 0000000..5fd5a06 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/barW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barW" +spec: + name: "barW" + type: "processedResource" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/boardA-resource.yaml b/config/datasource/smart-factory-2P-withWF+withD3/boardA-resource.yaml new file mode 100644 index 0000000..34a8491 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/boardA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardAResource" +spec: + name: "boardAResource" + type: "resource" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/boardA.yaml b/config/datasource/smart-factory-2P-withWF+withD3/boardA.yaml new file mode 100644 index 0000000..8483dd9 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/boardA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardA" +spec: + name: "boardA" + type: "processedResource" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/boardW-resource.yaml b/config/datasource/smart-factory-2P-withWF+withD3/boardW-resource.yaml new file mode 100644 index 0000000..c107fd1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/boardW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardWResource" +spec: + name: "boardWResource" + type: "resource" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/boardW.yaml b/config/datasource/smart-factory-2P-withWF+withD3/boardW.yaml new file mode 100644 index 0000000..7a4be5c --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/boardW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardW" +spec: + name: "boardW" + type: "processedResource" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/e0-order.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e0-order.yaml similarity index 51% rename from config/datasource/smart-factory-easier/e0-order.yaml rename to config/datasource/smart-factory-2P-withWF+withD3/e0-order.yaml index 13413ef..8a48a17 100644 --- a/config/datasource/smart-factory-easier/e0-order.yaml +++ b/config/datasource/smart-factory-2P-withWF+withD3/e0-order.yaml @@ -1,21 +1,27 @@ kind: datasource -name: "" +name: "OrderPlacement" spec: - name: "" + name: "OrderPlacement" group: "factory" type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" selection: genericProbability distribution: [1.0] input: - - object: "order" + - object: "order1" number: 1 lastState: "" + size: eventData: - activity: - name: "" + name: "order for resources" output: - - object: "order" - number: "1" + - object: "resourceOrder1" + number: 1 change: "" + size: transition: "OutgoingStock" duration: 0 diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e0a-order.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e0a-order.yaml new file mode 100644 index 0000000..34285c0 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e0a-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacementA" +spec: + name: "OrderPlacementA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder2" + number: 1 + change: "" + size: + transition: "OutgoingStockA" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e1-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e1-outgoing-stock.yaml new file mode 100644 index 0000000..d7d9833 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e1-outgoing-stock.yaml @@ -0,0 +1,54 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: genericProbability + distribution: [ 0.99, 0.01 ] + input: + - object: "resourceOrder1" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw1" + number: 13 + change: "" + size: + - object: "pinW" + number: 13 + change: "" + size: + duration: 5 + transition: "" + - activity: + name: "Failure: Missing resources" + output: + - object: "" + number: 0 + change: "" + size: + duration: 2 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e1a-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e1a-outgoing-stock.yaml new file mode 100644 index 0000000..4c2151d --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e1a-outgoing-stock.yaml @@ -0,0 +1,54 @@ +kind: datasource +name: "OutgoingStockA" +spec: + name: "OutgoingStockA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: genericProbability + distribution: [ 0.99, 0.01 ] + input: + - object: "resourceOrder2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barWResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw2" + number: 13 + change: "" + size: + - object: "pinA" + number: 13 + change: "" + size: + duration: 5 + transition: "" + - activity: + name: "Failure: Missing resources" + output: + - object: "" + number: 0 + change: "" + size: + duration: 2 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e2-sawing-bar.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e2-sawing-bar.yaml new file mode 100644 index 0000000..e9c192c --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e2-sawing-bar.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBarW" +spec: + name: "SawingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "barWResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "barW" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarW" + duration: 4 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barWResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "barW" + number: 3 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + - object: "barW" + number: 1 + change: "broken" + size: + length: "1.25" + width: "" + depth: "" + duration: 4 + transition: "DrillingBarW" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e2-sawing-board.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e2-sawing-board.yaml new file mode 100644 index 0000000..cfc90d6 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e2-sawing-board.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBoardW" +spec: + name: "SawingBoardW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "boardWResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "boardW" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardW" + duration: 9 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "boardW" + number: 4 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + - object: "boardW" + number: 2 + change: "broken" + size: + length: "" + width: "4.32" + depth: "4.24" + duration: 4 + transition: "SandingBoardW" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e2a-sawing-bar.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e2a-sawing-bar.yaml new file mode 100644 index 0000000..3748a84 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e2a-sawing-bar.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBarA" +spec: + name: "SawingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "barAResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "barA" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarA" + duration: 4 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "barA" + number: 3 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + - object: "barA" + number: 1 + change: "broken" + size: + length: "1.25" + width: "" + depth: "" + duration: 4 + transition: "DrillingBarA" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e2a-sawing-board.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e2a-sawing-board.yaml new file mode 100644 index 0000000..98373c1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e2a-sawing-board.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBoardA" +spec: + name: "SawingBoardA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardRA" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "boardA" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardA" + duration: 9 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardRA" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "boardA" + number: 4 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + - object: "boardA" + number: 2 + change: "broken" + size: + length: "" + width: "4.32" + depth: "4.24" + duration: 4 + transition: "SandingBoardA" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e3-drilling-bar.yaml new file mode 100644 index 0000000..a726fe6 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e3-drilling-bar.yaml @@ -0,0 +1,48 @@ +kind: datasource +name: "DrillingBarW" +spec: + name: "DrillingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.99, 0.01] + input: + - object: "barW" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "barW" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarW" + duration: 3 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barW" + number: 1 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + duration: 20 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e3a-drilling-bar.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e3a-drilling-bar.yaml new file mode 100644 index 0000000..a4423de --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e3a-drilling-bar.yaml @@ -0,0 +1,48 @@ +kind: datasource +name: "DrillingBarA" +spec: + name: "DrillingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.99, 0.01] + input: + - object: "barA" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "barA" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarA" + duration: 3 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barA" + number: 1 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + duration: 20 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e4-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e4-sanding-Bar.yaml new file mode 100644 index 0000000..5b46039 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e4-sanding-Bar.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBarW" +spec: + name: "SandingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "barW" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "Assembly2" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e4-sanding-Board.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e4-sanding-Board.yaml new file mode 100644 index 0000000..e32bb7d --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e4-sanding-Board.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBoardW" +spec: + name: "SandingBoardW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "boardW" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly1" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e4a-sanding-Bar.yaml new file mode 100644 index 0000000..a6d3bee --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e4a-sanding-Bar.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBarA" +spec: + name: "SandingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "barA" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "Assembly1" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e4a-sanding-Board.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e4a-sanding-Board.yaml new file mode 100644 index 0000000..683a707 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e4a-sanding-Board.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBoardA" +spec: + name: "SandingBoardA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "boardA" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly2" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e5-assembly.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e5-assembly.yaml new file mode 100644 index 0000000..252d51e --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e5-assembly.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "Assembly1" +spec: + name: "Assembly1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.94, 0.03, 0.03 ] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardW" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw1" + number: 13 + lastState: "" + size: + - object: "pinW" + number: 13 + lastState: "" + size: + - object: "handoverBoard" + number: 1 + lastState: "" + size: + - object: "handoverBarA" + number: 1 + lastState: "" + size: + - object: "handover" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf1" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl1" + - activity: + name: "Failure: Overheating" + output: + - object: "shelf1" + number: 1 + change: "overheated" + size: + transition: "" + duration: 2 + - activity: + name: "Failure: Item broke" + output: + - object: "shelf1" + number: 1 + change: "broke" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e5a-assembly.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e5a-assembly.yaml new file mode 100644 index 0000000..0a361df --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e5a-assembly.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "Assembly2" +spec: + name: "Assembly2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.94, 0.03, 0.03 ] + input: + - object: "barW" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardA" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw2" + number: 13 + lastState: "" + size: + - object: "pinA" + number: 13 + lastState: "" + size: + - object: "handoverBoardA" + number: 1 + lastState: "" + size: + - object: "handoverBar" + number: 1 + lastState: "" + size: + - object: "handoverA" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf2" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl2" + - activity: + name: "Failure: Overheating" + output: + - object: "shelf2" + number: 1 + change: "overheated" + size: + transition: "" + duration: 2 + - activity: + name: "Failure: Item broke" + output: + - object: "shelf2" + number: 1 + change: "broke" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e6-quality-control.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e6-quality-control.yaml new file mode 100644 index 0000000..dd8217e --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e6-quality-control.yaml @@ -0,0 +1,46 @@ +kind: datasource +name: "QualityControl1" +spec: + name: "QualityControl1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.8, 0.15, 0.05] + input: + - object: "shelf1" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf1" + number: 1 + change: "proofed" + size: + transition: "Shipping1" + duration: 2 + - activity: + name: "Item Corrections" + output: + - object: "shelf1" + number: 1 + change: "proofed" + size: + transition: "Shipping1" + duration: 12 + - activity: + name: "Failure: Quality Insufficient" + output: + - object: "shelf1" + number: 1 + change: "damaged" + size: + transition: "" + duration: 2 + diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e6a-quality-control.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e6a-quality-control.yaml new file mode 100644 index 0000000..c838db3 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e6a-quality-control.yaml @@ -0,0 +1,47 @@ +kind: datasource +name: "QualityControl2" +spec: + name: "QualityControl2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.8, 0.15, 0.05] + input: + - object: "shelf2" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 2 + - activity: + name: "Item Corrections" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 12 + - activity: + name: "Failure: Quality Insufficient" + output: + - object: "shelf2" + number: 1 + change: "damaged" + size: + transition: "" + duration: 2 + + diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e7-shipping.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e7-shipping.yaml new file mode 100644 index 0000000..d3c6dd3 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e7-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping1" +spec: + name: "Shipping1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf1" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf1" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e7a-shipping.yaml b/config/datasource/smart-factory-2P-withWF+withD3/e7a-shipping.yaml new file mode 100644 index 0000000..94c8670 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/e7a-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping2" +spec: + name: "Shipping2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf2" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handover.yaml b/config/datasource/smart-factory-2P-withWF+withD3/handover.yaml new file mode 100644 index 0000000..b018412 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/handover.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handover" +spec: + name: "handover" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverA.yaml b/config/datasource/smart-factory-2P-withWF+withD3/handoverA.yaml new file mode 100644 index 0000000..c4b4b17 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/handoverA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverA" +spec: + name: "handoverA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverBar.yaml b/config/datasource/smart-factory-2P-withWF+withD3/handoverBar.yaml new file mode 100644 index 0000000..d9add8d --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/handoverBar.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBar" +spec: + name: "handoverBar" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverBarA.yaml b/config/datasource/smart-factory-2P-withWF+withD3/handoverBarA.yaml new file mode 100644 index 0000000..3b887b5 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/handoverBarA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarA" +spec: + name: "handoverBarA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverBarR.yaml b/config/datasource/smart-factory-2P-withWF+withD3/handoverBarR.yaml new file mode 100644 index 0000000..aad56dd --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/handoverBarR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarR" +spec: + name: "handoverBarR" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverBarRA.yaml b/config/datasource/smart-factory-2P-withWF+withD3/handoverBarRA.yaml new file mode 100644 index 0000000..a651621 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/handoverBarRA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarRA" +spec: + name: "handoverBarRA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverBoard.yaml b/config/datasource/smart-factory-2P-withWF+withD3/handoverBoard.yaml new file mode 100644 index 0000000..59186c2 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/handoverBoard.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoard" +spec: + name: "handoverBoard" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverBoardA.yaml b/config/datasource/smart-factory-2P-withWF+withD3/handoverBoardA.yaml new file mode 100644 index 0000000..0a6adfa --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/handoverBoardA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardA" +spec: + name: "handoverBoardA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverBoardR.yaml b/config/datasource/smart-factory-2P-withWF+withD3/handoverBoardR.yaml new file mode 100644 index 0000000..493563a --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/handoverBoardR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardR" +spec: + name: "handoverBoardR" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverBoardRA.yaml b/config/datasource/smart-factory-2P-withWF+withD3/handoverBoardRA.yaml new file mode 100644 index 0000000..42e7977 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/handoverBoardRA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardRA" +spec: + name: "handoverBoardRA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/order1.yaml b/config/datasource/smart-factory-2P-withWF+withD3/order1.yaml new file mode 100644 index 0000000..bcaf45f --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/order1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order1" +spec: + name: "order1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/order2.yaml b/config/datasource/smart-factory-2P-withWF+withD3/order2.yaml new file mode 100644 index 0000000..dbc0dcf --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/order2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order2" +spec: + name: "order2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/pinA.yaml b/config/datasource/smart-factory-2P-withWF+withD3/pinA.yaml new file mode 100644 index 0000000..3ff2a03 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/pinA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinA" +spec: + name: "pinA" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/pinW.yaml b/config/datasource/smart-factory-2P-withWF+withD3/pinW.yaml new file mode 100644 index 0000000..96ec4f7 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/pinW.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinW" +spec: + name: "pinW" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/resourceOrder1.yaml b/config/datasource/smart-factory-2P-withWF+withD3/resourceOrder1.yaml new file mode 100644 index 0000000..be67937 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/resourceOrder1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder1" +spec: + name: "resourceOrder1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/resourceOrder2.yaml b/config/datasource/smart-factory-2P-withWF+withD3/resourceOrder2.yaml new file mode 100644 index 0000000..7fcf9c4 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/resourceOrder2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder2" +spec: + name: "resourceOrder2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/routing.yaml b/config/datasource/smart-factory-2P-withWF+withD3/routing.yaml new file mode 100644 index 0000000..f7e82a6 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/routing.yaml @@ -0,0 +1,44 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "W" + duration: 3 + - routeForActivity: "retrieve resources" + start: "ST" + end: "Al" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "A" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "W" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "W" + end: "A" + duration: 3 + - routeForActivity: "Back to machine" + start: "A" + end: "W" + duration: 3 + - routeForActivity: "Back to stock" + start: "Al" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "Al" + end: "A" + duration: 3 + - routeForActivity: "Back to machine" + start: "A" + end: "Al" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/screw1.yaml b/config/datasource/smart-factory-2P-withWF+withD3/screw1.yaml new file mode 100644 index 0000000..45e5f8b --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/screw1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw1" +spec: + name: "screw1" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/screw2.yaml b/config/datasource/smart-factory-2P-withWF+withD3/screw2.yaml new file mode 100644 index 0000000..6d6076e --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/screw2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw2" +spec: + name: "screw2" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/shelf1.yaml b/config/datasource/smart-factory-2P-withWF+withD3/shelf1.yaml new file mode 100644 index 0000000..ea1a1d8 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/shelf1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf1" +spec: + name: "shelf1" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/shelf2.yaml b/config/datasource/smart-factory-2P-withWF+withD3/shelf2.yaml new file mode 100644 index 0000000..7115caa --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/shelf2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf2" +spec: + name: "shelf2" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t0A-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF+withD3/t0A-stock-to-machine.yaml new file mode 100644 index 0000000..b92d1cc --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/t0A-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMA" +spec: + name: "TransportMA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barAResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MA" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + change: "" + size: + transition: "SawingBarA" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t0BA-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF+withD3/t0BA-stock-to-machine.yaml new file mode 100644 index 0000000..ffcf36d --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/t0BA-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1BA" +spec: + name: "TransportM1BA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MA" + output: + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardRA" + number: 1 + change: "" + size: + transition: "SawingBoardA" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t0BW-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF+withD3/t0BW-stock-to-machine.yaml new file mode 100644 index 0000000..ba6bd7a --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/t0BW-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1B" +spec: + name: "TransportM1B" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardWResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MW" + output: + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + change: "" + size: + transition: "SawingBarW" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t0W-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF+withD3/t0W-stock-to-machine.yaml new file mode 100644 index 0000000..eb86094 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/t0W-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMW" +spec: + name: "TransportMW" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barWResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MW" + output: + - object: "barWResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + change: "" + size: + transition: "SawingBarW" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF+withD3/t1-stock-to-assembly.yaml new file mode 100644 index 0000000..5f1efe1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/t1-stock-to-assembly.yaml @@ -0,0 +1,42 @@ +kind: datasource +name: "TransportSA" +spec: + name: "TransportSA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw1" + number: 13 + lastState: "" + size: + - object: "pinW" + number: 13 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> assembly" + output: + - object: "screw1" + number: 13 + change: "" + size: + - object: "pinW" + number: 13 + change: "" + size: + - object: "handover" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t1A-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF+withD3/t1A-machine-to-assembly.yaml new file mode 100644 index 0000000..90fc2c1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/t1A-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMAlA" +spec: + name: "TransportMAlA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "Al" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MA -> assembly" + output: + - object: "barA" + number: 4 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "handoverBarA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t1A-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF+withD3/t1A-stock-to-assembly.yaml new file mode 100644 index 0000000..f26053f --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/t1A-stock-to-assembly.yaml @@ -0,0 +1,42 @@ +kind: datasource +name: "TransportSAAl" +spec: + name: "TransportSAAl" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw2" + number: 13 + lastState: "" + size: + - object: "pinA" + number: 13 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> assembly" + output: + - object: "screw2" + number: 13 + change: "" + size: + - object: "pinA" + number: 13 + change: "" + size: + - object: "handoverA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t1BA-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF+withD3/t1BA-machine-to-assembly.yaml new file mode 100644 index 0000000..06a5b53 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/t1BA-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMAlAB" +spec: + name: "TransportMAlAB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "Al" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MAl -> assembly" + output: + - object: "boardA" + number: 6 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "handoverBoardA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t1BW-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF+withD3/t1BW-machine-to-assembly.yaml new file mode 100644 index 0000000..8c4d0e0 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/t1BW-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMWAB" +spec: + name: "TransportMWAB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "W" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MW -> assembly" + output: + - object: "boardW" + number: 6 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "handoverBoard" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t1W-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF+withD3/t1W-machine-to-assembly.yaml new file mode 100644 index 0000000..9c67240 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/t1W-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMWA" +spec: + name: "TransportMWA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "W" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MW -> assembly" + output: + - object: "barW" + number: 4 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "handoverBar" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF+withD3/warehouse_stock.yaml b/config/datasource/smart-factory-2P-withWF+withD3/warehouse_stock.yaml new file mode 100644 index 0000000..bca347e --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/warehouse_stock.yaml @@ -0,0 +1,12 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order2" + number: 1000 + lastState: + size: + - object: "order1" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withD3/workforces.yaml b/config/datasource/smart-factory-2P-withWF+withD3/workforces.yaml new file mode 100644 index 0000000..8bc09fb --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withD3/workforces.yaml @@ -0,0 +1,13 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "transportRobot" + startLocation: "ST" + number: 3 + - name: "machineWorker" + startLocation: "W" + number: 2 + - name: "machineWorker" + startLocation: "Al" + number: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/barA-resource.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/barA-resource.yaml new file mode 100644 index 0000000..34bd237 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/barA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barAResource" +spec: + name: "barAResource" + type: "resource" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/barA.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/barA.yaml new file mode 100644 index 0000000..59070fc --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/barA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barA" +spec: + name: "barA" + type: "processedResource" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/barW-resource.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/barW-resource.yaml new file mode 100644 index 0000000..4086ca6 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/barW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barWResource" +spec: + name: "barWResource" + type: "resource" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/barW.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/barW.yaml new file mode 100644 index 0000000..5fd5a06 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/barW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barW" +spec: + name: "barW" + type: "processedResource" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/boardA-resource.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/boardA-resource.yaml new file mode 100644 index 0000000..34a8491 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/boardA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardAResource" +spec: + name: "boardAResource" + type: "resource" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/boardA.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/boardA.yaml new file mode 100644 index 0000000..8483dd9 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/boardA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardA" +spec: + name: "boardA" + type: "processedResource" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/boardW-resource.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/boardW-resource.yaml new file mode 100644 index 0000000..c107fd1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/boardW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardWResource" +spec: + name: "boardWResource" + type: "resource" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/boardW.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/boardW.yaml new file mode 100644 index 0000000..7a4be5c --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/boardW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardW" +spec: + name: "boardW" + type: "processedResource" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e0-order.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e0-order.yaml new file mode 100644 index 0000000..8a48a17 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order1" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder1" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e0a-order.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e0a-order.yaml new file mode 100644 index 0000000..34285c0 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e0a-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacementA" +spec: + name: "OrderPlacementA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder2" + number: 1 + change: "" + size: + transition: "OutgoingStockA" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e1-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e1-outgoing-stock.yaml new file mode 100644 index 0000000..892ae06 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e1-outgoing-stock.yaml @@ -0,0 +1,44 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder1" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw1" + number: 13 + change: "" + size: + - object: "pinW" + number: 13 + change: "" + size: + duration: 5 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e1a-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e1a-outgoing-stock.yaml new file mode 100644 index 0000000..3ac506b --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e1a-outgoing-stock.yaml @@ -0,0 +1,44 @@ +kind: datasource +name: "OutgoingStockA" +spec: + name: "OutgoingStockA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barWResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw2" + number: 13 + change: "" + size: + - object: "pinA" + number: 13 + change: "" + size: + duration: 5 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e2-sawing-bar.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e2-sawing-bar.yaml new file mode 100644 index 0000000..7112f77 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e2-sawing-bar.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "SawingBarW" +spec: + name: "SawingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barWResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "barW" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarW" + duration: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e2-sawing-board.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e2-sawing-board.yaml new file mode 100644 index 0000000..d8afee8 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e2-sawing-board.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "SawingBoardW" +spec: + name: "SawingBoardW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardWResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "boardW" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardW" + duration: 9 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e2a-sawing-bar.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e2a-sawing-bar.yaml new file mode 100644 index 0000000..2c41bda --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e2a-sawing-bar.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "SawingBarA" +spec: + name: "SawingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barAResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "barA" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarA" + duration: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e2a-sawing-board.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e2a-sawing-board.yaml new file mode 100644 index 0000000..c9e09b4 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e2a-sawing-board.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "SawingBoardA" +spec: + name: "SawingBoardA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardRA" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "boardA" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardA" + duration: 9 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e3-drilling-bar.yaml new file mode 100644 index 0000000..83652da --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e3-drilling-bar.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "DrillingBarW" +spec: + name: "DrillingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "barW" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarW" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e3a-drilling-bar.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e3a-drilling-bar.yaml new file mode 100644 index 0000000..f41201b --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e3a-drilling-bar.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "DrillingBarA" +spec: + name: "DrillingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "barA" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarA" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e4-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e4-sanding-Bar.yaml new file mode 100644 index 0000000..5b46039 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e4-sanding-Bar.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBarW" +spec: + name: "SandingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "barW" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "Assembly2" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e4-sanding-Board.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e4-sanding-Board.yaml new file mode 100644 index 0000000..e32bb7d --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e4-sanding-Board.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBoardW" +spec: + name: "SandingBoardW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "boardW" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly1" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e4a-sanding-Bar.yaml new file mode 100644 index 0000000..a6d3bee --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e4a-sanding-Bar.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBarA" +spec: + name: "SandingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "barA" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "Assembly1" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e4a-sanding-Board.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e4a-sanding-Board.yaml new file mode 100644 index 0000000..683a707 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e4a-sanding-Board.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBoardA" +spec: + name: "SandingBoardA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "boardA" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly2" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e5-assembly.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e5-assembly.yaml new file mode 100644 index 0000000..10cf685 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e5-assembly.yaml @@ -0,0 +1,57 @@ +kind: datasource +name: "Assembly1" +spec: + name: "Assembly1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardW" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw1" + number: 13 + lastState: "" + size: + - object: "pinW" + number: 13 + lastState: "" + size: + - object: "handoverBoard" + number: 1 + lastState: "" + size: + - object: "handoverBarA" + number: 1 + lastState: "" + size: + - object: "handover" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf1" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl1" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e5a-assembly.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e5a-assembly.yaml new file mode 100644 index 0000000..c89eeaa --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e5a-assembly.yaml @@ -0,0 +1,57 @@ +kind: datasource +name: "Assembly2" +spec: + name: "Assembly2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "barW" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardA" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw2" + number: 13 + lastState: "" + size: + - object: "pinA" + number: 13 + lastState: "" + size: + - object: "handoverBoardA" + number: 1 + lastState: "" + size: + - object: "handoverBar" + number: 1 + lastState: "" + size: + - object: "handoverA" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf2" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl2" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e6-quality-control.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e6-quality-control.yaml new file mode 100644 index 0000000..4fa5e58 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e6-quality-control.yaml @@ -0,0 +1,28 @@ +kind: datasource +name: "QualityControl1" +spec: + name: "QualityControl1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf1" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf1" + number: 1 + change: "proofed" + size: + transition: "Shipping1" + duration: 2 + diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e6a-quality-control.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e6a-quality-control.yaml new file mode 100644 index 0000000..2e7f462 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e6a-quality-control.yaml @@ -0,0 +1,28 @@ +kind: datasource +name: "QualityControl2" +spec: + name: "QualityControl2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 2 + diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e7-shipping.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e7-shipping.yaml new file mode 100644 index 0000000..d3c6dd3 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e7-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping1" +spec: + name: "Shipping1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf1" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf1" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e7a-shipping.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e7a-shipping.yaml new file mode 100644 index 0000000..94c8670 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/e7a-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping2" +spec: + name: "Shipping2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf2" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handover.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handover.yaml new file mode 100644 index 0000000..b018412 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handover.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handover" +spec: + name: "handover" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverA.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverA.yaml new file mode 100644 index 0000000..c4b4b17 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverA" +spec: + name: "handoverA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBar.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBar.yaml new file mode 100644 index 0000000..d9add8d --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBar.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBar" +spec: + name: "handoverBar" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarA.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarA.yaml new file mode 100644 index 0000000..3b887b5 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarA" +spec: + name: "handoverBarA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarR.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarR.yaml new file mode 100644 index 0000000..aad56dd --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarR" +spec: + name: "handoverBarR" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarRA.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarRA.yaml new file mode 100644 index 0000000..a651621 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarRA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarRA" +spec: + name: "handoverBarRA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoard.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoard.yaml new file mode 100644 index 0000000..59186c2 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoard.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoard" +spec: + name: "handoverBoard" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardA.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardA.yaml new file mode 100644 index 0000000..0a6adfa --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardA" +spec: + name: "handoverBoardA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardR.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardR.yaml new file mode 100644 index 0000000..493563a --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardR" +spec: + name: "handoverBoardR" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardRA.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardRA.yaml new file mode 100644 index 0000000..42e7977 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardRA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardRA" +spec: + name: "handoverBoardRA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/order1.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/order1.yaml new file mode 100644 index 0000000..bcaf45f --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/order1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order1" +spec: + name: "order1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/order2.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/order2.yaml new file mode 100644 index 0000000..dbc0dcf --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/order2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order2" +spec: + name: "order2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/pinA.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/pinA.yaml new file mode 100644 index 0000000..3ff2a03 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/pinA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinA" +spec: + name: "pinA" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/pinW.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/pinW.yaml new file mode 100644 index 0000000..96ec4f7 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/pinW.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinW" +spec: + name: "pinW" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/resourceOrder1.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/resourceOrder1.yaml new file mode 100644 index 0000000..be67937 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/resourceOrder1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder1" +spec: + name: "resourceOrder1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/resourceOrder2.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/resourceOrder2.yaml new file mode 100644 index 0000000..7fcf9c4 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/resourceOrder2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder2" +spec: + name: "resourceOrder2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/routing.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/routing.yaml new file mode 100644 index 0000000..f7e82a6 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/routing.yaml @@ -0,0 +1,44 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "W" + duration: 3 + - routeForActivity: "retrieve resources" + start: "ST" + end: "Al" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "A" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "W" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "W" + end: "A" + duration: 3 + - routeForActivity: "Back to machine" + start: "A" + end: "W" + duration: 3 + - routeForActivity: "Back to stock" + start: "Al" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "Al" + end: "A" + duration: 3 + - routeForActivity: "Back to machine" + start: "A" + end: "Al" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/screw1.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/screw1.yaml new file mode 100644 index 0000000..45e5f8b --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/screw1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw1" +spec: + name: "screw1" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/screw2.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/screw2.yaml new file mode 100644 index 0000000..6d6076e --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/screw2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw2" +spec: + name: "screw2" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/shelf1.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/shelf1.yaml new file mode 100644 index 0000000..ea1a1d8 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/shelf1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf1" +spec: + name: "shelf1" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/shelf2.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/shelf2.yaml new file mode 100644 index 0000000..7115caa --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/shelf2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf2" +spec: + name: "shelf2" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t0A-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t0A-stock-to-machine.yaml new file mode 100644 index 0000000..b92d1cc --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t0A-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMA" +spec: + name: "TransportMA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barAResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MA" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + change: "" + size: + transition: "SawingBarA" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t0BA-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t0BA-stock-to-machine.yaml new file mode 100644 index 0000000..ffcf36d --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t0BA-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1BA" +spec: + name: "TransportM1BA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MA" + output: + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardRA" + number: 1 + change: "" + size: + transition: "SawingBoardA" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t0BW-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t0BW-stock-to-machine.yaml new file mode 100644 index 0000000..ba6bd7a --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t0BW-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1B" +spec: + name: "TransportM1B" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardWResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MW" + output: + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + change: "" + size: + transition: "SawingBarW" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t0W-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t0W-stock-to-machine.yaml new file mode 100644 index 0000000..eb86094 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t0W-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMW" +spec: + name: "TransportMW" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barWResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MW" + output: + - object: "barWResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + change: "" + size: + transition: "SawingBarW" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1-stock-to-assembly.yaml new file mode 100644 index 0000000..5f1efe1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1-stock-to-assembly.yaml @@ -0,0 +1,42 @@ +kind: datasource +name: "TransportSA" +spec: + name: "TransportSA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw1" + number: 13 + lastState: "" + size: + - object: "pinW" + number: 13 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> assembly" + output: + - object: "screw1" + number: 13 + change: "" + size: + - object: "pinW" + number: 13 + change: "" + size: + - object: "handover" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1A-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1A-machine-to-assembly.yaml new file mode 100644 index 0000000..90fc2c1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1A-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMAlA" +spec: + name: "TransportMAlA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "Al" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MA -> assembly" + output: + - object: "barA" + number: 4 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "handoverBarA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1A-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1A-stock-to-assembly.yaml new file mode 100644 index 0000000..f26053f --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1A-stock-to-assembly.yaml @@ -0,0 +1,42 @@ +kind: datasource +name: "TransportSAAl" +spec: + name: "TransportSAAl" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw2" + number: 13 + lastState: "" + size: + - object: "pinA" + number: 13 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> assembly" + output: + - object: "screw2" + number: 13 + change: "" + size: + - object: "pinA" + number: 13 + change: "" + size: + - object: "handoverA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1BA-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1BA-machine-to-assembly.yaml new file mode 100644 index 0000000..06a5b53 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1BA-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMAlAB" +spec: + name: "TransportMAlAB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "Al" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MAl -> assembly" + output: + - object: "boardA" + number: 6 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "handoverBoardA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1BW-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1BW-machine-to-assembly.yaml new file mode 100644 index 0000000..8c4d0e0 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1BW-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMWAB" +spec: + name: "TransportMWAB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "W" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MW -> assembly" + output: + - object: "boardW" + number: 6 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "handoverBoard" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1W-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1W-machine-to-assembly.yaml new file mode 100644 index 0000000..9c67240 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1W-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMWA" +spec: + name: "TransportMWA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "W" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MW -> assembly" + output: + - object: "barW" + number: 4 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "handoverBar" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/warehouse_stock.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/warehouse_stock.yaml new file mode 100644 index 0000000..bca347e --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/warehouse_stock.yaml @@ -0,0 +1,12 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order2" + number: 1000 + lastState: + size: + - object: "order1" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/workforces.yaml b/config/datasource/smart-factory-2P-withWF+withoutDefects3/workforces.yaml new file mode 100644 index 0000000..8bc09fb --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF+withoutDefects3/workforces.yaml @@ -0,0 +1,13 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "transportRobot" + startLocation: "ST" + number: 3 + - name: "machineWorker" + startLocation: "W" + number: 2 + - name: "machineWorker" + startLocation: "Al" + number: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/barA-resource.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/barA-resource.yaml new file mode 100644 index 0000000..34bd237 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/barA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barAResource" +spec: + name: "barAResource" + type: "resource" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/barA.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/barA.yaml new file mode 100644 index 0000000..59070fc --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/barA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barA" +spec: + name: "barA" + type: "processedResource" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/barW-resource.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/barW-resource.yaml new file mode 100644 index 0000000..4086ca6 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/barW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barWResource" +spec: + name: "barWResource" + type: "resource" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/barW.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/barW.yaml new file mode 100644 index 0000000..5fd5a06 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/barW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barW" +spec: + name: "barW" + type: "processedResource" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/boardA-resource.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/boardA-resource.yaml new file mode 100644 index 0000000..34a8491 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/boardA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardAResource" +spec: + name: "boardAResource" + type: "resource" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/boardA.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/boardA.yaml new file mode 100644 index 0000000..8483dd9 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/boardA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardA" +spec: + name: "boardA" + type: "processedResource" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/boardW-resource.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/boardW-resource.yaml new file mode 100644 index 0000000..c107fd1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/boardW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardWResource" +spec: + name: "boardWResource" + type: "resource" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/boardW.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/boardW.yaml new file mode 100644 index 0000000..7a4be5c --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/boardW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardW" +spec: + name: "boardW" + type: "processedResource" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e0-order.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e0-order.yaml new file mode 100644 index 0000000..8a48a17 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order1" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder1" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e0a-order.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e0a-order.yaml new file mode 100644 index 0000000..34285c0 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e0a-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacementA" +spec: + name: "OrderPlacementA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder2" + number: 1 + change: "" + size: + transition: "OutgoingStockA" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e1-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e1-outgoing-stock.yaml new file mode 100644 index 0000000..892ae06 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e1-outgoing-stock.yaml @@ -0,0 +1,44 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder1" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw1" + number: 13 + change: "" + size: + - object: "pinW" + number: 13 + change: "" + size: + duration: 5 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e1a-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e1a-outgoing-stock.yaml new file mode 100644 index 0000000..3ac506b --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e1a-outgoing-stock.yaml @@ -0,0 +1,44 @@ +kind: datasource +name: "OutgoingStockA" +spec: + name: "OutgoingStockA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barWResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw2" + number: 13 + change: "" + size: + - object: "pinA" + number: 13 + change: "" + size: + duration: 5 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e2-sawing-bar.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e2-sawing-bar.yaml new file mode 100644 index 0000000..b5b0393 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e2-sawing-bar.yaml @@ -0,0 +1,37 @@ +kind: datasource +name: "SawingBarW" +spec: + name: "SawingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barWResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Sawed" + output: + - object: "barW" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarW" + duration: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e2-sawing-board.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e2-sawing-board.yaml new file mode 100644 index 0000000..ccc5f18 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e2-sawing-board.yaml @@ -0,0 +1,37 @@ +kind: datasource +name: "SawingBoardW" +spec: + name: "SawingBoardW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardWResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Sawed" + output: + - object: "boardW" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardW" + duration: 9 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e2a-sawing-bar.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e2a-sawing-bar.yaml new file mode 100644 index 0000000..c08bb6d --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e2a-sawing-bar.yaml @@ -0,0 +1,37 @@ +kind: datasource +name: "SawingBarA" +spec: + name: "SawingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barAResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Sawed" + output: + - object: "barA" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarA" + duration: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e2a-sawing-board.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e2a-sawing-board.yaml new file mode 100644 index 0000000..4157634 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e2a-sawing-board.yaml @@ -0,0 +1,37 @@ +kind: datasource +name: "SawingBoardA" +spec: + name: "SawingBoardA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardRA" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Sawed" + output: + - object: "boardA" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardA" + duration: 9 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e3-drilling-bar.yaml new file mode 100644 index 0000000..77004b5 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e3-drilling-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "DrillingBarW" +spec: + name: "DrillingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Drilled" + output: + - object: "barW" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarW" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e3a-drilling-bar.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e3a-drilling-bar.yaml new file mode 100644 index 0000000..5c0c9aa --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e3a-drilling-bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "DrillingBarA" +spec: + name: "DrillingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Drilled" + output: + - object: "barA" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarA" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e4-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e4-sanding-Bar.yaml new file mode 100644 index 0000000..d9a9173 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e4-sanding-Bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBarW" +spec: + name: "SandingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Sanded" + output: + - object: "barW" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "Assembly2" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e4-sanding-Board.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e4-sanding-Board.yaml new file mode 100644 index 0000000..d7341b1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e4-sanding-Board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBoardW" +spec: + name: "SandingBoardW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + eventData: + - activity: + name: "Sanded" + output: + - object: "boardW" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly1" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e4a-sanding-Bar.yaml new file mode 100644 index 0000000..38873af --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e4a-sanding-Bar.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBarA" +spec: + name: "SandingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + eventData: + - activity: + name: "Sanded" + output: + - object: "barA" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "Assembly1" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e4a-sanding-Board.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e4a-sanding-Board.yaml new file mode 100644 index 0000000..8d7c545 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e4a-sanding-Board.yaml @@ -0,0 +1,33 @@ +kind: datasource +name: "SandingBoardA" +spec: + name: "SandingBoardA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + eventData: + - activity: + name: "Sanded" + output: + - object: "boardA" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly2" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e5-assembly.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e5-assembly.yaml new file mode 100644 index 0000000..10cf685 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e5-assembly.yaml @@ -0,0 +1,57 @@ +kind: datasource +name: "Assembly1" +spec: + name: "Assembly1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardW" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw1" + number: 13 + lastState: "" + size: + - object: "pinW" + number: 13 + lastState: "" + size: + - object: "handoverBoard" + number: 1 + lastState: "" + size: + - object: "handoverBarA" + number: 1 + lastState: "" + size: + - object: "handover" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf1" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl1" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e5a-assembly.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e5a-assembly.yaml new file mode 100644 index 0000000..c89eeaa --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e5a-assembly.yaml @@ -0,0 +1,57 @@ +kind: datasource +name: "Assembly2" +spec: + name: "Assembly2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "barW" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardA" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw2" + number: 13 + lastState: "" + size: + - object: "pinA" + number: 13 + lastState: "" + size: + - object: "handoverBoardA" + number: 1 + lastState: "" + size: + - object: "handoverBar" + number: 1 + lastState: "" + size: + - object: "handoverA" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf2" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl2" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e6-quality-control.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e6-quality-control.yaml new file mode 100644 index 0000000..4fa5e58 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e6-quality-control.yaml @@ -0,0 +1,28 @@ +kind: datasource +name: "QualityControl1" +spec: + name: "QualityControl1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf1" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf1" + number: 1 + change: "proofed" + size: + transition: "Shipping1" + duration: 2 + diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e6a-quality-control.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e6a-quality-control.yaml new file mode 100644 index 0000000..2e7f462 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e6a-quality-control.yaml @@ -0,0 +1,28 @@ +kind: datasource +name: "QualityControl2" +spec: + name: "QualityControl2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 2 + diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e7-shipping.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e7-shipping.yaml new file mode 100644 index 0000000..d3c6dd3 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e7-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping1" +spec: + name: "Shipping1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf1" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf1" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e7a-shipping.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e7a-shipping.yaml new file mode 100644 index 0000000..94c8670 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/e7a-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping2" +spec: + name: "Shipping2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf2" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handover.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handover.yaml new file mode 100644 index 0000000..b018412 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handover.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handover" +spec: + name: "handover" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverA.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverA.yaml new file mode 100644 index 0000000..c4b4b17 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverA" +spec: + name: "handoverA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBar.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBar.yaml new file mode 100644 index 0000000..d9add8d --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBar.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBar" +spec: + name: "handoverBar" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarA.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarA.yaml new file mode 100644 index 0000000..3b887b5 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarA" +spec: + name: "handoverBarA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarR.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarR.yaml new file mode 100644 index 0000000..aad56dd --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarR" +spec: + name: "handoverBarR" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarRA.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarRA.yaml new file mode 100644 index 0000000..a651621 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarRA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarRA" +spec: + name: "handoverBarRA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoard.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoard.yaml new file mode 100644 index 0000000..59186c2 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoard.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoard" +spec: + name: "handoverBoard" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardA.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardA.yaml new file mode 100644 index 0000000..0a6adfa --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardA" +spec: + name: "handoverBoardA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardR.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardR.yaml new file mode 100644 index 0000000..493563a --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardR" +spec: + name: "handoverBoardR" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardRA.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardRA.yaml new file mode 100644 index 0000000..42e7977 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardRA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardRA" +spec: + name: "handoverBoardRA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/order1.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/order1.yaml new file mode 100644 index 0000000..bcaf45f --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/order1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order1" +spec: + name: "order1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/order2.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/order2.yaml new file mode 100644 index 0000000..dbc0dcf --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/order2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order2" +spec: + name: "order2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/pinA.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/pinA.yaml new file mode 100644 index 0000000..3ff2a03 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/pinA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinA" +spec: + name: "pinA" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/pinW.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/pinW.yaml new file mode 100644 index 0000000..96ec4f7 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/pinW.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinW" +spec: + name: "pinW" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/resourceOrder1.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/resourceOrder1.yaml new file mode 100644 index 0000000..be67937 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/resourceOrder1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder1" +spec: + name: "resourceOrder1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/resourceOrder2.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/resourceOrder2.yaml new file mode 100644 index 0000000..7fcf9c4 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/resourceOrder2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder2" +spec: + name: "resourceOrder2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/routing.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/routing.yaml new file mode 100644 index 0000000..f7e82a6 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/routing.yaml @@ -0,0 +1,44 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "W" + duration: 3 + - routeForActivity: "retrieve resources" + start: "ST" + end: "Al" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "A" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "W" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "W" + end: "A" + duration: 3 + - routeForActivity: "Back to machine" + start: "A" + end: "W" + duration: 3 + - routeForActivity: "Back to stock" + start: "Al" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "Al" + end: "A" + duration: 3 + - routeForActivity: "Back to machine" + start: "A" + end: "Al" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/screw1.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/screw1.yaml new file mode 100644 index 0000000..45e5f8b --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/screw1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw1" +spec: + name: "screw1" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/screw2.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/screw2.yaml new file mode 100644 index 0000000..6d6076e --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/screw2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw2" +spec: + name: "screw2" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/shelf1.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/shelf1.yaml new file mode 100644 index 0000000..ea1a1d8 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/shelf1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf1" +spec: + name: "shelf1" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/shelf2.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/shelf2.yaml new file mode 100644 index 0000000..7115caa --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/shelf2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf2" +spec: + name: "shelf2" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t0A-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t0A-stock-to-machine.yaml new file mode 100644 index 0000000..b92d1cc --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t0A-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMA" +spec: + name: "TransportMA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barAResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MA" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + change: "" + size: + transition: "SawingBarA" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t0BA-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t0BA-stock-to-machine.yaml new file mode 100644 index 0000000..ffcf36d --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t0BA-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1BA" +spec: + name: "TransportM1BA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MA" + output: + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardRA" + number: 1 + change: "" + size: + transition: "SawingBoardA" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t0BW-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t0BW-stock-to-machine.yaml new file mode 100644 index 0000000..ba6bd7a --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t0BW-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1B" +spec: + name: "TransportM1B" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardWResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MW" + output: + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + change: "" + size: + transition: "SawingBarW" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t0W-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t0W-stock-to-machine.yaml new file mode 100644 index 0000000..eb86094 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t0W-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMW" +spec: + name: "TransportMW" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barWResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MW" + output: + - object: "barWResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + change: "" + size: + transition: "SawingBarW" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1-stock-to-assembly.yaml new file mode 100644 index 0000000..5f1efe1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1-stock-to-assembly.yaml @@ -0,0 +1,42 @@ +kind: datasource +name: "TransportSA" +spec: + name: "TransportSA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw1" + number: 13 + lastState: "" + size: + - object: "pinW" + number: 13 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> assembly" + output: + - object: "screw1" + number: 13 + change: "" + size: + - object: "pinW" + number: 13 + change: "" + size: + - object: "handover" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1A-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1A-machine-to-assembly.yaml new file mode 100644 index 0000000..90fc2c1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1A-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMAlA" +spec: + name: "TransportMAlA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "Al" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MA -> assembly" + output: + - object: "barA" + number: 4 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "handoverBarA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1A-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1A-stock-to-assembly.yaml new file mode 100644 index 0000000..f26053f --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1A-stock-to-assembly.yaml @@ -0,0 +1,42 @@ +kind: datasource +name: "TransportSAAl" +spec: + name: "TransportSAAl" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw2" + number: 13 + lastState: "" + size: + - object: "pinA" + number: 13 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> assembly" + output: + - object: "screw2" + number: 13 + change: "" + size: + - object: "pinA" + number: 13 + change: "" + size: + - object: "handoverA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1BA-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1BA-machine-to-assembly.yaml new file mode 100644 index 0000000..06a5b53 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1BA-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMAlAB" +spec: + name: "TransportMAlAB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "Al" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MAl -> assembly" + output: + - object: "boardA" + number: 6 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "handoverBoardA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1BW-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1BW-machine-to-assembly.yaml new file mode 100644 index 0000000..8c4d0e0 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1BW-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMWAB" +spec: + name: "TransportMWAB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "W" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MW -> assembly" + output: + - object: "boardW" + number: 6 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "handoverBoard" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1W-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1W-machine-to-assembly.yaml new file mode 100644 index 0000000..9c67240 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1W-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMWA" +spec: + name: "TransportMWA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "W" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MW -> assembly" + output: + - object: "barW" + number: 4 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "handoverBar" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/warehouse_stock.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/warehouse_stock.yaml new file mode 100644 index 0000000..bca347e --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/warehouse_stock.yaml @@ -0,0 +1,12 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order2" + number: 1000 + lastState: + size: + - object: "order1" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/workforces.yaml b/config/datasource/smart-factory-2P-withWFwithoutDefects3/workforces.yaml new file mode 100644 index 0000000..a0f40ea --- /dev/null +++ b/config/datasource/smart-factory-2P-withWFwithoutDefects3/workforces.yaml @@ -0,0 +1,7 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "transportRobot" + startLocation: "ST" + number: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/bar-resource.yaml b/config/datasource/smart-factory-easier/bar-resource.yaml deleted file mode 100644 index 6b5d4e5..0000000 --- a/config/datasource/smart-factory-easier/bar-resource.yaml +++ /dev/null @@ -1,11 +0,0 @@ -kind: object -name: "barResource" -spec: - name: "barResource" - type: "resource" - input: - - object: "order" - number: 1 - lastState: "" - length: "5" - width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/bar.yaml b/config/datasource/smart-factory-easier/bar.yaml deleted file mode 100644 index 75a3cd9..0000000 --- a/config/datasource/smart-factory-easier/bar.yaml +++ /dev/null @@ -1,11 +0,0 @@ -kind: object -name: "bar" -spec: - name: "bar" - type: "processedResource" - input: - - object: "barResource" - number: 1 - lastState: "" - length: "" - width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml b/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml deleted file mode 100644 index 5541fde..0000000 --- a/config/datasource/smart-factory-easier/e1-outgoing-stock.yaml +++ /dev/null @@ -1,23 +0,0 @@ -kind: datasource -name: "OutgoingStock" -spec: - name: "OutgoingStock" - group: "factory" - type: objectCentric - selection: parallel - input: - - object: "order" - number: 1 - lastState: "" - eventData: - - activity: - name: "retrieve resources" - output: - - object: "barResource" - number: 1 - change: "" - - object: "screw" - number: 13 - change: "" - duration: 3 - transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/e2-sawing-bar.yaml b/config/datasource/smart-factory-easier/e2-sawing-bar.yaml deleted file mode 100644 index d7cd66a..0000000 --- a/config/datasource/smart-factory-easier/e2-sawing-bar.yaml +++ /dev/null @@ -1,21 +0,0 @@ -kind: datasource -name: "SawingBar" -spec: - name: "SawingBar" - group: "factory" - type: objectCentric - selection: genericProbability - distribution: [1.0] - input: - - object: "barResource" - number: 1 - lastState: "" - eventData: - - activity: - name: "Sawed" - output: - - object: "bar" - number: 4 - change: "divided Resource" - transition: "DrillingBar" - duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/e3-drilling-bar.yaml b/config/datasource/smart-factory-easier/e3-drilling-bar.yaml deleted file mode 100644 index 7173455..0000000 --- a/config/datasource/smart-factory-easier/e3-drilling-bar.yaml +++ /dev/null @@ -1,21 +0,0 @@ -kind: datasource -name: "DrillingBar" -spec: - name: "DrillingBar" - group: "factory" - type: objectCentric - selection: genericProbability - distribution: [1.0] - input: - - object: "bar" - number: 1 - lastState: "divided Resource" - eventData: - - activity: - name: "Drilled" - output: - - object: "bar" - number: 1 - change: "drilled" - transition: "SandingBar" - duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/e4-sanding-Bar.yaml b/config/datasource/smart-factory-easier/e4-sanding-Bar.yaml deleted file mode 100644 index b6df4cb..0000000 --- a/config/datasource/smart-factory-easier/e4-sanding-Bar.yaml +++ /dev/null @@ -1,21 +0,0 @@ -kind: datasource -name: "SandingBar" -spec: - name: "SandingBar" - group: "factory" - type: objectCentric - selection: genericProbability - distribution: [1.0] - input: - - object: "bar" - number: 1 - lastState: "drilled" - eventData: - - activity: - name: "Sanded bar" - output: - - object: "bar" - number: 1 - change: "sanded" - transition: "Assembly" - duration: 5 diff --git a/config/datasource/smart-factory-easier/e5-assembly.yaml b/config/datasource/smart-factory-easier/e5-assembly.yaml deleted file mode 100644 index eea58d5..0000000 --- a/config/datasource/smart-factory-easier/e5-assembly.yaml +++ /dev/null @@ -1,40 +0,0 @@ -kind: datasource -name: "Assembly" -spec: - name: "Assembly" - group: "factory" - type: objectCentric - selection: genericProbability - distribution: [ 0.8, 0.1, 0.1 ] - input: - - object: "bar" - number: 4 - lastState: "sanded" - - object: "screw" - number: 13 - lastState: "" - eventData: - - activity: - name: "Assembling completed" - output: - - object: "woodShelf" - number: 1 - change: "assembled" - duration: 10 - transition: "Shipping" - - activity: - name: "Overheating" - output: - - object: "woodShelf" - number: 1 - change: "overheated" - transition: "" - duration: 2 - - activity: - name: "Item broke" - output: - - object: "woodShelf" - number: 1 - change: "broke" - transition: "" - duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/e7-shipping.yaml b/config/datasource/smart-factory-easier/e7-shipping.yaml deleted file mode 100644 index fd9ea47..0000000 --- a/config/datasource/smart-factory-easier/e7-shipping.yaml +++ /dev/null @@ -1,29 +0,0 @@ -kind: datasource -name: "Shipping" -spec: - name: "Shipping" - group: "factory" - type: objectCentric - selection: genericProbability - distribution: [ 0.8, 0.2 ] - input: - - object: "woodShelf" - number: 1 - lastState: "" - eventData: - - activity: - name: "Package waits for sending" - output: - - object: "woodShelf" - number: 1 - change: "" - transition: "Shipping" - duration: 180 - - activity: - name: "Package sent" - output: - - object: "woodShelf" - number: 1 - change: "" - transition: "" - duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/order.yaml b/config/datasource/smart-factory-easier/order.yaml deleted file mode 100644 index caf3cdb..0000000 --- a/config/datasource/smart-factory-easier/order.yaml +++ /dev/null @@ -1,8 +0,0 @@ -kind: object -name: "order" -spec: - name: "order" - type: "order" - input: - length: "" - width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/routing.yaml b/config/datasource/smart-factory-easier/routing.yaml deleted file mode 100644 index 2457205..0000000 --- a/config/datasource/smart-factory-easier/routing.yaml +++ /dev/null @@ -1,18 +0,0 @@ -kind: route -name: "default" -spec: - routes: - - routeForActivity: "retrieve resources" - start: "OutgoingStock" - end: "SawingBar" - transferObjects: - - name: "barResource" - number: 1 - duration: 3 - - routeForActivity: "Sent to assembly station" - start: "OutgoingStock" - end: "Assembly" - transferObjects: - - name: "screw" - number: 13 - duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/screw.yaml b/config/datasource/smart-factory-easier/screw.yaml deleted file mode 100644 index 1690f6c..0000000 --- a/config/datasource/smart-factory-easier/screw.yaml +++ /dev/null @@ -1,11 +0,0 @@ -kind: object -name: "screw" -spec: - name: "screw" - type: "smallComponent" - input: - - object: "order" - number: 1 - lastState: "" - length: "" - width: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/warehouse_stock.yaml b/config/datasource/smart-factory-easier/warehouse_stock.yaml deleted file mode 100644 index ba22ca7..0000000 --- a/config/datasource/smart-factory-easier/warehouse_stock.yaml +++ /dev/null @@ -1,16 +0,0 @@ -kind: stock -name: "default" -spec: - stocks: - - object: "order" - number: 100 - lastState: - - object: "barResource" - number: 100 - lastState: - - object: "screw" - number: 500 - lastState: - - object: "bar" - number: 200 - lastState: "sanded" \ No newline at end of file diff --git a/config/datasource/smart-factory-easier/woodShelf.yaml b/config/datasource/smart-factory-easier/woodShelf.yaml deleted file mode 100644 index eafa7a9..0000000 --- a/config/datasource/smart-factory-easier/woodShelf.yaml +++ /dev/null @@ -1,14 +0,0 @@ -kind: object -name: "woodShelf" -spec: - name: "woodShelf" - type: "product" - input: - - object: "bar" - number: 4 - lastState: "sanded" - - object: "screw" - number: 13 - lastState: "" - length: "" - width: "" \ No newline at end of file diff --git a/config/sink/ocel.yaml b/config/sink/ocel.yaml index da03b46..45911c7 100644 --- a/config/sink/ocel.yaml +++ b/config/sink/ocel.yaml @@ -55,4 +55,12 @@ spec: - "D" - "E" - "TransportM1B" - - "TransportM1AB" \ No newline at end of file + - "TransportM1AB" + - "TransportMA" + - "TransportMW" + - "TransportMAlA" + - "TransportSAAl" + - "TransportMAlAB" + - "TransportMWAB" + - "TransportMWA" + - "TransportM1BA" \ No newline at end of file From 96d477afe1339dc5e9a773251854b96985413cb9 Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 28 Aug 2025 10:03:25 +0200 Subject: [PATCH 114/124] clean up simulation --- .../simulation/countbased.py | 50 +-- .../simulation/loadtest.py | 5 +- .../simulation/process_simulation.py | 326 ++---------------- .../simulation/stream.py | 5 +- 4 files changed, 53 insertions(+), 333 deletions(-) diff --git a/distributed_event_factory/simulation/countbased.py b/distributed_event_factory/simulation/countbased.py index b95a75c..55e96f0 100644 --- a/distributed_event_factory/simulation/countbased.py +++ b/distributed_event_factory/simulation/countbased.py @@ -4,6 +4,8 @@ from simulation.process_simulation_object_centric import ProcessSimulationObjectCentric from simulation.simulator_objects.object_storage import ObjectStorage +from distributed_event_factory.simulation.process_simulation import ProcessSimulator + class CountBasedSimulation(Simulation): @@ -21,26 +23,28 @@ def end_timeframe(self): def run_simulation(self, datasources, sinks, objects, routes, stocks, workforce_start_positions, root, hook=lambda: None): self.setup_datasource_sink_mapping(sinks) self.sinks = sinks - # process_simulator = ProcessSimulator( - # case_id_provider=self.case_id_provider, - # data_sources=datasources, - # max_concurrent_cases=self.max_concurrent_cases, - # objects=objects, - # routes=routes, - # stocks=stocks, - process_simulator = ProcessSimulationObjectCentric( - object_storage=ObjectStorage(), - data_sources=datasources, - objects=objects, - routes=routes, - stocks=stocks, - workforce_start_positions=workforce_start_positions - ) - - for i in range(self.simulation_steps): - event, object_store = process_simulator.simulate() - self.send_event(event, root, objects, object_store) - self.end_timeframe() - hook() - - + if objects and len(objects)>0: + process_simulator = ProcessSimulationObjectCentric( + object_storage=ObjectStorage(), + data_sources=datasources, + objects=objects, + routes=routes, + stocks=stocks, + workforce_start_positions=workforce_start_positions + ) + + for i in range(self.simulation_steps): + event, object_store = process_simulator.simulate() + self.send_event(event, root, objects, object_store) + self.end_timeframe() + hook() + else: + process_simulator = ProcessSimulator( + case_id_provider=self.case_id_provider, + data_sources=datasources, + max_concurrent_cases=self.max_concurrent_cases) + + for i in range(self.simulation_steps): + event = process_simulator.simulate() + self.send_event(event, root, objects, None) + hook() diff --git a/distributed_event_factory/simulation/loadtest.py b/distributed_event_factory/simulation/loadtest.py index 948abe3..604d8ad 100644 --- a/distributed_event_factory/simulation/loadtest.py +++ b/distributed_event_factory/simulation/loadtest.py @@ -51,10 +51,7 @@ def run_simulation(self, data_sources: Dict[str, DataSource], datasource_sink_ma process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=data_sources, - max_concurrent_cases=self.max_concurrent_cases, - objects=objects, - routes=routes, - stocks=stocks + max_concurrent_cases=self.max_concurrent_cases ) iteration = 0 while True: diff --git a/distributed_event_factory/simulation/process_simulation.py b/distributed_event_factory/simulation/process_simulation.py index 5422678..9e7e600 100644 --- a/distributed_event_factory/simulation/process_simulation.py +++ b/distributed_event_factory/simulation/process_simulation.py @@ -1,153 +1,70 @@ import string from datetime import datetime, timedelta from queue import PriorityQueue -from typing import Dict, List -import math +from typing import Dict -from core.datasource_id import ROUTING_ID -from core.object import ObjectData -from core.route import Route -from distributed_event_factory.core.end_datasource import EndDataSource from distributed_event_factory.provider.data.count_provider import CountProvider from process_mining_core.datastructure.core.event import Event from distributed_event_factory.core.datasource import DataSource from distributed_event_factory.core.datasource_id import START_SENSOR_ID, END_DATA_SOURCE_ID, DataSourceId from distributed_event_factory.provider.data.case_provider import CaseIdProvider -from provider.event.event_provider import EventDataProvider -from provider.object.input.input_provider import InputObjectProvider -from simulation.object_event import ObjectEvent - -CHANGE = "change" -LAST_STATE = "lastState" -NUMBER_OF_OBJECT = "numberOfObject" -OBJECT_NAME = "objectName" -Y_M_D_H_M_S = "%Y-%m-%d %H:%M:%S" - class ProcessSimulator: def __init__( self, data_sources: Dict[str, DataSource], case_id_provider: CaseIdProvider, - max_concurrent_cases: CountProvider, - objects: Dict[str, ObjectData], - routes: Dict[str, Route], - stocks: Dict[str, InputObjectProvider] + max_concurrent_cases: CountProvider ): self.max_concurrent_cases = max_concurrent_cases - # Add all interactions with token to the token class - self.tokens: PriorityQueue[Token] = PriorityQueue() + self.tokens: PriorityQueue[Token] = PriorityQueue(self.max_concurrent_cases.get()) self.datasources: Dict[str, DataSource] = data_sources - self.case_id_provider: CaseIdProvider = case_id_provider + self.case_id_provider = case_id_provider self.last_timestamp = datetime.now() - # Refactor to one own class, two methods get_objects, get_object_count - self.object_store: Dict[str, int] = {} - self.object_store_objects: List[ObjectData] = [] - - self.objects: Dict[str, ObjectData] = objects - self.routes: Dict[str, Route] = routes - self.stocks: Dict[str, InputObjectProvider] = stocks - - # Are that also objects? - self.orders: List[str] = [] - self.add_configured_stocks_in_warehouse(self.last_timestamp) - self.buffered_events = [] - def simulate(self) -> Event: - if not self.buffered_events: - new_events = self.simulate_next_steps() - self.buffered_events = new_events - return self.buffered_events.pop() - - def simulate_next_steps(self) -> List[Event]: - emit_event = [] - - # Potentially get stuck if no emit_event found + emit_event = None while not emit_event: if len(self.tokens.queue) < self.max_concurrent_cases.get(): token = self.start_new_case() else: token = self.tokens.get() - if token.event: - emit_event.append(token.event) - + emit_event = token.event if token.data_source_id == END_DATA_SOURCE_ID: token = self.start_new_case() if token.data_source_id == START_SENSOR_ID: - # Only one start allowed - token.data_source_id = DataSourceId( - self._get_sensor_with_id(START_SENSOR_ID).get_event_data()[0].get_transition()) - # TODO create different product orders (at the moment not used) - orderObject = self.objects.get("woodShelf") - self.orders.append(orderObject) - self.append_order(orderObject) + token.data_source_id = DataSourceId(self._get_sensor_with_id(START_SENSOR_ID).get_event_data().get_transition()) + current_data_source = self._get_sensor_with_id(token.data_source_id) event = current_data_source.get_event_data() - if type(event) is list: - for e in event: - self.inner_simulation_per_event(current_data_source, e, token) - else: - self.inner_simulation_per_event(current_data_source, event, token) - - return emit_event - - # - def inner_simulation_per_event(self, current_data_source, event, token): - required_input_objects = current_data_source.event_provider.input_objects # type parser is a weird word - - # This line can be nicer after the refactoring to an object class - if not self.check_input_in_object_store(required_input_objects): - activity, current_data_source, required_input_objects, next_datasource, output = self.set_parameters_for_previous_event( - current_data_source, required_input_objects, token) - else: next_datasource = event.get_transition() - activity = event.get_activity_provider().get_activity() - output = event.get_activity_provider().get_output() - - # to object store class - input_objects = self.remove_used_input(required_input_objects) - token.add_to_last_timestamp(event.get_duration()) - self.last_timestamp = token.last_timestamp - self.add_produced_output(output, required_input_objects, input_objects, self.last_timestamp) - if (required_input_objects is not None and required_input_objects) or output is not None: - token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source, - required_input_objects, output) - else: + activity = event.get_activity() + token.add_to_last_timestamp(event.get_duration()) + token.set_data_source_id(self.datasources[next_datasource].get_id()) + self.last_timestamp = token.last_timestamp token.event = self._build_event(token.case, activity, self.last_timestamp, current_data_source) - self.set_next_datasource_token(activity, current_data_source, next_datasource, token) - self.add_tokens(activity, current_data_source, next_datasource, output, token) + self.tokens.put(token) + + return emit_event def start_new_case(self): case_id = self.case_id_provider.get() token = Token(case_id, START_SENSOR_ID, self.last_timestamp, None) return token - def _build_event(self, case, activity, timestamp, datasource, input=None, output=None): + def _build_event(self, case, activity, timestamp, datasource): if hasattr(datasource, "sensor_id"): - if input and output: - return ObjectEvent( - timestamp=timestamp.strftime(Y_M_D_H_M_S), - activity=activity, - case_id=case, - node=datasource.sensor_id.get_name(), - group_id=datasource.group_id, - input=", ".join(str(obj) for obj in input), - output=", ".join(str(obj) for obj in output) - ) - else: - return Event( - timestamp=timestamp.strftime(Y_M_D_H_M_S), - activity=activity, - case_id=case, - node=datasource.sensor_id.get_name(), - group_id=datasource.group_id - ) - return None + return Event( + timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), + activity=activity, + case_id=case, + node=datasource.sensor_id.get_name(), + group_id=datasource.group_id + ) def _get_sensor_with_id(self, data_source_id) -> DataSource: for sensor in self.datasources: @@ -155,195 +72,6 @@ def _get_sensor_with_id(self, data_source_id) -> DataSource: return self.datasources[sensor] raise ValueError("Sensor not found") - def append_order(self, orderObject): - if orderObject.input_objects: - for input in orderObject.input_objects: - for i in range(0, input.numberOfObject): - self.orders.append(self.objects.get(input.objectName)) - self.append_order(self.objects.get(input.objectName)) - - def check_input_in_object_store(self, necessary_inputs): - for obj in necessary_inputs: - if type(obj) is not Dict: - obj = eval(str(obj)) - if obj.get(LAST_STATE): - if not self.object_store.__contains__(obj.get(OBJECT_NAME)) or self.object_store.get( - obj.get(OBJECT_NAME)) < obj.get(NUMBER_OF_OBJECT) or sum( - 1 for stored_obj in self.object_store_objects if - stored_obj.object_id.id == obj.get(OBJECT_NAME) and stored_obj.get_last_changed_value() == obj.get( - LAST_STATE)) < obj.get(NUMBER_OF_OBJECT): - return False - elif not self.object_store.__contains__(obj.get(OBJECT_NAME)) or self.object_store.get( - obj.get(OBJECT_NAME)) < obj.get(NUMBER_OF_OBJECT) or sum( - 1 for stored_obj in self.object_store_objects if - stored_obj.object_id.id == obj.get(OBJECT_NAME) and not stored_obj.values_changed) < obj.get( - NUMBER_OF_OBJECT): - return False - return True - - def add_configured_stocks_in_warehouse(self, timestamp): - if not self.stocks: - return - for stock in self.stocks.get("default"): - for i in range(stock.numberOfObject): - if stock.lastState: - obj = self.objects.get(stock.objectName).clone() - obj.add_change(ObjectData(timestamp=timestamp.strftime(Y_M_D_H_M_S), object_state=stock.lastState, - object_id=obj.object_id)) - self.object_store_objects.append(obj) - else: - self.object_store_objects.append(self.objects.get(stock.objectName).clone()) - self.object_store[stock.objectName] = stock.numberOfObject - - def set_parameters_for_previous_event(self, current_data_source, necessary_input, token): - next_datasource = token.event.node - activity = token.event.activity - output = eval(token.event.output) - if str(output).count(OBJECT_NAME) == 1: - output = [output] - necessary_input = eval(token.event.input) - if str(necessary_input).count(OBJECT_NAME) == 1: - necessary_input = [necessary_input] - current_data_source = self.datasources.get(token.event.node) - if not self.check_input_in_object_store(necessary_input): - raise ValueError("Input not found", necessary_input) - return activity, current_data_source, necessary_input, next_datasource, output - - def set_next_datasource_token(self, activity, current_data_source, next_datasource, token): - if next_datasource == ROUTING_ID.get_name(): - start_point = current_data_source.sensor_id.id - - # This is for many route files, currently only one route is configured - for route in self.routes.get("default"): - # Consider using a dictionary where activity - if route.get_route_for_activity() == activity and route.get_start() == start_point: - token.add_to_last_timestamp(route.get_duration()) - next_datasource = route.get_end() - token.set_data_source_id(self.datasources[next_datasource].get_id()) - return - else: - token.set_data_source_id(self.datasources[next_datasource].get_id()) - - def add_produced_output(self, output, necessary_input, input_objects, timestamp): - if output is not None: - for element in output: - if type(element) is not Dict: - element = eval(str(element)) - if self.object_store.get(element.get(OBJECT_NAME)) is None: - self.object_store[element.get(OBJECT_NAME)] = element.get(NUMBER_OF_OBJECT) - else: - self.object_store[element.get(OBJECT_NAME)] = self.object_store.get( - element.get(OBJECT_NAME)) + element.get(NUMBER_OF_OBJECT) - self.add_output_to_object_store_objects(element, input_objects, necessary_input, timestamp) - - def add_output_to_object_store_objects(self, element, input_objects, necessary_input, timestamp): - for i in range(0, element.get(NUMBER_OF_OBJECT)): - input_for_element = self.find_in_list_input_list(input_objects, element.get(OBJECT_NAME)) - if input_for_element: - if (element.get(CHANGE)): - input_info = self.find_in_necessary_input(necessary_input, element.get(OBJECT_NAME)) - output_object = self.find_in_list_with_change_state(input_objects, element.get(OBJECT_NAME), - input_info.lastState) - self.add_object_to_object_store_objects_with_change(element, output_object, timestamp) - else: - self.object_store_objects.append(input_objects.get(input_objects.index(element.get(OBJECT_NAME)))) - else: - if (element.get(CHANGE)): - output_object = self.objects.get(element.get(OBJECT_NAME)).clone() - self.add_object_to_object_store_objects_with_change(element, output_object, timestamp) - else: - self.object_store_objects.append(self.objects.get(element.get(OBJECT_NAME))) - - def add_object_to_object_store_objects_with_change(self, element, output_object, timestamp): - output_object.add_change( - ObjectData( - timestamp=timestamp.strftime(Y_M_D_H_M_S), - object_state=element.get(CHANGE), - object_id=output_object.object_id) - ) - self.object_store_objects.append( - output_object) - - def remove_used_input(self, necessary_input): - if necessary_input is not None: - input_objects = [] - for element in necessary_input: - if type(element) is not Dict: - element = eval(str(element)) - self.object_store[element.get(OBJECT_NAME)] = self.object_store.get( - element.get(OBJECT_NAME)) - element.get(NUMBER_OF_OBJECT) - if self.object_store.get(element.get(OBJECT_NAME)) == 0: - self.object_store.pop(element.get(OBJECT_NAME)) - - self.remove_input_from_object_store_objects(element, input_objects) - return input_objects - return None - - def remove_input_from_object_store_objects(self, element, input_objects): - for i in range(0, element.get(NUMBER_OF_OBJECT)): - if (element.get(LAST_STATE)): - object_from_store_index = self.object_store_objects.index( - self.find_in_list_with_change_state(self.object_store_objects, element.get(OBJECT_NAME), - element.get(LAST_STATE))) - else: - object_from_store_index = self.object_store_objects.index( - self.find_in_list_without_changed_value(self.object_store_objects, element.get(OBJECT_NAME))) - input_obj = self.object_store_objects.pop(object_from_store_index) - input_objects.append(input_obj) - - def add_tokens(self, activity, current_data_source, next_datasource, output, token): - if self.objects: - number_of_tokens = self.tokens.qsize() - input_of_following_event = self._get_sensor_with_id(token.data_source_id) - first_output = output[0] - if type(first_output) is not Dict: - first_output = eval(str(first_output)) - - if not isinstance(input_of_following_event, EndDataSource) and str( - first_output.get(OBJECT_NAME)) != "order": - input_of_following_event = input_of_following_event.event_provider.input_objects - for output_elem in output: - if type(output_elem) is not Dict: - output_elem = eval(str(output_elem)) - if self.find_in_necessary_input(input_of_following_event, output_elem.get(OBJECT_NAME)): - num_of_input_following_event = self.find_in_necessary_input(input_of_following_event, - output_elem.get( - OBJECT_NAME)).numberOfObject - - if output_elem.get(NUMBER_OF_OBJECT) > num_of_input_following_event: - self.set_next_datasource_token(activity, current_data_source, next_datasource, token) - output_input_factor = math.ceil( - output_elem.get(NUMBER_OF_OBJECT) / num_of_input_following_event) - event_data = self.datasources[next_datasource].get_event_data() - if type(event_data) is list and len(event_data) == 1: - duration_following_activity = event_data[0].get_duration() - elif type(event_data) is EventDataProvider: - duration_following_activity = event_data.get_duration() - else: - raise ValueError("Duration not known, multiple events after loop of events") - for x in range(output_input_factor): - if x != 0: - token.event = None - token.add_to_last_timestamp(x * duration_following_activity) - self.tokens.put(token.clone()) - if number_of_tokens == self.tokens.qsize(): - self.tokens.put(token) - else: - self.tokens.put(token) - - def find_in_necessary_input(self, necessary_input, key): - return next((item for item in necessary_input if item.objectName == key), None) - - def find_in_list_input_list(self, data, key): - return next((item for item in data if item.object_id.id == key), None) - - def find_in_list_without_changed_value(self, data, key): - return next((item for item in data if item.object_id.id == key and not item.values_changed), None) - - def find_in_list_with_change_state(self, data, key, change_value): - return next( - (item for item in data if item.object_id.id == key and item.get_last_changed_value() == change_value), None) - class Token: def __init__( @@ -365,10 +93,4 @@ def add_to_last_timestamp(self, duration): self.last_timestamp += timedelta(minutes=duration) def __lt__(self, other): - return self.last_timestamp < other.last_timestamp - - def clone(self): - return Token(self.case, - self.data_source_id, - self.last_timestamp, - self.event) + return self.last_timestamp < other.last_timestamp \ No newline at end of file diff --git a/distributed_event_factory/simulation/stream.py b/distributed_event_factory/simulation/stream.py index d2cfcac..972e1cc 100644 --- a/distributed_event_factory/simulation/stream.py +++ b/distributed_event_factory/simulation/stream.py @@ -25,10 +25,7 @@ def run_simulation(self, datasources, sinks, objects, routes, stocks, workforce_ process_simulator = ProcessSimulator( case_id_provider=self.case_id_provider, data_sources=datasources, - max_concurrent_cases=self.max_concurrent_cases, - objects=objects, - routes=routes, - stocks=stocks, + max_concurrent_cases=self.max_concurrent_cases ) while True: with ScheduledThreadPoolExecutor() as executor: From 17197e0ef6dcc792cb337961e325159de4af8848 Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 28 Aug 2025 10:03:51 +0200 Subject: [PATCH 115/124] duration tests --- .../e0-order.yaml | 0 .../order.yaml | 2 +- .../resourceOrder.yaml | 2 +- .../warehouse_stock.yaml | 0 .../e0-order.yaml | 243 +++++++++++++++++ .../order.yaml | 3 +- .../resourceOrder.yaml | 3 +- .../warehouse_stock.yaml | 0 .../durationTestEvent1Activity5/e0-order.yaml | 63 +++++ .../durationTestEvent1Activity5/order.yaml | 6 + .../resourceOrder.yaml | 6 + .../warehouse_stock.yaml | 0 .../e0-order.yaml | 27 ++ .../e1-order.yaml | 27 ++ .../e10-order.yaml | 27 ++ .../e11-order.yaml | 27 ++ .../e12-order.yaml | 27 ++ .../e13-order.yaml | 27 ++ .../e14-order.yaml | 27 ++ .../e15-order.yaml | 27 ++ .../e16-order.yaml | 27 ++ .../e17-order.yaml | 27 ++ .../e18-order.yaml | 27 ++ .../e19-order.yaml | 27 ++ .../e2-order.yaml | 27 ++ .../e20-order.yaml | 27 ++ .../e21-order.yaml | 27 ++ .../e22-order.yaml | 27 ++ .../e23-order.yaml | 27 ++ .../e24-order.yaml | 27 ++ .../e3-order.yaml | 27 ++ .../e4-order.yaml | 27 ++ .../e5-order.yaml | 29 +++ .../e6-order.yaml | 27 ++ .../e7-order.yaml | 27 ++ .../e8-order.yaml | 27 ++ .../e9-order.yaml | 27 ++ .../durationTestEvent25Activity1/order.yaml | 6 + .../resourceOrder.yaml | 6 + .../warehouse_stock.yaml | 0 .../e0-order.yaml | 27 ++ .../e1-order.yaml | 27 ++ .../e10-order.yaml | 27 ++ .../e11-order.yaml | 27 ++ .../e12-order.yaml | 27 ++ .../e13-order.yaml | 27 ++ .../e14-order.yaml | 27 ++ .../e15-order.yaml | 27 ++ .../e16-order.yaml | 27 ++ .../e17-order.yaml | 27 ++ .../e18-order.yaml | 27 ++ .../e19-order.yaml | 27 ++ .../e2-order.yaml | 27 ++ .../e20-order.yaml | 27 ++ .../e21-order.yaml | 27 ++ .../e22-order.yaml | 27 ++ .../e23-order.yaml | 27 ++ .../e24-order.yaml | 27 ++ .../e3-order.yaml | 27 ++ .../e4-order.yaml | 27 ++ .../e5-order.yaml | 29 +++ .../e6-order.yaml | 27 ++ .../e7-order.yaml | 27 ++ .../e8-order.yaml | 27 ++ .../e9-order.yaml | 27 ++ .../order.yaml | 6 + .../resourceOrder.yaml | 6 + .../warehouse_stock.yaml | 2 +- .../e0-order.yaml | 243 +++++++++++++++++ .../e1-order.yaml | 244 +++++++++++++++++ .../e10-order.yaml | 243 +++++++++++++++++ .../e11-order.yaml | 243 +++++++++++++++++ .../e12-order.yaml | 243 +++++++++++++++++ .../e13-order.yaml | 243 +++++++++++++++++ .../e14-order.yaml | 243 +++++++++++++++++ .../e15-order.yaml | 243 +++++++++++++++++ .../e16-order.yaml | 243 +++++++++++++++++ .../e17-order.yaml | 243 +++++++++++++++++ .../e18-order.yaml | 243 +++++++++++++++++ .../e19-order.yaml | 243 +++++++++++++++++ .../e2-order.yaml | 243 +++++++++++++++++ .../e20-order.yaml | 243 +++++++++++++++++ .../e21-order.yaml | 243 +++++++++++++++++ .../e22-order.yaml | 243 +++++++++++++++++ .../e23-order.yaml | 243 +++++++++++++++++ .../e24-order.yaml | 243 +++++++++++++++++ .../e3-order.yaml | 243 +++++++++++++++++ .../e4-order.yaml | 243 +++++++++++++++++ .../e5-order.yaml | 245 ++++++++++++++++++ .../e6-order.yaml | 243 +++++++++++++++++ .../e7-order.yaml | 243 +++++++++++++++++ .../e8-order.yaml | 243 +++++++++++++++++ .../e9-order.yaml | 243 +++++++++++++++++ .../durationTestEvent25Activity25/order.yaml | 6 + .../resourceOrder.yaml | 6 + .../warehouse_stock.yaml | 8 + .../durationTestEvent5Activity1/e0-order.yaml | 27 ++ .../durationTestEvent5Activity1/e1-order.yaml | 27 ++ .../durationTestEvent5Activity1/e2-order.yaml | 27 ++ .../durationTestEvent5Activity1/e3-order.yaml | 27 ++ .../durationTestEvent5Activity1/e4-order.yaml | 27 ++ .../durationTestEvent5Activity1/order.yaml | 6 + .../resourceOrder.yaml | 6 + .../warehouse_stock.yaml | 8 + .../e0-order.yaml | 27 ++ .../e1-order.yaml | 27 ++ .../e2-order.yaml | 27 ++ .../e3-order.yaml | 27 ++ .../e4-order.yaml | 27 ++ .../order.yaml | 6 + .../resourceOrder.yaml | 6 + .../warehouse_stock.yaml | 8 + .../durationTestEvent5Activity5/e0-order.yaml | 63 +++++ .../durationTestEvent5Activity5/e1-order.yaml | 63 +++++ .../durationTestEvent5Activity5/e2-order.yaml | 63 +++++ .../durationTestEvent5Activity5/e3-order.yaml | 63 +++++ .../durationTestEvent5Activity5/e4-order.yaml | 63 +++++ .../durationTestEvent5Activity5/order.yaml | 6 + .../resourceOrder.yaml | 6 + .../warehouse_stock.yaml | 8 + .../e0-order.yaml | 8 +- .../e1-order.yaml | 27 ++ .../e2-order.yaml | 27 ++ .../e3-order.yaml | 27 ++ .../e4-order.yaml | 27 ++ .../order.yaml | 6 + .../resourceOrder.yaml | 6 + .../warehouse_stock.yaml | 8 + .../workforces.yaml | 7 + .../e0-order.yaml | 30 +++ .../e1-order.yaml | 30 +++ .../e2-order.yaml | 30 +++ .../e3-order.yaml | 30 +++ .../e4-order.yaml | 30 +++ .../order.yaml | 6 + .../resourceOrder.yaml | 6 + .../warehouse_stock.yaml | 8 + .../workforces.yaml | 19 ++ 138 files changed, 8772 insertions(+), 11 deletions(-) rename config/datasource/{goldsmiths-with-WF-2PV2 => durationTestEvent1Activity1}/e0-order.yaml (100%) rename config/datasource/{smart-factory-parallel => durationTestEvent1Activity1}/order.yaml (76%) rename config/datasource/{smart-factory-parallel => durationTestEvent1Activity1}/resourceOrder.yaml (80%) rename config/datasource/{goldsmiths-with-WF-2PV2 => durationTestEvent1Activity1}/warehouse_stock.yaml (100%) create mode 100644 config/datasource/durationTestEvent1Activity25/e0-order.yaml rename config/datasource/{smart-factory-parallel2 => durationTestEvent1Activity25}/order.yaml (69%) rename config/datasource/{smart-factory-parallel2 => durationTestEvent1Activity25}/resourceOrder.yaml (74%) rename config/datasource/{smart-factory-1P-withWF+ => durationTestEvent1Activity25}/warehouse_stock.yaml (100%) create mode 100644 config/datasource/durationTestEvent1Activity5/e0-order.yaml create mode 100644 config/datasource/durationTestEvent1Activity5/order.yaml create mode 100644 config/datasource/durationTestEvent1Activity5/resourceOrder.yaml rename config/datasource/{smart-factory-1P-withWF+WithD => durationTestEvent1Activity5}/warehouse_stock.yaml (100%) create mode 100644 config/datasource/durationTestEvent25Activity1/e0-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e1-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e10-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e11-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e12-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e13-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e14-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e15-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e16-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e17-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e18-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e19-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e2-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e20-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e21-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e22-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e23-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e24-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e3-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e4-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e5-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e6-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e7-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e8-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/e9-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1/resourceOrder.yaml rename config/datasource/{smart-factory-parallel => durationTestEvent25Activity1}/warehouse_stock.yaml (100%) create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e0-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e1-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e10-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e11-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e12-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e13-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e14-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e15-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e16-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e17-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e18-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e19-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e2-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e20-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e21-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e22-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e23-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e24-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e3-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e4-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e5-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e6-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e7-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e8-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/e9-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/order.yaml create mode 100644 config/datasource/durationTestEvent25Activity1DifWorkstation/resourceOrder.yaml rename config/datasource/{smart-factory-parallel2 => durationTestEvent25Activity1DifWorkstation}/warehouse_stock.yaml (83%) create mode 100644 config/datasource/durationTestEvent25Activity25/e0-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e1-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e10-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e11-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e12-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e13-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e14-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e15-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e16-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e17-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e18-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e19-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e2-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e20-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e21-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e22-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e23-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e24-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e3-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e4-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e5-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e6-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e7-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e8-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/e9-order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/order.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/resourceOrder.yaml create mode 100644 config/datasource/durationTestEvent25Activity25/warehouse_stock.yaml create mode 100644 config/datasource/durationTestEvent5Activity1/e0-order.yaml create mode 100644 config/datasource/durationTestEvent5Activity1/e1-order.yaml create mode 100644 config/datasource/durationTestEvent5Activity1/e2-order.yaml create mode 100644 config/datasource/durationTestEvent5Activity1/e3-order.yaml create mode 100644 config/datasource/durationTestEvent5Activity1/e4-order.yaml create mode 100644 config/datasource/durationTestEvent5Activity1/order.yaml create mode 100644 config/datasource/durationTestEvent5Activity1/resourceOrder.yaml create mode 100644 config/datasource/durationTestEvent5Activity1/warehouse_stock.yaml create mode 100644 config/datasource/durationTestEvent5Activity1DifWorkstation/e0-order.yaml create mode 100644 config/datasource/durationTestEvent5Activity1DifWorkstation/e1-order.yaml create mode 100644 config/datasource/durationTestEvent5Activity1DifWorkstation/e2-order.yaml create mode 100644 config/datasource/durationTestEvent5Activity1DifWorkstation/e3-order.yaml create mode 100644 config/datasource/durationTestEvent5Activity1DifWorkstation/e4-order.yaml create mode 100644 config/datasource/durationTestEvent5Activity1DifWorkstation/order.yaml create mode 100644 config/datasource/durationTestEvent5Activity1DifWorkstation/resourceOrder.yaml create mode 100644 config/datasource/durationTestEvent5Activity1DifWorkstation/warehouse_stock.yaml create mode 100644 config/datasource/durationTestEvent5Activity5/e0-order.yaml create mode 100644 config/datasource/durationTestEvent5Activity5/e1-order.yaml create mode 100644 config/datasource/durationTestEvent5Activity5/e2-order.yaml create mode 100644 config/datasource/durationTestEvent5Activity5/e3-order.yaml create mode 100644 config/datasource/durationTestEvent5Activity5/e4-order.yaml create mode 100644 config/datasource/durationTestEvent5Activity5/order.yaml create mode 100644 config/datasource/durationTestEvent5Activity5/resourceOrder.yaml create mode 100644 config/datasource/durationTestEvent5Activity5/warehouse_stock.yaml rename config/datasource/{smart-factory-parallel => durationTestEventNumberMiddleWF1}/e0-order.yaml (84%) create mode 100644 config/datasource/durationTestEventNumberMiddleWF1/e1-order.yaml create mode 100644 config/datasource/durationTestEventNumberMiddleWF1/e2-order.yaml create mode 100644 config/datasource/durationTestEventNumberMiddleWF1/e3-order.yaml create mode 100644 config/datasource/durationTestEventNumberMiddleWF1/e4-order.yaml create mode 100644 config/datasource/durationTestEventNumberMiddleWF1/order.yaml create mode 100644 config/datasource/durationTestEventNumberMiddleWF1/resourceOrder.yaml create mode 100644 config/datasource/durationTestEventNumberMiddleWF1/warehouse_stock.yaml create mode 100644 config/datasource/durationTestEventNumberMiddleWF1/workforces.yaml create mode 100644 config/datasource/durationTestEventNumberMiddleWF5/e0-order.yaml create mode 100644 config/datasource/durationTestEventNumberMiddleWF5/e1-order.yaml create mode 100644 config/datasource/durationTestEventNumberMiddleWF5/e2-order.yaml create mode 100644 config/datasource/durationTestEventNumberMiddleWF5/e3-order.yaml create mode 100644 config/datasource/durationTestEventNumberMiddleWF5/e4-order.yaml create mode 100644 config/datasource/durationTestEventNumberMiddleWF5/order.yaml create mode 100644 config/datasource/durationTestEventNumberMiddleWF5/resourceOrder.yaml create mode 100644 config/datasource/durationTestEventNumberMiddleWF5/warehouse_stock.yaml create mode 100644 config/datasource/durationTestEventNumberMiddleWF5/workforces.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV2/e0-order.yaml b/config/datasource/durationTestEvent1Activity1/e0-order.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV2/e0-order.yaml rename to config/datasource/durationTestEvent1Activity1/e0-order.yaml diff --git a/config/datasource/smart-factory-parallel/order.yaml b/config/datasource/durationTestEvent1Activity1/order.yaml similarity index 76% rename from config/datasource/smart-factory-parallel/order.yaml rename to config/datasource/durationTestEvent1Activity1/order.yaml index f0ae6f9..031b156 100644 --- a/config/datasource/smart-factory-parallel/order.yaml +++ b/config/datasource/durationTestEvent1Activity1/order.yaml @@ -2,5 +2,5 @@ kind: object name: "order" spec: name: "order" - type: "order" + type: "object" size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/resourceOrder.yaml b/config/datasource/durationTestEvent1Activity1/resourceOrder.yaml similarity index 80% rename from config/datasource/smart-factory-parallel/resourceOrder.yaml rename to config/datasource/durationTestEvent1Activity1/resourceOrder.yaml index 435f300..e4e6fa1 100644 --- a/config/datasource/smart-factory-parallel/resourceOrder.yaml +++ b/config/datasource/durationTestEvent1Activity1/resourceOrder.yaml @@ -2,5 +2,5 @@ kind: object name: "resourceOrder" spec: name: "resourceOrder" - type: "order" + type: "object" size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/warehouse_stock.yaml b/config/datasource/durationTestEvent1Activity1/warehouse_stock.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV2/warehouse_stock.yaml rename to config/datasource/durationTestEvent1Activity1/warehouse_stock.yaml diff --git a/config/datasource/durationTestEvent1Activity25/e0-order.yaml b/config/datasource/durationTestEvent1Activity25/e0-order.yaml new file mode 100644 index 0000000..b04c546 --- /dev/null +++ b/config/datasource/durationTestEvent1Activity25/e0-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "A" +spec: + name: "A" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 diff --git a/config/datasource/smart-factory-parallel2/order.yaml b/config/datasource/durationTestEvent1Activity25/order.yaml similarity index 69% rename from config/datasource/smart-factory-parallel2/order.yaml rename to config/datasource/durationTestEvent1Activity25/order.yaml index 4e843d9..031b156 100644 --- a/config/datasource/smart-factory-parallel2/order.yaml +++ b/config/datasource/durationTestEvent1Activity25/order.yaml @@ -2,6 +2,5 @@ kind: object name: "order" spec: name: "order" - type: "order" - input: + type: "object" size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/resourceOrder.yaml b/config/datasource/durationTestEvent1Activity25/resourceOrder.yaml similarity index 74% rename from config/datasource/smart-factory-parallel2/resourceOrder.yaml rename to config/datasource/durationTestEvent1Activity25/resourceOrder.yaml index b4207e5..e4e6fa1 100644 --- a/config/datasource/smart-factory-parallel2/resourceOrder.yaml +++ b/config/datasource/durationTestEvent1Activity25/resourceOrder.yaml @@ -2,6 +2,5 @@ kind: object name: "resourceOrder" spec: name: "resourceOrder" - type: "order" - input: + type: "object" size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/warehouse_stock.yaml b/config/datasource/durationTestEvent1Activity25/warehouse_stock.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/warehouse_stock.yaml rename to config/datasource/durationTestEvent1Activity25/warehouse_stock.yaml diff --git a/config/datasource/durationTestEvent1Activity5/e0-order.yaml b/config/datasource/durationTestEvent1Activity5/e0-order.yaml new file mode 100644 index 0000000..ba77465 --- /dev/null +++ b/config/datasource/durationTestEvent1Activity5/e0-order.yaml @@ -0,0 +1,63 @@ +kind: datasource +name: "A" +spec: + name: "A" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [0.96, 0.01, 0.01, 0.01, 0.01] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent1Activity5/order.yaml b/config/datasource/durationTestEvent1Activity5/order.yaml new file mode 100644 index 0000000..031b156 --- /dev/null +++ b/config/datasource/durationTestEvent1Activity5/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestEvent1Activity5/resourceOrder.yaml b/config/datasource/durationTestEvent1Activity5/resourceOrder.yaml new file mode 100644 index 0000000..e4e6fa1 --- /dev/null +++ b/config/datasource/durationTestEvent1Activity5/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/warehouse_stock.yaml b/config/datasource/durationTestEvent1Activity5/warehouse_stock.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/warehouse_stock.yaml rename to config/datasource/durationTestEvent1Activity5/warehouse_stock.yaml diff --git a/config/datasource/durationTestEvent25Activity1/e0-order.yaml b/config/datasource/durationTestEvent25Activity1/e0-order.yaml new file mode 100644 index 0000000..0aaafcd --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "A" +spec: + name: "A" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e1-order.yaml b/config/datasource/durationTestEvent25Activity1/e1-order.yaml new file mode 100644 index 0000000..49c73b7 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e1-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "B" +spec: + name: "B" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e10-order.yaml b/config/datasource/durationTestEvent25Activity1/e10-order.yaml new file mode 100644 index 0000000..3593606 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e10-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Packaging" +spec: + name: "Packaging" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e11-order.yaml b/config/datasource/durationTestEvent25Activity1/e11-order.yaml new file mode 100644 index 0000000..37869a0 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e11-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e12-order.yaml b/config/datasource/durationTestEvent25Activity1/e12-order.yaml new file mode 100644 index 0000000..3f31a9f --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e12-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e13-order.yaml b/config/datasource/durationTestEvent25Activity1/e13-order.yaml new file mode 100644 index 0000000..450e32e --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e13-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OutgoingStockA" +spec: + name: "OutgoingStockA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e14-order.yaml b/config/datasource/durationTestEvent25Activity1/e14-order.yaml new file mode 100644 index 0000000..cbaf158 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e14-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Assembly" +spec: + name: "Assembly" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e15-order.yaml b/config/datasource/durationTestEvent25Activity1/e15-order.yaml new file mode 100644 index 0000000..eb91d6d --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e15-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Assembly1" +spec: + name: "Assembly1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e16-order.yaml b/config/datasource/durationTestEvent25Activity1/e16-order.yaml new file mode 100644 index 0000000..a18ed24 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e16-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Assembly2" +spec: + name: "Assembly2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e17-order.yaml b/config/datasource/durationTestEvent25Activity1/e17-order.yaml new file mode 100644 index 0000000..e7470e9 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e17-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "SawingBar" +spec: + name: "SawingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e18-order.yaml b/config/datasource/durationTestEvent25Activity1/e18-order.yaml new file mode 100644 index 0000000..6d9aa27 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e18-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "SawingBarA" +spec: + name: "SawingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e19-order.yaml b/config/datasource/durationTestEvent25Activity1/e19-order.yaml new file mode 100644 index 0000000..58a5670 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e19-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "SawingBarW" +spec: + name: "SawingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e2-order.yaml b/config/datasource/durationTestEvent25Activity1/e2-order.yaml new file mode 100644 index 0000000..01bb942 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e2-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "C" +spec: + name: "C" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e20-order.yaml b/config/datasource/durationTestEvent25Activity1/e20-order.yaml new file mode 100644 index 0000000..fccbaa5 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e20-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "DrillingBar" +spec: + name: "DrillingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e21-order.yaml b/config/datasource/durationTestEvent25Activity1/e21-order.yaml new file mode 100644 index 0000000..a91dde1 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e21-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "DrillingBarW" +spec: + name: "DrillingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e22-order.yaml b/config/datasource/durationTestEvent25Activity1/e22-order.yaml new file mode 100644 index 0000000..a6850bb --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e22-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "DrillingBarA" +spec: + name: "DrillingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e23-order.yaml b/config/datasource/durationTestEvent25Activity1/e23-order.yaml new file mode 100644 index 0000000..8d8e600 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e23-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "SandingBar" +spec: + name: "SandingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e24-order.yaml b/config/datasource/durationTestEvent25Activity1/e24-order.yaml new file mode 100644 index 0000000..8b19243 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e24-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "SandingBarA" +spec: + name: "SandingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e3-order.yaml b/config/datasource/durationTestEvent25Activity1/e3-order.yaml new file mode 100644 index 0000000..880563e --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e3-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "D" +spec: + name: "D" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e4-order.yaml b/config/datasource/durationTestEvent25Activity1/e4-order.yaml new file mode 100644 index 0000000..00315de --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e4-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "E" +spec: + name: "E" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e5-order.yaml b/config/datasource/durationTestEvent25Activity1/e5-order.yaml new file mode 100644 index 0000000..12cb1a6 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e5-order.yaml @@ -0,0 +1,29 @@ +e4-order: + yaml: +kind: datasource +name: "GoodsDelivery" +spec: + name: "GoodsDelivery" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e6-order.yaml b/config/datasource/durationTestEvent25Activity1/e6-order.yaml new file mode 100644 index 0000000..f18823d --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e6-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "MaterialPreparation" +spec: + name: "MaterialPreparation" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e7-order.yaml b/config/datasource/durationTestEvent25Activity1/e7-order.yaml new file mode 100644 index 0000000..a7730ad --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e7-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "AssemblyLineSetup" +spec: + name: "AssemblyLineSetup" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e8-order.yaml b/config/datasource/durationTestEvent25Activity1/e8-order.yaml new file mode 100644 index 0000000..751d157 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e8-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Assembling" +spec: + name: "Assembling" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/e9-order.yaml b/config/datasource/durationTestEvent25Activity1/e9-order.yaml new file mode 100644 index 0000000..9995073 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/e9-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "QualityControl" +spec: + name: "QualityControl" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/order.yaml b/config/datasource/durationTestEvent25Activity1/order.yaml new file mode 100644 index 0000000..031b156 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1/resourceOrder.yaml b/config/datasource/durationTestEvent25Activity1/resourceOrder.yaml new file mode 100644 index 0000000..e4e6fa1 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/warehouse_stock.yaml b/config/datasource/durationTestEvent25Activity1/warehouse_stock.yaml similarity index 100% rename from config/datasource/smart-factory-parallel/warehouse_stock.yaml rename to config/datasource/durationTestEvent25Activity1/warehouse_stock.yaml diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e0-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e0-order.yaml new file mode 100644 index 0000000..0aaafcd --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "A" +spec: + name: "A" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e1-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e1-order.yaml new file mode 100644 index 0000000..847d1cd --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e1-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "B" +spec: + name: "B" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e10-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e10-order.yaml new file mode 100644 index 0000000..e932459 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e10-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Packaging" +spec: + name: "Packaging" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "J" + end: "J" + workstation: "J" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e11-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e11-order.yaml new file mode 100644 index 0000000..d52d26f --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e11-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "K" + end: "K" + workstation: "K" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e12-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e12-order.yaml new file mode 100644 index 0000000..10b4736 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e12-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "L" + end: "L" + workstation: "L" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e13-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e13-order.yaml new file mode 100644 index 0000000..d43f6b6 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e13-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OutgoingStockA" +spec: + name: "OutgoingStockA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e14-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e14-order.yaml new file mode 100644 index 0000000..b939e03 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e14-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Assembly" +spec: + name: "Assembly" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "N" + end: "N" + workstation: "N" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e15-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e15-order.yaml new file mode 100644 index 0000000..b71cdaa --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e15-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Assembly1" +spec: + name: "Assembly1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "P" + end: "P" + workstation: "P" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e16-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e16-order.yaml new file mode 100644 index 0000000..45f5c73 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e16-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Assembly2" +spec: + name: "Assembly2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "Q" + end: "Q" + workstation: "Q" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e17-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e17-order.yaml new file mode 100644 index 0000000..e67364a --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e17-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "SawingBar" +spec: + name: "SawingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "R" + end: "R" + workstation: "R" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e18-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e18-order.yaml new file mode 100644 index 0000000..cfcdeff --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e18-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "SawingBarA" +spec: + name: "SawingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e19-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e19-order.yaml new file mode 100644 index 0000000..a774520 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e19-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "SawingBarW" +spec: + name: "SawingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "T" + end: "T" + workstation: "T" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e2-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e2-order.yaml new file mode 100644 index 0000000..86a3507 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e2-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "C" +spec: + name: "C" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "B" + end: "B" + workstation: "B" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e20-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e20-order.yaml new file mode 100644 index 0000000..8a269ae --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e20-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "DrillingBar" +spec: + name: "DrillingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "U" + end: "U" + workstation: "U" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e21-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e21-order.yaml new file mode 100644 index 0000000..d6f2e72 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e21-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "DrillingBarW" +spec: + name: "DrillingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "V" + end: "V" + workstation: "V" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e22-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e22-order.yaml new file mode 100644 index 0000000..ae9a59a --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e22-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "DrillingBarA" +spec: + name: "DrillingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e23-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e23-order.yaml new file mode 100644 index 0000000..500b055 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e23-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "SandingBar" +spec: + name: "SandingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "X" + end: "X" + workstation: "X" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e24-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e24-order.yaml new file mode 100644 index 0000000..7661e2d --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e24-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "SandingBarA" +spec: + name: "SandingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "Y" + end: "Y" + workstation: "Y" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e3-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e3-order.yaml new file mode 100644 index 0000000..d78b89a --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e3-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "D" +spec: + name: "D" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "C" + end: "C" + workstation: "C" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e4-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e4-order.yaml new file mode 100644 index 0000000..b973016 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e4-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "E" +spec: + name: "E" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "D" + end: "D" + workstation: "D" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e5-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e5-order.yaml new file mode 100644 index 0000000..10ca5fd --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e5-order.yaml @@ -0,0 +1,29 @@ +e4-order: + yaml: +kind: datasource +name: "GoodsDelivery" +spec: + name: "GoodsDelivery" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "E" + end: "E" + workstation: "E" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e6-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e6-order.yaml new file mode 100644 index 0000000..1913551 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e6-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "MaterialPreparation" +spec: + name: "MaterialPreparation" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "F" + end: "F" + workstation: "F" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e7-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e7-order.yaml new file mode 100644 index 0000000..0e63f93 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e7-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "AssemblyLineSetup" +spec: + name: "AssemblyLineSetup" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "G" + end: "G" + workstation: "G" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e8-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e8-order.yaml new file mode 100644 index 0000000..4ce6b07 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e8-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Assembling" +spec: + name: "Assembling" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "H" + end: "H" + workstation: "H" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/e9-order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/e9-order.yaml new file mode 100644 index 0000000..2490bab --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/e9-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "QualityControl" +spec: + name: "QualityControl" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "I" + end: "I" + workstation: "I" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/order.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/order.yaml new file mode 100644 index 0000000..031b156 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity1DifWorkstation/resourceOrder.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/resourceOrder.yaml new file mode 100644 index 0000000..e4e6fa1 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/warehouse_stock.yaml b/config/datasource/durationTestEvent25Activity1DifWorkstation/warehouse_stock.yaml similarity index 83% rename from config/datasource/smart-factory-parallel2/warehouse_stock.yaml rename to config/datasource/durationTestEvent25Activity1DifWorkstation/warehouse_stock.yaml index cd43c5f..455a78c 100644 --- a/config/datasource/smart-factory-parallel2/warehouse_stock.yaml +++ b/config/datasource/durationTestEvent25Activity1DifWorkstation/warehouse_stock.yaml @@ -3,6 +3,6 @@ name: "default" spec: stocks: - object: "order" - number: 100 + number: 1000 lastState: size: \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e0-order.yaml b/config/datasource/durationTestEvent25Activity25/e0-order.yaml new file mode 100644 index 0000000..23ed98c --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e0-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "A" +spec: + name: "A" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e1-order.yaml b/config/datasource/durationTestEvent25Activity25/e1-order.yaml new file mode 100644 index 0000000..4fc450b --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e1-order.yaml @@ -0,0 +1,244 @@ +kind: datasource +name: "B" +spec: + name: "B" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e10-order.yaml b/config/datasource/durationTestEvent25Activity25/e10-order.yaml new file mode 100644 index 0000000..863615b --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e10-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "Packaging" +spec: + name: "Packaging" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e11-order.yaml b/config/datasource/durationTestEvent25Activity25/e11-order.yaml new file mode 100644 index 0000000..d4369af --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e11-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e12-order.yaml b/config/datasource/durationTestEvent25Activity25/e12-order.yaml new file mode 100644 index 0000000..19aed49 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e12-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e13-order.yaml b/config/datasource/durationTestEvent25Activity25/e13-order.yaml new file mode 100644 index 0000000..0107331 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e13-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "OutgoingStockA" +spec: + name: "OutgoingStockA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e14-order.yaml b/config/datasource/durationTestEvent25Activity25/e14-order.yaml new file mode 100644 index 0000000..74ea5bf --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e14-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "Assembly" +spec: + name: "Assembly" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e15-order.yaml b/config/datasource/durationTestEvent25Activity25/e15-order.yaml new file mode 100644 index 0000000..8e9e0f6 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e15-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "Assembly1" +spec: + name: "Assembly1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e16-order.yaml b/config/datasource/durationTestEvent25Activity25/e16-order.yaml new file mode 100644 index 0000000..3ce60e6 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e16-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "Assembly2" +spec: + name: "Assembly2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e17-order.yaml b/config/datasource/durationTestEvent25Activity25/e17-order.yaml new file mode 100644 index 0000000..78d281d --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e17-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "SawingBar" +spec: + name: "SawingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e18-order.yaml b/config/datasource/durationTestEvent25Activity25/e18-order.yaml new file mode 100644 index 0000000..de52e23 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e18-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "SawingBarA" +spec: + name: "SawingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e19-order.yaml b/config/datasource/durationTestEvent25Activity25/e19-order.yaml new file mode 100644 index 0000000..a3abe75 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e19-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "SawingBarW" +spec: + name: "SawingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e2-order.yaml b/config/datasource/durationTestEvent25Activity25/e2-order.yaml new file mode 100644 index 0000000..65ee657 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e2-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "C" +spec: + name: "C" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e20-order.yaml b/config/datasource/durationTestEvent25Activity25/e20-order.yaml new file mode 100644 index 0000000..af2b3ad --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e20-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "DrillingBar" +spec: + name: "DrillingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e21-order.yaml b/config/datasource/durationTestEvent25Activity25/e21-order.yaml new file mode 100644 index 0000000..d5ab983 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e21-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "DrillingBarW" +spec: + name: "DrillingBarW" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e22-order.yaml b/config/datasource/durationTestEvent25Activity25/e22-order.yaml new file mode 100644 index 0000000..cb9b806 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e22-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "DrillingBarA" +spec: + name: "DrillingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e23-order.yaml b/config/datasource/durationTestEvent25Activity25/e23-order.yaml new file mode 100644 index 0000000..394cef2 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e23-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "SandingBar" +spec: + name: "SandingBar" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e24-order.yaml b/config/datasource/durationTestEvent25Activity25/e24-order.yaml new file mode 100644 index 0000000..84b7f65 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e24-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "SandingBarA" +spec: + name: "SandingBarA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e3-order.yaml b/config/datasource/durationTestEvent25Activity25/e3-order.yaml new file mode 100644 index 0000000..a175803 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e3-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "D" +spec: + name: "D" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e4-order.yaml b/config/datasource/durationTestEvent25Activity25/e4-order.yaml new file mode 100644 index 0000000..b4cb427 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e4-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "E" +spec: + name: "E" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e5-order.yaml b/config/datasource/durationTestEvent25Activity25/e5-order.yaml new file mode 100644 index 0000000..68d08cc --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e5-order.yaml @@ -0,0 +1,245 @@ +e4-order: + yaml: +kind: datasource +name: "GoodsDelivery" +spec: + name: "GoodsDelivery" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e6-order.yaml b/config/datasource/durationTestEvent25Activity25/e6-order.yaml new file mode 100644 index 0000000..349c159 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e6-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "MaterialPreparation" +spec: + name: "MaterialPreparation" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e7-order.yaml b/config/datasource/durationTestEvent25Activity25/e7-order.yaml new file mode 100644 index 0000000..37862f2 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e7-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "AssemblyLineSetup" +spec: + name: "AssemblyLineSetup" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e8-order.yaml b/config/datasource/durationTestEvent25Activity25/e8-order.yaml new file mode 100644 index 0000000..87ed19c --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e8-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "Assembling" +spec: + name: "Assembling" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/e9-order.yaml b/config/datasource/durationTestEvent25Activity25/e9-order.yaml new file mode 100644 index 0000000..c76b7a9 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/e9-order.yaml @@ -0,0 +1,243 @@ +kind: datasource +name: "QualityControl" +spec: + name: "QualityControl" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [ 0.76, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01 ] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5a" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5b" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5c" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource1d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5d" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/order.yaml b/config/datasource/durationTestEvent25Activity25/order.yaml new file mode 100644 index 0000000..031b156 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/resourceOrder.yaml b/config/datasource/durationTestEvent25Activity25/resourceOrder.yaml new file mode 100644 index 0000000..e4e6fa1 --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestEvent25Activity25/warehouse_stock.yaml b/config/datasource/durationTestEvent25Activity25/warehouse_stock.yaml new file mode 100644 index 0000000..455a78c --- /dev/null +++ b/config/datasource/durationTestEvent25Activity25/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity1/e0-order.yaml b/config/datasource/durationTestEvent5Activity1/e0-order.yaml new file mode 100644 index 0000000..5b3bfec --- /dev/null +++ b/config/datasource/durationTestEvent5Activity1/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "A" +spec: + name: "A" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity1/e1-order.yaml b/config/datasource/durationTestEvent5Activity1/e1-order.yaml new file mode 100644 index 0000000..caa4031 --- /dev/null +++ b/config/datasource/durationTestEvent5Activity1/e1-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "B" +spec: + name: "B" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity1/e2-order.yaml b/config/datasource/durationTestEvent5Activity1/e2-order.yaml new file mode 100644 index 0000000..eaa10c1 --- /dev/null +++ b/config/datasource/durationTestEvent5Activity1/e2-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "C" +spec: + name: "C" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity1/e3-order.yaml b/config/datasource/durationTestEvent5Activity1/e3-order.yaml new file mode 100644 index 0000000..fbaf02a --- /dev/null +++ b/config/datasource/durationTestEvent5Activity1/e3-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "D" +spec: + name: "D" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity1/e4-order.yaml b/config/datasource/durationTestEvent5Activity1/e4-order.yaml new file mode 100644 index 0000000..00315de --- /dev/null +++ b/config/datasource/durationTestEvent5Activity1/e4-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "E" +spec: + name: "E" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity1/order.yaml b/config/datasource/durationTestEvent5Activity1/order.yaml new file mode 100644 index 0000000..031b156 --- /dev/null +++ b/config/datasource/durationTestEvent5Activity1/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity1/resourceOrder.yaml b/config/datasource/durationTestEvent5Activity1/resourceOrder.yaml new file mode 100644 index 0000000..e4e6fa1 --- /dev/null +++ b/config/datasource/durationTestEvent5Activity1/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity1/warehouse_stock.yaml b/config/datasource/durationTestEvent5Activity1/warehouse_stock.yaml new file mode 100644 index 0000000..455a78c --- /dev/null +++ b/config/datasource/durationTestEvent5Activity1/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity1DifWorkstation/e0-order.yaml b/config/datasource/durationTestEvent5Activity1DifWorkstation/e0-order.yaml new file mode 100644 index 0000000..5b3bfec --- /dev/null +++ b/config/datasource/durationTestEvent5Activity1DifWorkstation/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "A" +spec: + name: "A" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity1DifWorkstation/e1-order.yaml b/config/datasource/durationTestEvent5Activity1DifWorkstation/e1-order.yaml new file mode 100644 index 0000000..f35713e --- /dev/null +++ b/config/datasource/durationTestEvent5Activity1DifWorkstation/e1-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "B" +spec: + name: "B" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity1DifWorkstation/e2-order.yaml b/config/datasource/durationTestEvent5Activity1DifWorkstation/e2-order.yaml new file mode 100644 index 0000000..a50b80c --- /dev/null +++ b/config/datasource/durationTestEvent5Activity1DifWorkstation/e2-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "C" +spec: + name: "C" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "B" + end: "B" + workstation: "B" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity1DifWorkstation/e3-order.yaml b/config/datasource/durationTestEvent5Activity1DifWorkstation/e3-order.yaml new file mode 100644 index 0000000..fa69859 --- /dev/null +++ b/config/datasource/durationTestEvent5Activity1DifWorkstation/e3-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "D" +spec: + name: "D" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "C" + end: "C" + workstation: "C" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity1DifWorkstation/e4-order.yaml b/config/datasource/durationTestEvent5Activity1DifWorkstation/e4-order.yaml new file mode 100644 index 0000000..b973016 --- /dev/null +++ b/config/datasource/durationTestEvent5Activity1DifWorkstation/e4-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "E" +spec: + name: "E" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "D" + end: "D" + workstation: "D" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity1DifWorkstation/order.yaml b/config/datasource/durationTestEvent5Activity1DifWorkstation/order.yaml new file mode 100644 index 0000000..031b156 --- /dev/null +++ b/config/datasource/durationTestEvent5Activity1DifWorkstation/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity1DifWorkstation/resourceOrder.yaml b/config/datasource/durationTestEvent5Activity1DifWorkstation/resourceOrder.yaml new file mode 100644 index 0000000..e4e6fa1 --- /dev/null +++ b/config/datasource/durationTestEvent5Activity1DifWorkstation/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity1DifWorkstation/warehouse_stock.yaml b/config/datasource/durationTestEvent5Activity1DifWorkstation/warehouse_stock.yaml new file mode 100644 index 0000000..455a78c --- /dev/null +++ b/config/datasource/durationTestEvent5Activity1DifWorkstation/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity5/e0-order.yaml b/config/datasource/durationTestEvent5Activity5/e0-order.yaml new file mode 100644 index 0000000..ba77465 --- /dev/null +++ b/config/datasource/durationTestEvent5Activity5/e0-order.yaml @@ -0,0 +1,63 @@ +kind: datasource +name: "A" +spec: + name: "A" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [0.96, 0.01, 0.01, 0.01, 0.01] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity5/e1-order.yaml b/config/datasource/durationTestEvent5Activity5/e1-order.yaml new file mode 100644 index 0000000..d3b7455 --- /dev/null +++ b/config/datasource/durationTestEvent5Activity5/e1-order.yaml @@ -0,0 +1,63 @@ +kind: datasource +name: "B" +spec: + name: "B" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [0.96, 0.01, 0.01, 0.01, 0.01] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity5/e2-order.yaml b/config/datasource/durationTestEvent5Activity5/e2-order.yaml new file mode 100644 index 0000000..ab08130 --- /dev/null +++ b/config/datasource/durationTestEvent5Activity5/e2-order.yaml @@ -0,0 +1,63 @@ +kind: datasource +name: "C" +spec: + name: "C" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [0.96, 0.01, 0.01, 0.01, 0.01] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity5/e3-order.yaml b/config/datasource/durationTestEvent5Activity5/e3-order.yaml new file mode 100644 index 0000000..4112160 --- /dev/null +++ b/config/datasource/durationTestEvent5Activity5/e3-order.yaml @@ -0,0 +1,63 @@ +kind: datasource +name: "D" +spec: + name: "D" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [0.96, 0.01, 0.01, 0.01, 0.01] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity5/e4-order.yaml b/config/datasource/durationTestEvent5Activity5/e4-order.yaml new file mode 100644 index 0000000..42ea253 --- /dev/null +++ b/config/datasource/durationTestEvent5Activity5/e4-order.yaml @@ -0,0 +1,63 @@ +kind: datasource +name: "E" +spec: + name: "E" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [0.96, 0.01, 0.01, 0.01, 0.01] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resource1" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource2" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource3" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource4" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resource5" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity5/order.yaml b/config/datasource/durationTestEvent5Activity5/order.yaml new file mode 100644 index 0000000..031b156 --- /dev/null +++ b/config/datasource/durationTestEvent5Activity5/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity5/resourceOrder.yaml b/config/datasource/durationTestEvent5Activity5/resourceOrder.yaml new file mode 100644 index 0000000..e4e6fa1 --- /dev/null +++ b/config/datasource/durationTestEvent5Activity5/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestEvent5Activity5/warehouse_stock.yaml b/config/datasource/durationTestEvent5Activity5/warehouse_stock.yaml new file mode 100644 index 0000000..455a78c --- /dev/null +++ b/config/datasource/durationTestEvent5Activity5/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e0-order.yaml b/config/datasource/durationTestEventNumberMiddleWF1/e0-order.yaml similarity index 84% rename from config/datasource/smart-factory-parallel/e0-order.yaml rename to config/datasource/durationTestEventNumberMiddleWF1/e0-order.yaml index ca7b2e5..c1dbe22 100644 --- a/config/datasource/smart-factory-parallel/e0-order.yaml +++ b/config/datasource/durationTestEventNumberMiddleWF1/e0-order.yaml @@ -1,7 +1,7 @@ kind: datasource -name: "OrderPlacement" +name: "A" spec: - name: "OrderPlacement" + name: "A" group: "factory" type: objectCentric workforce: hasWorkforce @@ -16,7 +16,7 @@ spec: lastState: "" size: workforces: - - workforce: "manager" + - workforce: "humanWorkforce" number: 1 eventData: - activity: @@ -27,4 +27,4 @@ spec: change: "" size: transition: "OutgoingStock" - duration: 0 + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEventNumberMiddleWF1/e1-order.yaml b/config/datasource/durationTestEventNumberMiddleWF1/e1-order.yaml new file mode 100644 index 0000000..f35713e --- /dev/null +++ b/config/datasource/durationTestEventNumberMiddleWF1/e1-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "B" +spec: + name: "B" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEventNumberMiddleWF1/e2-order.yaml b/config/datasource/durationTestEventNumberMiddleWF1/e2-order.yaml new file mode 100644 index 0000000..a50b80c --- /dev/null +++ b/config/datasource/durationTestEventNumberMiddleWF1/e2-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "C" +spec: + name: "C" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "B" + end: "B" + workstation: "B" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEventNumberMiddleWF1/e3-order.yaml b/config/datasource/durationTestEventNumberMiddleWF1/e3-order.yaml new file mode 100644 index 0000000..fa69859 --- /dev/null +++ b/config/datasource/durationTestEventNumberMiddleWF1/e3-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "D" +spec: + name: "D" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "C" + end: "C" + workstation: "C" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEventNumberMiddleWF1/e4-order.yaml b/config/datasource/durationTestEventNumberMiddleWF1/e4-order.yaml new file mode 100644 index 0000000..b973016 --- /dev/null +++ b/config/datasource/durationTestEventNumberMiddleWF1/e4-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "E" +spec: + name: "E" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "D" + end: "D" + workstation: "D" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEventNumberMiddleWF1/order.yaml b/config/datasource/durationTestEventNumberMiddleWF1/order.yaml new file mode 100644 index 0000000..031b156 --- /dev/null +++ b/config/datasource/durationTestEventNumberMiddleWF1/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestEventNumberMiddleWF1/resourceOrder.yaml b/config/datasource/durationTestEventNumberMiddleWF1/resourceOrder.yaml new file mode 100644 index 0000000..e4e6fa1 --- /dev/null +++ b/config/datasource/durationTestEventNumberMiddleWF1/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestEventNumberMiddleWF1/warehouse_stock.yaml b/config/datasource/durationTestEventNumberMiddleWF1/warehouse_stock.yaml new file mode 100644 index 0000000..455a78c --- /dev/null +++ b/config/datasource/durationTestEventNumberMiddleWF1/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/durationTestEventNumberMiddleWF1/workforces.yaml b/config/datasource/durationTestEventNumberMiddleWF1/workforces.yaml new file mode 100644 index 0000000..d907ebe --- /dev/null +++ b/config/datasource/durationTestEventNumberMiddleWF1/workforces.yaml @@ -0,0 +1,7 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "humanWorkforce" + startLocation: "O" + number: 1 \ No newline at end of file diff --git a/config/datasource/durationTestEventNumberMiddleWF5/e0-order.yaml b/config/datasource/durationTestEventNumberMiddleWF5/e0-order.yaml new file mode 100644 index 0000000..c1dbe22 --- /dev/null +++ b/config/datasource/durationTestEventNumberMiddleWF5/e0-order.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "A" +spec: + name: "A" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEventNumberMiddleWF5/e1-order.yaml b/config/datasource/durationTestEventNumberMiddleWF5/e1-order.yaml new file mode 100644 index 0000000..a78bba7 --- /dev/null +++ b/config/datasource/durationTestEventNumberMiddleWF5/e1-order.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "B" +spec: + name: "B" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEventNumberMiddleWF5/e2-order.yaml b/config/datasource/durationTestEventNumberMiddleWF5/e2-order.yaml new file mode 100644 index 0000000..b2726b3 --- /dev/null +++ b/config/datasource/durationTestEventNumberMiddleWF5/e2-order.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "C" +spec: + name: "C" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "B" + end: "B" + workstation: "B" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEventNumberMiddleWF5/e3-order.yaml b/config/datasource/durationTestEventNumberMiddleWF5/e3-order.yaml new file mode 100644 index 0000000..1a4774b --- /dev/null +++ b/config/datasource/durationTestEventNumberMiddleWF5/e3-order.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "D" +spec: + name: "D" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "C" + end: "C" + workstation: "C" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEventNumberMiddleWF5/e4-order.yaml b/config/datasource/durationTestEventNumberMiddleWF5/e4-order.yaml new file mode 100644 index 0000000..300581a --- /dev/null +++ b/config/datasource/durationTestEventNumberMiddleWF5/e4-order.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "E" +spec: + name: "E" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "D" + end: "D" + workstation: "D" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestEventNumberMiddleWF5/order.yaml b/config/datasource/durationTestEventNumberMiddleWF5/order.yaml new file mode 100644 index 0000000..031b156 --- /dev/null +++ b/config/datasource/durationTestEventNumberMiddleWF5/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestEventNumberMiddleWF5/resourceOrder.yaml b/config/datasource/durationTestEventNumberMiddleWF5/resourceOrder.yaml new file mode 100644 index 0000000..e4e6fa1 --- /dev/null +++ b/config/datasource/durationTestEventNumberMiddleWF5/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestEventNumberMiddleWF5/warehouse_stock.yaml b/config/datasource/durationTestEventNumberMiddleWF5/warehouse_stock.yaml new file mode 100644 index 0000000..455a78c --- /dev/null +++ b/config/datasource/durationTestEventNumberMiddleWF5/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/durationTestEventNumberMiddleWF5/workforces.yaml b/config/datasource/durationTestEventNumberMiddleWF5/workforces.yaml new file mode 100644 index 0000000..8733a76 --- /dev/null +++ b/config/datasource/durationTestEventNumberMiddleWF5/workforces.yaml @@ -0,0 +1,19 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "humanWorkforce" + startLocation: "O" + number: 1 + - name: "humanWorkforce" + startLocation: "A" + number: 1 + - name: "humanWorkforce" + startLocation: "B" + number: 1 + - name: "humanWorkforce" + startLocation: "C" + number: 1 + - name: "humanWorkforce" + startLocation: "D" + number: 1 \ No newline at end of file From 5285f93ce716110bd50d717b3fcd7baf770628de Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 28 Aug 2025 10:04:18 +0200 Subject: [PATCH 116/124] goldsmiths --- .../e0-order.yaml | 7 ++----- .../e1-outgoing-stock.yaml | 0 .../e2-forging-earring.yaml | 0 .../e2-forging-ring.yaml | 0 .../e3-assembly.yaml | 0 .../e4-shipping-earring.yaml | 0 .../e4-shipping-ring.yaml | 0 .../earring.yaml | 0 .../gold.yaml | 0 .../order.yaml | 0 .../resourceOrder.yaml | 0 .../routing.yaml | 0 .../stone.yaml | 0 .../warehouse_stock.yaml | 8 ++++++++ .../workforces.yaml | 0 .../e0-order.yaml | 0 .../e0a-order.yaml | 0 .../e1-outgoing-stock.yaml | 0 .../e1a-outgoing-stock.yaml | 0 .../e2-forging-earring.yaml | 0 .../e2-forging-ring.yaml | 0 .../e3-assembly.yaml | 0 .../e4-shipping-earring.yaml | 0 .../e4-shipping-ring.yaml | 0 .../earring.yaml | 0 .../earringGold.yaml | 0 .../earringOrder.yaml | 0 .../earringResourceOrder.yaml | 0 .../ringGold.yaml | 0 .../ringOrder.yaml | 0 .../ringResourceOrder.yaml | 0 .../routing.yaml | 0 .../stone.yaml | 0 .../warehouse_stock.yaml | 0 .../workforces.yaml | 0 .../goldsmiths-without-WF-2P/e4-shipping-earring.yaml | 2 +- .../goldsmiths-without-WF-2P/e4-shipping-ring.yaml | 4 ++-- .../goldsmiths-without-WF-2P/warehouse_stock.yaml | 2 +- 38 files changed, 14 insertions(+), 9 deletions(-) rename config/datasource/{smart-factory-parallel2 => goldsmiths-with-WF-2P-Product-as-Type}/e0-order.yaml (83%) rename config/datasource/{goldsmiths-with-WF-2PV2 => goldsmiths-with-WF-2P-Product-as-Type}/e1-outgoing-stock.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV2 => goldsmiths-with-WF-2P-Product-as-Type}/e2-forging-earring.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV2 => goldsmiths-with-WF-2P-Product-as-Type}/e2-forging-ring.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV2 => goldsmiths-with-WF-2P-Product-as-Type}/e3-assembly.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV2 => goldsmiths-with-WF-2P-Product-as-Type}/e4-shipping-earring.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV2 => goldsmiths-with-WF-2P-Product-as-Type}/e4-shipping-ring.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV2 => goldsmiths-with-WF-2P-Product-as-Type}/earring.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV2 => goldsmiths-with-WF-2P-Product-as-Type}/gold.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV2 => goldsmiths-with-WF-2P-Product-as-Type}/order.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV2 => goldsmiths-with-WF-2P-Product-as-Type}/resourceOrder.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV2 => goldsmiths-with-WF-2P-Product-as-Type}/routing.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV2 => goldsmiths-with-WF-2P-Product-as-Type}/stone.yaml (100%) create mode 100644 config/datasource/goldsmiths-with-WF-2P-Product-as-Type/warehouse_stock.yaml rename config/datasource/{goldsmiths-with-WF-2PV2 => goldsmiths-with-WF-2P-Product-as-Type}/workforces.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/e0-order.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/e0a-order.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/e1-outgoing-stock.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/e1a-outgoing-stock.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/e2-forging-earring.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/e2-forging-ring.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/e3-assembly.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/e4-shipping-earring.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/e4-shipping-ring.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/earring.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/earringGold.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/earringOrder.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/earringResourceOrder.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/ringGold.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/ringOrder.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/ringResourceOrder.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/routing.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/stone.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/warehouse_stock.yaml (100%) rename config/datasource/{goldsmiths-with-WF-2PV3 => goldsmiths-with-WF-2P-Strict-Product-as-Type}/workforces.yaml (100%) diff --git a/config/datasource/smart-factory-parallel2/e0-order.yaml b/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/e0-order.yaml similarity index 83% rename from config/datasource/smart-factory-parallel2/e0-order.yaml rename to config/datasource/goldsmiths-with-WF-2P-Product-as-Type/e0-order.yaml index ca7b2e5..3f31a9f 100644 --- a/config/datasource/smart-factory-parallel2/e0-order.yaml +++ b/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/e0-order.yaml @@ -4,7 +4,7 @@ spec: name: "OrderPlacement" group: "factory" type: objectCentric - workforce: hasWorkforce + workforce: noWorkforce start: "O" end: "O" workstation: "O" @@ -15,9 +15,6 @@ spec: number: 1 lastState: "" size: - workforces: - - workforce: "manager" - number: 1 eventData: - activity: name: "order for resources" @@ -27,4 +24,4 @@ spec: change: "" size: transition: "OutgoingStock" - duration: 0 + duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/e1-outgoing-stock.yaml b/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/e1-outgoing-stock.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV2/e1-outgoing-stock.yaml rename to config/datasource/goldsmiths-with-WF-2P-Product-as-Type/e1-outgoing-stock.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV2/e2-forging-earring.yaml b/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/e2-forging-earring.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV2/e2-forging-earring.yaml rename to config/datasource/goldsmiths-with-WF-2P-Product-as-Type/e2-forging-earring.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV2/e2-forging-ring.yaml b/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/e2-forging-ring.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV2/e2-forging-ring.yaml rename to config/datasource/goldsmiths-with-WF-2P-Product-as-Type/e2-forging-ring.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV2/e3-assembly.yaml b/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/e3-assembly.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV2/e3-assembly.yaml rename to config/datasource/goldsmiths-with-WF-2P-Product-as-Type/e3-assembly.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV2/e4-shipping-earring.yaml b/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/e4-shipping-earring.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV2/e4-shipping-earring.yaml rename to config/datasource/goldsmiths-with-WF-2P-Product-as-Type/e4-shipping-earring.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV2/e4-shipping-ring.yaml b/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/e4-shipping-ring.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV2/e4-shipping-ring.yaml rename to config/datasource/goldsmiths-with-WF-2P-Product-as-Type/e4-shipping-ring.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV2/earring.yaml b/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/earring.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV2/earring.yaml rename to config/datasource/goldsmiths-with-WF-2P-Product-as-Type/earring.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV2/gold.yaml b/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/gold.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV2/gold.yaml rename to config/datasource/goldsmiths-with-WF-2P-Product-as-Type/gold.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV2/order.yaml b/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/order.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV2/order.yaml rename to config/datasource/goldsmiths-with-WF-2P-Product-as-Type/order.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml b/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/resourceOrder.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV2/resourceOrder.yaml rename to config/datasource/goldsmiths-with-WF-2P-Product-as-Type/resourceOrder.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV2/routing.yaml b/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/routing.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV2/routing.yaml rename to config/datasource/goldsmiths-with-WF-2P-Product-as-Type/routing.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV2/stone.yaml b/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/stone.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV2/stone.yaml rename to config/datasource/goldsmiths-with-WF-2P-Product-as-Type/stone.yaml diff --git a/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/warehouse_stock.yaml b/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/warehouse_stock.yaml new file mode 100644 index 0000000..455a78c --- /dev/null +++ b/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF-2PV2/workforces.yaml b/config/datasource/goldsmiths-with-WF-2P-Product-as-Type/workforces.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV2/workforces.yaml rename to config/datasource/goldsmiths-with-WF-2P-Product-as-Type/workforces.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e0-order.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e0-order.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/e0-order.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e0-order.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e0a-order.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e0a-order.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/e0a-order.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e0a-order.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e1-outgoing-stock.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e1-outgoing-stock.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/e1-outgoing-stock.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e1-outgoing-stock.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e1a-outgoing-stock.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e1a-outgoing-stock.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/e1a-outgoing-stock.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e1a-outgoing-stock.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-earring.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e2-forging-earring.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/e2-forging-earring.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e2-forging-earring.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e2-forging-ring.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e2-forging-ring.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/e2-forging-ring.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e2-forging-ring.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e3-assembly.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e3-assembly.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/e3-assembly.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e3-assembly.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-earring.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e4-shipping-earring.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-earring.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e4-shipping-earring.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-ring.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e4-shipping-ring.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/e4-shipping-ring.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/e4-shipping-ring.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/earring.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/earring.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/earring.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/earring.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/earringGold.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/earringGold.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/earringGold.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/earringGold.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/earringOrder.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/earringOrder.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/earringOrder.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/earringOrder.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/earringResourceOrder.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/earringResourceOrder.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/earringResourceOrder.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/earringResourceOrder.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/ringGold.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/ringGold.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/ringGold.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/ringGold.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/ringOrder.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/ringOrder.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/ringOrder.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/ringOrder.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/ringResourceOrder.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/ringResourceOrder.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/ringResourceOrder.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/ringResourceOrder.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/routing.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/routing.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/routing.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/routing.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/stone.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/stone.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/stone.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/stone.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/warehouse_stock.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/warehouse_stock.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/warehouse_stock.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/warehouse_stock.yaml diff --git a/config/datasource/goldsmiths-with-WF-2PV3/workforces.yaml b/config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/workforces.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF-2PV3/workforces.yaml rename to config/datasource/goldsmiths-with-WF-2P-Strict-Product-as-Type/workforces.yaml diff --git a/config/datasource/goldsmiths-without-WF-2P/e4-shipping-earring.yaml b/config/datasource/goldsmiths-without-WF-2P/e4-shipping-earring.yaml index 0aa70ce..e938dad 100644 --- a/config/datasource/goldsmiths-without-WF-2P/e4-shipping-earring.yaml +++ b/config/datasource/goldsmiths-without-WF-2P/e4-shipping-earring.yaml @@ -9,7 +9,7 @@ spec: end: "S" workstation: "S" selection: genericProbability - distribution: [ 0.8, 0.2 ] + distribution: [ 0.2, 0.8 ] input: - object: "earring" number: 2 diff --git a/config/datasource/goldsmiths-without-WF-2P/e4-shipping-ring.yaml b/config/datasource/goldsmiths-without-WF-2P/e4-shipping-ring.yaml index a744cd6..3d9b658 100644 --- a/config/datasource/goldsmiths-without-WF-2P/e4-shipping-ring.yaml +++ b/config/datasource/goldsmiths-without-WF-2P/e4-shipping-ring.yaml @@ -9,7 +9,7 @@ spec: end: "S" workstation: "S" selection: genericProbability - distribution: [ 0.8, 0.2 ] + distribution: [ 0.2, 0.8 ] input: - object: "gold" number: 1 @@ -30,7 +30,7 @@ spec: output: - object: "gold" number: 1 - change: "ring_shaped" + change: "shipped" size: transition: "" duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-2P/warehouse_stock.yaml b/config/datasource/goldsmiths-without-WF-2P/warehouse_stock.yaml index cd43c5f..455a78c 100644 --- a/config/datasource/goldsmiths-without-WF-2P/warehouse_stock.yaml +++ b/config/datasource/goldsmiths-without-WF-2P/warehouse_stock.yaml @@ -3,6 +3,6 @@ name: "default" spec: stocks: - object: "order" - number: 100 + number: 1000 lastState: size: \ No newline at end of file From 81c3430191316a4980a97fba4b79ef28d9233cbc Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 28 Aug 2025 10:04:39 +0200 Subject: [PATCH 117/124] clean up scenarios --- .../smart-factory-parallel/e2-sawing-bar.yaml | 37 ------------------- .../smart-factory-parallel2/bar-resource.yaml | 14 ------- .../smart-factory-parallel2/bar.yaml | 17 --------- .../e1-outgoing-stock.yaml | 33 ----------------- .../e3-drilling-bar.yaml | 33 ----------------- .../handoverStock.yaml | 11 ------ .../smart-factory-parallel2/screw.yaml | 11 ------ .../smart-factory-parallel2/woodShelf.yaml | 15 -------- .../smart-factory-parallel2/workforces.yaml | 10 ----- 9 files changed, 181 deletions(-) delete mode 100644 config/datasource/smart-factory-parallel/e2-sawing-bar.yaml delete mode 100644 config/datasource/smart-factory-parallel2/bar-resource.yaml delete mode 100644 config/datasource/smart-factory-parallel2/bar.yaml delete mode 100644 config/datasource/smart-factory-parallel2/e1-outgoing-stock.yaml delete mode 100644 config/datasource/smart-factory-parallel2/e3-drilling-bar.yaml delete mode 100644 config/datasource/smart-factory-parallel2/handoverStock.yaml delete mode 100644 config/datasource/smart-factory-parallel2/screw.yaml delete mode 100644 config/datasource/smart-factory-parallel2/woodShelf.yaml delete mode 100644 config/datasource/smart-factory-parallel2/workforces.yaml diff --git a/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml b/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml deleted file mode 100644 index 2af6491..0000000 --- a/config/datasource/smart-factory-parallel/e2-sawing-bar.yaml +++ /dev/null @@ -1,37 +0,0 @@ -kind: datasource -name: "SawingBar" -spec: - name: "SawingBar" - group: "factory" - type: objectCentric - workforce: noWorkforce - start: "M" - end: "M" - workstation: "M" - selection: genericProbability - distribution: [1.0] - input: - - object: "barResource" - number: 2 - lastState: "" - size: - length: "4" - width: "" - depth: "" - - object: "handover" - number: 1 - lastState: "" - size: - eventData: - - activity: - name: "Sawed" - output: - - object: "bar" - number: 4 - change: "divided Resource" - size: - length: "2" - width: "" - depth: "" - transition: "DrillingBar" - duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/bar-resource.yaml b/config/datasource/smart-factory-parallel2/bar-resource.yaml deleted file mode 100644 index 5d1e61e..0000000 --- a/config/datasource/smart-factory-parallel2/bar-resource.yaml +++ /dev/null @@ -1,14 +0,0 @@ -kind: object -name: "barResource" -spec: - name: "barResource" - type: "resource" - input: - - object: "order" - number: 1 - lastState: "" - size: - size: - length: "5" - width: "" - depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/bar.yaml b/config/datasource/smart-factory-parallel2/bar.yaml deleted file mode 100644 index 0adc313..0000000 --- a/config/datasource/smart-factory-parallel2/bar.yaml +++ /dev/null @@ -1,17 +0,0 @@ -kind: object -name: "bar" -spec: - name: "bar" - type: "processedResource" - input: - - object: "barResource" - number: 1 - lastState: "" - size: - length: "5" - width: "" - depth: "" - size: - length: "2" - width: "" - depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/e1-outgoing-stock.yaml b/config/datasource/smart-factory-parallel2/e1-outgoing-stock.yaml deleted file mode 100644 index a88a2f0..0000000 --- a/config/datasource/smart-factory-parallel2/e1-outgoing-stock.yaml +++ /dev/null @@ -1,33 +0,0 @@ -kind: datasource -name: "OutgoingStock" -spec: - name: "OutgoingStock" - group: "factory" - type: objectCentric - workforce: noWorkforce - start: "ST" - end: "ST" - workstation: "ST" - selection: parallel - input: - - object: "resourceOrder" - number: 1 - lastState: "" - size: - eventData: - - activity: - name: "retrieve resources" - output: - - object: "barResource" - number: 2 - change: "" - size: - length: "4" - width: "" - depth: "" - - object: "screw" - number: 13 - change: "" - size: - duration: 3 - transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/e3-drilling-bar.yaml b/config/datasource/smart-factory-parallel2/e3-drilling-bar.yaml deleted file mode 100644 index b8b0e4a..0000000 --- a/config/datasource/smart-factory-parallel2/e3-drilling-bar.yaml +++ /dev/null @@ -1,33 +0,0 @@ -kind: datasource -name: "DrillingBar" -spec: - name: "DrillingBar" - group: "factory" - type: objectCentric - workforce: noWorkforce - start: "D" - end: "D" - workstation: "D" - selection: genericProbability - distribution: [1.0] - input: - - object: "bar" - number: 1 - lastState: "divided Resource" - size: - length: "2" - width: "" - depth: "" - eventData: - - activity: - name: "Drilled" - output: - - object: "bar" - number: 1 - change: "drilled" - size: - length: "2" - width: "" - depth: "" - transition: "SandingBar" - duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/handoverStock.yaml b/config/datasource/smart-factory-parallel2/handoverStock.yaml deleted file mode 100644 index b860b6b..0000000 --- a/config/datasource/smart-factory-parallel2/handoverStock.yaml +++ /dev/null @@ -1,11 +0,0 @@ -kind: object -name: "handoverStock" -spec: - name: "handoverStock" - type: "transport" - input: - - object: - number: - lastState: - size: - size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/screw.yaml b/config/datasource/smart-factory-parallel2/screw.yaml deleted file mode 100644 index cd815cf..0000000 --- a/config/datasource/smart-factory-parallel2/screw.yaml +++ /dev/null @@ -1,11 +0,0 @@ -kind: object -name: "screw" -spec: - name: "screw" - type: "smallComponent" - input: - - object: "order" - number: 1 - lastState: "" - size: - size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/woodShelf.yaml b/config/datasource/smart-factory-parallel2/woodShelf.yaml deleted file mode 100644 index 483c571..0000000 --- a/config/datasource/smart-factory-parallel2/woodShelf.yaml +++ /dev/null @@ -1,15 +0,0 @@ -kind: object -name: "woodShelf" -spec: - name: "woodShelf" - type: "product" - input: - - object: "bar" - number: 4 - lastState: "sanded" - size: - - object: "screw" - number: 13 - lastState: "" - size: - size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/workforces.yaml b/config/datasource/smart-factory-parallel2/workforces.yaml deleted file mode 100644 index 5a80ccd..0000000 --- a/config/datasource/smart-factory-parallel2/workforces.yaml +++ /dev/null @@ -1,10 +0,0 @@ -kind: workforces -name: "default" -spec: - workforces: - - name: "transportRobot" - startLocation: "ST" - number: 10 - - name: "manager" - startLocation: "O" - number: 1 \ No newline at end of file From b4d415f58c5bcee0f14bd72fdf481eab7ddfcb86 Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 28 Aug 2025 10:16:57 +0200 Subject: [PATCH 118/124] smart factory --- .../bar-resource.yaml | 0 .../bar.yaml | 0 .../board-resource.yaml | 0 .../board.yaml | 0 .../bolt.yaml | 0 .../e0-order.yaml | 0 .../e1-outgoing-stock.yaml | 0 .../e2-sawing-bar.yaml | 4 +- .../e2-sawing-board.yaml | 6 +-- .../e3-drilling-bar.yaml | 2 +- .../e4-sanding-Bar.yaml | 2 +- .../e4-sanding-Board.yaml | 6 +-- .../e5-assembly.yaml | 0 .../e6-quality-control.yaml | 0 .../e7-shipping.yaml | 0 .../handover.yaml | 0 .../handoverBar.yaml | 0 .../handoverBarR.yaml | 0 .../handoverBoard.yaml | 0 .../handoverBoardR.yaml | 0 .../order.yaml | 0 .../resourceOrder.yaml | 0 .../routing.yaml | 0 .../screw.yaml | 0 .../t0-stock-to-machine.yaml | 0 .../t0B-stock-to-machine.yaml | 0 .../t1-machine-to-assembly.yaml | 0 .../t1-stock-to-assembly.yaml | 0 .../t1B-machine-to-assembly.yaml | 0 .../warehouse_stock.yaml | 8 ++++ .../woodShelf.yaml | 0 .../workforces.yaml | 5 +-- .../e2-sawing-bar.yaml | 40 ------------------- .../e2-sawing-board.yaml | 40 ------------------- .../bar-resource.yaml | 0 .../bar.yaml | 0 .../board-resource.yaml | 0 .../board.yaml | 0 .../bolt.yaml | 0 .../e0-order.yaml | 0 .../e1-outgoing-stock.yaml | 0 .../e2-sawing-bar.yaml | 0 .../e2-sawing-board.yaml | 0 .../e3-drilling-bar.yaml | 0 .../e4-sanding-Bar.yaml | 0 .../e4-sanding-Board.yaml | 0 .../e5-assembly.yaml | 0 .../e6-quality-control.yaml | 0 .../e7-shipping.yaml | 0 .../handover.yaml | 0 .../handoverBar.yaml | 0 .../handoverBarR.yaml | 0 .../handoverBoard.yaml | 0 .../handoverBoardR.yaml | 0 .../order.yaml | 0 .../resourceOrder.yaml | 0 .../routing.yaml | 0 .../screw.yaml | 0 .../t0-stock-to-machine.yaml | 0 .../t0B-stock-to-machine.yaml | 0 .../t1-machine-to-assembly.yaml | 0 .../t1-stock-to-assembly.yaml | 0 .../t1B-machine-to-assembly.yaml | 0 .../warehouse_stock.yaml | 8 ++++ .../woodShelf.yaml | 0 .../workforces.yaml | 0 .../e2-sawing-bar.yaml | 5 ++- .../e2-sawing-board.yaml | 5 ++- .../e3-drilling-bar.yaml | 11 +++-- .../e4-sanding-Bar.yaml | 11 +++-- .../e4-sanding-Board.yaml | 11 +++-- .../smart-factory-1P-withWF/workforces.yaml | 5 ++- .../barA-resource.yaml | 0 .../barA.yaml | 0 .../barW-resource.yaml | 0 .../barW.yaml | 0 .../boardA-resource.yaml | 0 .../boardA.yaml | 0 .../boardW-resource.yaml | 0 .../boardW.yaml | 0 .../e0-order.yaml | 0 .../e0a-order.yaml | 0 .../e1-outgoing-stock.yaml | 0 .../e1a-outgoing-stock.yaml | 0 .../e2-sawing-bar.yaml | 0 .../e2-sawing-board.yaml | 0 .../e2a-sawing-bar.yaml | 0 .../e2a-sawing-board.yaml | 0 .../e3-drilling-bar.yaml | 0 .../e3a-drilling-bar.yaml | 0 .../e4-sanding-Bar.yaml | 0 .../e4-sanding-Board.yaml | 0 .../e4a-sanding-Bar.yaml | 0 .../e4a-sanding-Board.yaml | 0 .../e5-assembly.yaml | 0 .../e5a-assembly.yaml | 0 .../e6-quality-control.yaml | 0 .../e6a-quality-control.yaml | 0 .../e7-shipping.yaml | 0 .../e7a-shipping.yaml | 0 .../order1.yaml | 0 .../order2.yaml | 0 .../pinA.yaml | 0 .../pinW.yaml | 0 .../resourceOrder1.yaml | 0 .../resourceOrder2.yaml | 0 .../routing.yaml | 0 .../screw1.yaml | 0 .../screw2.yaml | 0 .../shelf1.yaml | 0 .../shelf2.yaml | 0 .../warehouse_stock.yaml | 0 .../barA-resource.yaml | 0 .../barA.yaml | 0 .../barW-resource.yaml | 9 +++++ .../barW.yaml | 9 +++++ .../boardA-resource.yaml | 0 .../boardA.yaml | 0 .../boardW-resource.yaml | 9 +++++ .../boardW.yaml | 9 +++++ .../e0-order.yaml | 0 .../e0a-order.yaml | 0 .../e1-outgoing-stock.yaml | 0 .../e1a-outgoing-stock.yaml | 0 .../e2-sawing-bar.yaml | 0 .../e2-sawing-board.yaml | 0 .../e2a-sawing-bar.yaml | 0 .../e2a-sawing-board.yaml | 0 .../e3-drilling-bar.yaml | 0 .../e3a-drilling-bar.yaml | 0 .../e4-sanding-Bar.yaml | 0 .../e4-sanding-Board.yaml | 0 .../e4a-sanding-Bar.yaml | 0 .../e4a-sanding-Board.yaml | 0 .../e5-assembly.yaml | 0 .../e5a-assembly.yaml | 0 .../e6-quality-control.yaml | 0 .../e6a-quality-control.yaml | 0 .../e7-shipping.yaml | 0 .../e7a-shipping.yaml | 0 .../order1.yaml | 6 +++ .../order2.yaml | 6 +++ .../pinA.yaml} | 4 +- .../pinW.yaml} | 4 +- .../resourceOrder1.yaml | 6 +++ .../resourceOrder2.yaml | 6 +++ .../routing.yaml | 0 .../screw1.yaml | 6 +++ .../screw2.yaml | 6 +++ .../shelf1.yaml} | 4 +- .../shelf2.yaml | 6 +++ .../warehouse_stock.yaml | 0 .../barA-resource.yaml} | 4 +- .../barA.yaml} | 4 +- .../barW-resource.yaml | 9 +++++ .../barW.yaml | 9 +++++ .../boardA-resource.yaml} | 4 +- .../boardA.yaml} | 4 +- .../boardW-resource.yaml | 9 +++++ .../boardW.yaml | 9 +++++ .../e0-order.yaml | 0 .../e0a-order.yaml | 0 .../e1-outgoing-stock.yaml | 0 .../e1a-outgoing-stock.yaml | 0 .../e2-sawing-bar.yaml | 0 .../e2-sawing-board.yaml | 0 .../e2a-sawing-bar.yaml | 0 .../e2a-sawing-board.yaml | 0 .../e3-drilling-bar.yaml | 0 .../e3a-drilling-bar.yaml | 0 .../e4-sanding-Bar.yaml | 0 .../e4-sanding-Board.yaml | 0 .../e4a-sanding-Bar.yaml | 0 .../e4a-sanding-Board.yaml | 0 .../e5-assembly.yaml | 0 .../e5a-assembly.yaml | 0 .../e6-quality-control.yaml | 0 .../e6a-quality-control.yaml | 0 .../e7-shipping.yaml | 21 +++------- .../e7a-shipping.yaml | 27 +++++++++++++ .../order1.yaml | 6 +++ .../order2.yaml | 6 +++ .../pinA.yaml | 6 +++ .../pinW.yaml | 6 +++ .../resourceOrder1.yaml | 6 +++ .../resourceOrder2.yaml | 6 +++ .../routing.yaml | 0 .../screw1.yaml | 6 +++ .../screw2.yaml | 6 +++ .../shelf1.yaml | 6 +++ .../shelf2.yaml | 6 +++ .../warehouse_stock.yaml | 12 ++++++ .../barA-resource.yaml | 0 .../barA.yaml | 0 .../barW-resource.yaml | 0 .../barW.yaml | 0 .../boardA-resource.yaml | 0 .../boardA.yaml | 0 .../boardW-resource.yaml | 0 .../boardW.yaml | 0 .../e0-order.yaml | 0 .../e0a-order.yaml | 0 .../e1-outgoing-stock.yaml | 0 .../e1a-outgoing-stock.yaml | 0 .../e2-sawing-bar.yaml | 0 .../e2-sawing-board.yaml | 0 .../e2a-sawing-bar.yaml | 0 .../e2a-sawing-board.yaml | 0 .../e3-drilling-bar.yaml | 0 .../e3a-drilling-bar.yaml | 0 .../e4-sanding-Bar.yaml | 0 .../e4-sanding-Board.yaml | 0 .../e4a-sanding-Bar.yaml | 0 .../e4a-sanding-Board.yaml | 0 .../e5-assembly.yaml | 0 .../e5a-assembly.yaml | 0 .../e6-quality-control.yaml | 0 .../e6a-quality-control.yaml | 0 .../e7-shipping.yaml | 21 +++------- .../e7a-shipping.yaml | 27 +++++++++++++ .../order1.yaml | 0 .../order2.yaml | 0 .../pinA.yaml | 0 .../pinW.yaml | 0 .../resourceOrder1.yaml | 0 .../resourceOrder2.yaml | 0 .../routing.yaml | 0 .../screw1.yaml | 0 .../screw2.yaml | 0 .../shelf1.yaml | 0 .../shelf2.yaml | 0 .../warehouse_stock.yaml | 12 ++++++ 232 files changed, 338 insertions(+), 153 deletions(-) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/bar-resource.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/bar.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/board-resource.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/board.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/bolt.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/e0-order.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/e1-outgoing-stock.yaml (100%) rename config/datasource/{smart-factory-parallel2 => smart-factory-1P-withTR}/e2-sawing-bar.yaml (93%) rename config/datasource/{smart-factory-parallel => smart-factory-1P-withTR}/e2-sawing-board.yaml (89%) rename config/datasource/{smart-factory-parallel => smart-factory-1P-withTR}/e3-drilling-bar.yaml (97%) rename config/datasource/{smart-factory-parallel2 => smart-factory-1P-withTR}/e4-sanding-Bar.yaml (97%) rename config/datasource/{smart-factory-parallel => smart-factory-1P-withTR}/e4-sanding-Board.yaml (87%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/e5-assembly.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/e6-quality-control.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/e7-shipping.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/handover.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/handoverBar.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/handoverBarR.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/handoverBoard.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/handoverBoardR.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/order.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/resourceOrder.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/routing.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/screw.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/t0-stock-to-machine.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/t0B-stock-to-machine.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/t1-machine-to-assembly.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/t1-stock-to-assembly.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/t1B-machine-to-assembly.yaml (100%) create mode 100644 config/datasource/smart-factory-1P-withTR/warehouse_stock.yaml rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withTR}/woodShelf.yaml (100%) rename config/datasource/{smart-factory-parallel => smart-factory-1P-withTR}/workforces.yaml (57%) delete mode 100644 config/datasource/smart-factory-1P-withWF+/e2-sawing-bar.yaml delete mode 100644 config/datasource/smart-factory-1P-withWF+/e2-sawing-board.yaml rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/bar-resource.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/bar.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/board-resource.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/board.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/bolt.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/e0-order.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/e1-outgoing-stock.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/e2-sawing-bar.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/e2-sawing-board.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/e3-drilling-bar.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withWF-WithDefects}/e4-sanding-Bar.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withWF-WithDefects}/e4-sanding-Board.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/e5-assembly.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/e6-quality-control.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/e7-shipping.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/handover.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/handoverBar.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/handoverBarR.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/handoverBoard.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/handoverBoardR.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/order.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/resourceOrder.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/routing.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/screw.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/t0-stock-to-machine.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/t0B-stock-to-machine.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/t1-machine-to-assembly.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/t1-stock-to-assembly.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/t1B-machine-to-assembly.yaml (100%) create mode 100644 config/datasource/smart-factory-1P-withWF-WithDefects/warehouse_stock.yaml rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-1P-withWF-WithDefects}/woodShelf.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+ => smart-factory-1P-withWF-WithDefects}/workforces.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/barA-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/barA.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/barW-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/barW.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/boardA-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/boardA.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/boardW-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/boardW.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e0-order.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e0a-order.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e1-outgoing-stock.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e1a-outgoing-stock.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e2-sawing-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e2-sawing-board.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e2a-sawing-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e2a-sawing-board.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e3-drilling-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e3a-drilling-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e4-sanding-Bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e4-sanding-Board.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e4a-sanding-Bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e4a-sanding-Board.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e5-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e5a-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e6-quality-control.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/e6a-quality-control.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-attributes}/e7-shipping.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-attributes}/e7a-shipping.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/order1.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/order2.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/pinA.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/pinW.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/resourceOrder1.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/resourceOrder2.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-attributes}/routing.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/screw1.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/screw2.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/shelf1.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-attributes}/shelf2.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-attributes}/warehouse_stock.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/barA-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/barA.yaml (100%) create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-supplier/barW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-supplier/barW.yaml rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/boardA-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/boardA.yaml (100%) create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-supplier/boardW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-supplier/boardW.yaml rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e0-order.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e0a-order.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e1-outgoing-stock.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e1a-outgoing-stock.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e2-sawing-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e2-sawing-board.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e2a-sawing-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e2a-sawing-board.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e3-drilling-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e3a-drilling-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e4-sanding-Bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e4-sanding-Board.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e4a-sanding-Bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e4a-sanding-Board.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e5-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e5a-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e6-quality-control.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/e6a-quality-control.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-supplier}/e7-shipping.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-supplier}/e7a-shipping.yaml (100%) create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-supplier/order1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-supplier/order2.yaml rename config/datasource/{smart-factory-parallel/bolt.yaml => smart-factory-2P-withoutDefects-by-supplier/pinA.yaml} (64%) rename config/datasource/{smart-factory-parallel/screw.yaml => smart-factory-2P-withoutDefects-by-supplier/pinW.yaml} (62%) create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-supplier/resourceOrder1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-supplier/resourceOrder2.yaml rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withoutDefects-by-supplier}/routing.yaml (100%) create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-supplier/screw1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-supplier/screw2.yaml rename config/datasource/{smart-factory-parallel/woodShelf.yaml => smart-factory-2P-withoutDefects-by-supplier/shelf1.yaml} (53%) create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-supplier/shelf2.yaml rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-supplier}/warehouse_stock.yaml (100%) rename config/datasource/{smart-factory-parallel/bar-resource.yaml => smart-factory-2P-withoutDefects-by-time/barA-resource.yaml} (66%) rename config/datasource/{smart-factory-parallel/bar.yaml => smart-factory-2P-withoutDefects-by-time/barA.yaml} (77%) create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-time/barW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-time/barW.yaml rename config/datasource/{smart-factory-parallel/board-resource.yaml => smart-factory-2P-withoutDefects-by-time/boardA-resource.yaml} (65%) rename config/datasource/{smart-factory-parallel/board.yaml => smart-factory-2P-withoutDefects-by-time/boardA.yaml} (75%) create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-time/boardW-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-time/boardW.yaml rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e0-order.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e0a-order.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e1-outgoing-stock.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e1a-outgoing-stock.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e2-sawing-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e2-sawing-board.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e2a-sawing-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e2a-sawing-board.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e3-drilling-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e3a-drilling-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e4-sanding-Bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e4-sanding-Board.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e4a-sanding-Bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e4a-sanding-Board.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e5-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e5a-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e6-quality-control.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/e6a-quality-control.yaml (100%) rename config/datasource/{smart-factory-parallel2 => smart-factory-2P-withoutDefects-by-time}/e7-shipping.yaml (51%) create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-time/e7a-shipping.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-time/order1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-time/order2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-time/pinA.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-time/pinW.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-time/resourceOrder1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-time/resourceOrder2.yaml rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withoutDefects-by-time}/routing.yaml (100%) create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-time/screw1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-time/screw2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-time/shelf1.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-time/shelf2.yaml create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-time/warehouse_stock.yaml rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/barA-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/barA.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/barW-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/barW.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/boardA-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/boardA.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/boardW-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/boardW.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e0-order.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e0a-order.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e1-outgoing-stock.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e1a-outgoing-stock.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e2-sawing-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e2-sawing-board.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e2a-sawing-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e2a-sawing-board.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e3-drilling-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e3a-drilling-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e4-sanding-Bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e4-sanding-Board.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e4a-sanding-Bar.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e4a-sanding-Board.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e5-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e5a-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e6-quality-control.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/e6a-quality-control.yaml (100%) rename config/datasource/{smart-factory-parallel => smart-factory-2P-withoutDefects-by-variant}/e7-shipping.yaml (51%) create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-variant/e7a-shipping.yaml rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/order1.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/order2.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/pinA.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/pinW.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/resourceOrder1.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/resourceOrder2.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects4 => smart-factory-2P-withoutDefects-by-variant}/routing.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/screw1.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/screw2.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/shelf1.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withoutDefects-by-variant}/shelf2.yaml (100%) create mode 100644 config/datasource/smart-factory-2P-withoutDefects-by-variant/warehouse_stock.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/bar-resource.yaml b/config/datasource/smart-factory-1P-withTR/bar-resource.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/bar-resource.yaml rename to config/datasource/smart-factory-1P-withTR/bar-resource.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/bar.yaml b/config/datasource/smart-factory-1P-withTR/bar.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/bar.yaml rename to config/datasource/smart-factory-1P-withTR/bar.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/board-resource.yaml b/config/datasource/smart-factory-1P-withTR/board-resource.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/board-resource.yaml rename to config/datasource/smart-factory-1P-withTR/board-resource.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/board.yaml b/config/datasource/smart-factory-1P-withTR/board.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/board.yaml rename to config/datasource/smart-factory-1P-withTR/board.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/bolt.yaml b/config/datasource/smart-factory-1P-withTR/bolt.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/bolt.yaml rename to config/datasource/smart-factory-1P-withTR/bolt.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/e0-order.yaml b/config/datasource/smart-factory-1P-withTR/e0-order.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/e0-order.yaml rename to config/datasource/smart-factory-1P-withTR/e0-order.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/e1-outgoing-stock.yaml b/config/datasource/smart-factory-1P-withTR/e1-outgoing-stock.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/e1-outgoing-stock.yaml rename to config/datasource/smart-factory-1P-withTR/e1-outgoing-stock.yaml diff --git a/config/datasource/smart-factory-parallel2/e2-sawing-bar.yaml b/config/datasource/smart-factory-1P-withTR/e2-sawing-bar.yaml similarity index 93% rename from config/datasource/smart-factory-parallel2/e2-sawing-bar.yaml rename to config/datasource/smart-factory-1P-withTR/e2-sawing-bar.yaml index 2af6491..25714e5 100644 --- a/config/datasource/smart-factory-parallel2/e2-sawing-bar.yaml +++ b/config/datasource/smart-factory-1P-withTR/e2-sawing-bar.yaml @@ -18,7 +18,7 @@ spec: length: "4" width: "" depth: "" - - object: "handover" + - object: "handoverBarR" number: 1 lastState: "" size: @@ -34,4 +34,4 @@ spec: width: "" depth: "" transition: "DrillingBar" - duration: 5 \ No newline at end of file + duration: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e2-sawing-board.yaml b/config/datasource/smart-factory-1P-withTR/e2-sawing-board.yaml similarity index 89% rename from config/datasource/smart-factory-parallel/e2-sawing-board.yaml rename to config/datasource/smart-factory-1P-withTR/e2-sawing-board.yaml index a543bcc..5aef9a2 100644 --- a/config/datasource/smart-factory-parallel/e2-sawing-board.yaml +++ b/config/datasource/smart-factory-1P-withTR/e2-sawing-board.yaml @@ -18,7 +18,7 @@ spec: length: "" width: "30" depth: "30" - - object: "handover" + - object: "handoverBoardR" number: 1 lastState: "" size: @@ -33,5 +33,5 @@ spec: length: "" width: "5" depth: "5" - transition: "DrillingBoard" - duration: 8 \ No newline at end of file + transition: "SandingBoard" + duration: 9 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml b/config/datasource/smart-factory-1P-withTR/e3-drilling-bar.yaml similarity index 97% rename from config/datasource/smart-factory-parallel/e3-drilling-bar.yaml rename to config/datasource/smart-factory-1P-withTR/e3-drilling-bar.yaml index b8b0e4a..b772c85 100644 --- a/config/datasource/smart-factory-parallel/e3-drilling-bar.yaml +++ b/config/datasource/smart-factory-1P-withTR/e3-drilling-bar.yaml @@ -30,4 +30,4 @@ spec: width: "" depth: "" transition: "SandingBar" - duration: 5 \ No newline at end of file + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel2/e4-sanding-Bar.yaml b/config/datasource/smart-factory-1P-withTR/e4-sanding-Bar.yaml similarity index 97% rename from config/datasource/smart-factory-parallel2/e4-sanding-Bar.yaml rename to config/datasource/smart-factory-1P-withTR/e4-sanding-Bar.yaml index f762faa..c33fd6c 100644 --- a/config/datasource/smart-factory-parallel2/e4-sanding-Bar.yaml +++ b/config/datasource/smart-factory-1P-withTR/e4-sanding-Bar.yaml @@ -30,4 +30,4 @@ spec: width: "" depth: "" transition: "TransportM1A" - duration: 5 + duration: 2 diff --git a/config/datasource/smart-factory-parallel/e4-sanding-Board.yaml b/config/datasource/smart-factory-1P-withTR/e4-sanding-Board.yaml similarity index 87% rename from config/datasource/smart-factory-parallel/e4-sanding-Board.yaml rename to config/datasource/smart-factory-1P-withTR/e4-sanding-Board.yaml index 4235865..14459ca 100644 --- a/config/datasource/smart-factory-parallel/e4-sanding-Board.yaml +++ b/config/datasource/smart-factory-1P-withTR/e4-sanding-Board.yaml @@ -13,7 +13,7 @@ spec: input: - object: "board" number: 1 - lastState: "drilled" + lastState: "divided Resource" size: length: "" width: "5" @@ -29,5 +29,5 @@ spec: length: "" width: "5" depth: "5" - transition: "TransportM1A" - duration: 5 \ No newline at end of file + transition: "TransportM1AB" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/e5-assembly.yaml b/config/datasource/smart-factory-1P-withTR/e5-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/e5-assembly.yaml rename to config/datasource/smart-factory-1P-withTR/e5-assembly.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/e6-quality-control.yaml b/config/datasource/smart-factory-1P-withTR/e6-quality-control.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/e6-quality-control.yaml rename to config/datasource/smart-factory-1P-withTR/e6-quality-control.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/e7-shipping.yaml b/config/datasource/smart-factory-1P-withTR/e7-shipping.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/e7-shipping.yaml rename to config/datasource/smart-factory-1P-withTR/e7-shipping.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/handover.yaml b/config/datasource/smart-factory-1P-withTR/handover.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/handover.yaml rename to config/datasource/smart-factory-1P-withTR/handover.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/handoverBar.yaml b/config/datasource/smart-factory-1P-withTR/handoverBar.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/handoverBar.yaml rename to config/datasource/smart-factory-1P-withTR/handoverBar.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/handoverBarR.yaml b/config/datasource/smart-factory-1P-withTR/handoverBarR.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/handoverBarR.yaml rename to config/datasource/smart-factory-1P-withTR/handoverBarR.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/handoverBoard.yaml b/config/datasource/smart-factory-1P-withTR/handoverBoard.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/handoverBoard.yaml rename to config/datasource/smart-factory-1P-withTR/handoverBoard.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/handoverBoardR.yaml b/config/datasource/smart-factory-1P-withTR/handoverBoardR.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/handoverBoardR.yaml rename to config/datasource/smart-factory-1P-withTR/handoverBoardR.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/order.yaml b/config/datasource/smart-factory-1P-withTR/order.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/order.yaml rename to config/datasource/smart-factory-1P-withTR/order.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/resourceOrder.yaml b/config/datasource/smart-factory-1P-withTR/resourceOrder.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/resourceOrder.yaml rename to config/datasource/smart-factory-1P-withTR/resourceOrder.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/routing.yaml b/config/datasource/smart-factory-1P-withTR/routing.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/routing.yaml rename to config/datasource/smart-factory-1P-withTR/routing.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/screw.yaml b/config/datasource/smart-factory-1P-withTR/screw.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/screw.yaml rename to config/datasource/smart-factory-1P-withTR/screw.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/t0-stock-to-machine.yaml b/config/datasource/smart-factory-1P-withTR/t0-stock-to-machine.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/t0-stock-to-machine.yaml rename to config/datasource/smart-factory-1P-withTR/t0-stock-to-machine.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/t0B-stock-to-machine.yaml b/config/datasource/smart-factory-1P-withTR/t0B-stock-to-machine.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/t0B-stock-to-machine.yaml rename to config/datasource/smart-factory-1P-withTR/t0B-stock-to-machine.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/t1-machine-to-assembly.yaml b/config/datasource/smart-factory-1P-withTR/t1-machine-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/t1-machine-to-assembly.yaml rename to config/datasource/smart-factory-1P-withTR/t1-machine-to-assembly.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-1P-withTR/t1-stock-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/t1-stock-to-assembly.yaml rename to config/datasource/smart-factory-1P-withTR/t1-stock-to-assembly.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/t1B-machine-to-assembly.yaml b/config/datasource/smart-factory-1P-withTR/t1B-machine-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/t1B-machine-to-assembly.yaml rename to config/datasource/smart-factory-1P-withTR/t1B-machine-to-assembly.yaml diff --git a/config/datasource/smart-factory-1P-withTR/warehouse_stock.yaml b/config/datasource/smart-factory-1P-withTR/warehouse_stock.yaml new file mode 100644 index 0000000..455a78c --- /dev/null +++ b/config/datasource/smart-factory-1P-withTR/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/woodShelf.yaml b/config/datasource/smart-factory-1P-withTR/woodShelf.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/woodShelf.yaml rename to config/datasource/smart-factory-1P-withTR/woodShelf.yaml diff --git a/config/datasource/smart-factory-parallel/workforces.yaml b/config/datasource/smart-factory-1P-withTR/workforces.yaml similarity index 57% rename from config/datasource/smart-factory-parallel/workforces.yaml rename to config/datasource/smart-factory-1P-withTR/workforces.yaml index 5f56ddc..a0f40ea 100644 --- a/config/datasource/smart-factory-parallel/workforces.yaml +++ b/config/datasource/smart-factory-1P-withTR/workforces.yaml @@ -4,7 +4,4 @@ spec: workforces: - name: "transportRobot" startLocation: "ST" - number: 15 - - name: "manager" - startLocation: "O" - number: 1 \ No newline at end of file + number: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/e2-sawing-bar.yaml b/config/datasource/smart-factory-1P-withWF+/e2-sawing-bar.yaml deleted file mode 100644 index 85d47de..0000000 --- a/config/datasource/smart-factory-1P-withWF+/e2-sawing-bar.yaml +++ /dev/null @@ -1,40 +0,0 @@ -kind: datasource -name: "SawingBar" -spec: - name: "SawingBar" - group: "factory" - type: objectCentric - workforce: hasWorkforce - start: "M" - end: "M" - workstation: "M" - selection: genericProbability - distribution: [1.0] - input: - - object: "barResource" - number: 2 - lastState: "" - size: - length: "4" - width: "" - depth: "" - - object: "handoverBarR" - number: 1 - lastState: "" - size: - workforces: - - workforce: "machineWorker" - number: 1 - eventData: - - activity: - name: "Sawed" - output: - - object: "bar" - number: 4 - change: "divided Resource" - size: - length: "2" - width: "" - depth: "" - transition: "DrillingBar" - duration: 4 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/e2-sawing-board.yaml b/config/datasource/smart-factory-1P-withWF+/e2-sawing-board.yaml deleted file mode 100644 index 7c1c6d2..0000000 --- a/config/datasource/smart-factory-1P-withWF+/e2-sawing-board.yaml +++ /dev/null @@ -1,40 +0,0 @@ -kind: datasource -name: "SawingBoard" -spec: - name: "SawingBoard" - group: "factory" - type: objectCentric - workforce: hasWorkforce - start: "M" - end: "M" - workstation: "M" - selection: genericProbability - distribution: [1.0] - input: - - object: "boardResource" - number: 1 - lastState: "" - size: - length: "" - width: "30" - depth: "30" - - object: "handoverBoardR" - number: 1 - lastState: "" - size: - workforces: - - workforce: "machineWorker" - number: 1 - eventData: - - activity: - name: "Sawed" - output: - - object: "board" - number: 6 - change: "divided Resource" - size: - length: "" - width: "5" - depth: "5" - transition: "SandingBoard" - duration: 9 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/bar-resource.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/bar-resource.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/bar-resource.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/bar-resource.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/bar.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/bar.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/bar.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/bar.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/board-resource.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/board-resource.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/board-resource.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/board-resource.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/board.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/board.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/board.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/board.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/bolt.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/bolt.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/bolt.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/bolt.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e0-order.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/e0-order.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/e0-order.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/e0-order.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e1-outgoing-stock.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/e1-outgoing-stock.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/e1-outgoing-stock.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/e1-outgoing-stock.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e2-sawing-bar.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/e2-sawing-bar.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/e2-sawing-bar.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/e2-sawing-bar.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e2-sawing-board.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/e2-sawing-board.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/e2-sawing-board.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/e2-sawing-board.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e3-drilling-bar.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/e3-drilling-bar.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/e3-drilling-bar.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/e3-drilling-bar.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/e4-sanding-Bar.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/e4-sanding-Bar.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/e4-sanding-Bar.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/e4-sanding-Bar.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/e4-sanding-Board.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/e4-sanding-Board.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/e4-sanding-Board.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/e4-sanding-Board.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e5-assembly.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/e5-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/e5-assembly.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/e5-assembly.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e6-quality-control.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/e6-quality-control.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/e6-quality-control.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/e6-quality-control.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e7-shipping.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/e7-shipping.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/e7-shipping.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/e7-shipping.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/handover.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/handover.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/handover.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/handover.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/handoverBar.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/handoverBar.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/handoverBar.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/handoverBar.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/handoverBarR.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/handoverBarR.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/handoverBarR.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/handoverBarR.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/handoverBoard.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/handoverBoard.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/handoverBoard.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/handoverBoard.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/handoverBoardR.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/handoverBoardR.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/handoverBoardR.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/handoverBoardR.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/order.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/order.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/order.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/order.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/resourceOrder.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/resourceOrder.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/resourceOrder.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/resourceOrder.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/routing.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/routing.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/routing.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/routing.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/screw.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/screw.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/screw.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/screw.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/t0-stock-to-machine.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/t0-stock-to-machine.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/t0-stock-to-machine.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/t0-stock-to-machine.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/t0B-stock-to-machine.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/t0B-stock-to-machine.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/t0B-stock-to-machine.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/t0B-stock-to-machine.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/t1-machine-to-assembly.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/t1-machine-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/t1-machine-to-assembly.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/t1-machine-to-assembly.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/t1-stock-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/t1-stock-to-assembly.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/t1-stock-to-assembly.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/t1B-machine-to-assembly.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/t1B-machine-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/t1B-machine-to-assembly.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/t1B-machine-to-assembly.yaml diff --git a/config/datasource/smart-factory-1P-withWF-WithDefects/warehouse_stock.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/warehouse_stock.yaml new file mode 100644 index 0000000..455a78c --- /dev/null +++ b/config/datasource/smart-factory-1P-withWF-WithDefects/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/woodShelf.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/woodShelf.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+WithD/woodShelf.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/woodShelf.yaml diff --git a/config/datasource/smart-factory-1P-withWF+/workforces.yaml b/config/datasource/smart-factory-1P-withWF-WithDefects/workforces.yaml similarity index 100% rename from config/datasource/smart-factory-1P-withWF+/workforces.yaml rename to config/datasource/smart-factory-1P-withWF-WithDefects/workforces.yaml diff --git a/config/datasource/smart-factory-1P-withWF/e2-sawing-bar.yaml b/config/datasource/smart-factory-1P-withWF/e2-sawing-bar.yaml index 25714e5..85d47de 100644 --- a/config/datasource/smart-factory-1P-withWF/e2-sawing-bar.yaml +++ b/config/datasource/smart-factory-1P-withWF/e2-sawing-bar.yaml @@ -4,7 +4,7 @@ spec: name: "SawingBar" group: "factory" type: objectCentric - workforce: noWorkforce + workforce: hasWorkforce start: "M" end: "M" workstation: "M" @@ -22,6 +22,9 @@ spec: number: 1 lastState: "" size: + workforces: + - workforce: "machineWorker" + number: 1 eventData: - activity: name: "Sawed" diff --git a/config/datasource/smart-factory-1P-withWF/e2-sawing-board.yaml b/config/datasource/smart-factory-1P-withWF/e2-sawing-board.yaml index 5aef9a2..7c1c6d2 100644 --- a/config/datasource/smart-factory-1P-withWF/e2-sawing-board.yaml +++ b/config/datasource/smart-factory-1P-withWF/e2-sawing-board.yaml @@ -4,7 +4,7 @@ spec: name: "SawingBoard" group: "factory" type: objectCentric - workforce: noWorkforce + workforce: hasWorkforce start: "M" end: "M" workstation: "M" @@ -22,6 +22,9 @@ spec: number: 1 lastState: "" size: + workforces: + - workforce: "machineWorker" + number: 1 eventData: - activity: name: "Sawed" diff --git a/config/datasource/smart-factory-1P-withWF/e3-drilling-bar.yaml b/config/datasource/smart-factory-1P-withWF/e3-drilling-bar.yaml index b772c85..f5598dd 100644 --- a/config/datasource/smart-factory-1P-withWF/e3-drilling-bar.yaml +++ b/config/datasource/smart-factory-1P-withWF/e3-drilling-bar.yaml @@ -4,10 +4,10 @@ spec: name: "DrillingBar" group: "factory" type: objectCentric - workforce: noWorkforce - start: "D" - end: "D" - workstation: "D" + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" selection: genericProbability distribution: [1.0] input: @@ -18,6 +18,9 @@ spec: length: "2" width: "" depth: "" + workforces: + - workforce: "machineWorker" + number: 1 eventData: - activity: name: "Drilled" diff --git a/config/datasource/smart-factory-1P-withWF/e4-sanding-Bar.yaml b/config/datasource/smart-factory-1P-withWF/e4-sanding-Bar.yaml index c33fd6c..c061bd7 100644 --- a/config/datasource/smart-factory-1P-withWF/e4-sanding-Bar.yaml +++ b/config/datasource/smart-factory-1P-withWF/e4-sanding-Bar.yaml @@ -4,10 +4,10 @@ spec: name: "SandingBar" group: "factory" type: objectCentric - workforce: noWorkforce - start: "SA" - end: "SA" - workstation: "SA" + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" selection: genericProbability distribution: [1.0] input: @@ -18,6 +18,9 @@ spec: length: "2" width: "" depth: "" + workforces: + - workforce: "machineWorker" + number: 1 eventData: - activity: name: "Sanded bar" diff --git a/config/datasource/smart-factory-1P-withWF/e4-sanding-Board.yaml b/config/datasource/smart-factory-1P-withWF/e4-sanding-Board.yaml index 14459ca..84834d8 100644 --- a/config/datasource/smart-factory-1P-withWF/e4-sanding-Board.yaml +++ b/config/datasource/smart-factory-1P-withWF/e4-sanding-Board.yaml @@ -4,10 +4,10 @@ spec: name: "SandingBoard" group: "factory" type: objectCentric - workforce: noWorkforce - start: "SA" - end: "SA" - workstation: "SA" + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" selection: genericProbability distribution: [1.0] input: @@ -18,6 +18,9 @@ spec: length: "" width: "5" depth: "5" + workforces: + - workforce: "machineWorker" + number: 1 eventData: - activity: name: "Sanded board" diff --git a/config/datasource/smart-factory-1P-withWF/workforces.yaml b/config/datasource/smart-factory-1P-withWF/workforces.yaml index a0f40ea..f333c3d 100644 --- a/config/datasource/smart-factory-1P-withWF/workforces.yaml +++ b/config/datasource/smart-factory-1P-withWF/workforces.yaml @@ -4,4 +4,7 @@ spec: workforces: - name: "transportRobot" startLocation: "ST" - number: 3 \ No newline at end of file + number: 3 + - name: "machineWorker" + startLocation: "M" + number: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/barA-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/barA-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/barA-resource.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/barA-resource.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/barA.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/barA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/barA.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/barA.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/barW-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/barW-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/barW-resource.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/barW-resource.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/barW.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/barW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/barW.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/barW.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/boardA-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/boardA-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/boardA-resource.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/boardA-resource.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/boardA.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/boardA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/boardA.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/boardA.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/boardW-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/boardW-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/boardW-resource.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/boardW-resource.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/boardW.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/boardW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/boardW.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/boardW.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e0-order.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e0-order.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e0-order.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e0-order.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e0a-order.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e0a-order.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e0a-order.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e0a-order.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e1-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e1-outgoing-stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e1-outgoing-stock.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e1-outgoing-stock.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e1a-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e1a-outgoing-stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e1a-outgoing-stock.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e1a-outgoing-stock.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e2-sawing-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e2-sawing-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e2-sawing-bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e2-sawing-bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e2-sawing-board.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e2-sawing-board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e2-sawing-board.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e2-sawing-board.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e2a-sawing-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e2a-sawing-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e2a-sawing-bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e2a-sawing-bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e2a-sawing-board.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e2a-sawing-board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e2a-sawing-board.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e2a-sawing-board.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e3-drilling-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e3-drilling-bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e3-drilling-bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e3a-drilling-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e3a-drilling-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e3a-drilling-bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e3a-drilling-bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e4-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e4-sanding-Bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e4-sanding-Bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e4-sanding-Bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e4-sanding-Board.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e4-sanding-Board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e4-sanding-Board.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e4-sanding-Board.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e4a-sanding-Bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e4a-sanding-Bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e4a-sanding-Bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e4a-sanding-Board.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e4a-sanding-Board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e4a-sanding-Board.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e4a-sanding-Board.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e5-assembly.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e5-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e5-assembly.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e5-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e5a-assembly.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e5a-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e5a-assembly.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e5a-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e6-quality-control.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e6-quality-control.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e6-quality-control.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e6-quality-control.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e6a-quality-control.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e6a-quality-control.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e6a-quality-control.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e6a-quality-control.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e7-shipping.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e7-shipping.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e7-shipping.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e7-shipping.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e7a-shipping.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/e7a-shipping.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e7a-shipping.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/e7a-shipping.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/order1.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/order1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/order1.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/order1.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/order2.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/order2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/order2.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/order2.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/pinA.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/pinA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/pinA.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/pinA.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/pinW.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/pinW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/pinW.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/pinW.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/resourceOrder1.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/resourceOrder1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/resourceOrder1.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/resourceOrder1.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/resourceOrder2.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/resourceOrder2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/resourceOrder2.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/resourceOrder2.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/routing.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/routing.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/routing.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/routing.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/screw1.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/screw1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/screw1.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/screw1.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/screw2.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/screw2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/screw2.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/screw2.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/shelf1.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/shelf1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/shelf1.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/shelf1.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/shelf2.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/shelf2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/shelf2.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/shelf2.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/warehouse_stock.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-attributes/warehouse_stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/warehouse_stock.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-attributes/warehouse_stock.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/barA-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/barA-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/barA-resource.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/barA-resource.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/barA.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/barA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/barA.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/barA.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-supplier/barW-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/barW-resource.yaml new file mode 100644 index 0000000..870fcbd --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/barW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barWResource" +spec: + name: "barWResource" + type: "wood" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-supplier/barW.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/barW.yaml new file mode 100644 index 0000000..0bc30cd --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/barW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barW" +spec: + name: "barW" + type: "wood" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/boardA-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/boardA-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/boardA-resource.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/boardA-resource.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/boardA.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/boardA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/boardA.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/boardA.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-supplier/boardW-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/boardW-resource.yaml new file mode 100644 index 0000000..8adec30 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/boardW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardWResource" +spec: + name: "boardWResource" + type: "wood" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-supplier/boardW.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/boardW.yaml new file mode 100644 index 0000000..52d7b3d --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/boardW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardW" +spec: + name: "boardW" + type: "wood" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e0-order.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e0-order.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e0-order.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e0-order.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e0a-order.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e0a-order.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e0a-order.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e0a-order.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e1-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e1-outgoing-stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e1-outgoing-stock.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e1-outgoing-stock.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e1a-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e1a-outgoing-stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e1a-outgoing-stock.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e1a-outgoing-stock.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e2-sawing-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e2-sawing-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e2-sawing-bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e2-sawing-bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e2-sawing-board.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e2-sawing-board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e2-sawing-board.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e2-sawing-board.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e2a-sawing-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e2a-sawing-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e2a-sawing-bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e2a-sawing-bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e2a-sawing-board.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e2a-sawing-board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e2a-sawing-board.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e2a-sawing-board.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e3-drilling-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e3-drilling-bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e3-drilling-bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e3a-drilling-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e3a-drilling-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e3a-drilling-bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e3a-drilling-bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e4-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e4-sanding-Bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e4-sanding-Bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e4-sanding-Bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e4-sanding-Board.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e4-sanding-Board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e4-sanding-Board.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e4-sanding-Board.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e4a-sanding-Bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e4a-sanding-Bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e4a-sanding-Bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e4a-sanding-Board.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e4a-sanding-Board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e4a-sanding-Board.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e4a-sanding-Board.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e5-assembly.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e5-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e5-assembly.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e5-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e5a-assembly.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e5a-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e5a-assembly.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e5a-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e6-quality-control.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e6-quality-control.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e6-quality-control.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e6-quality-control.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e6a-quality-control.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e6a-quality-control.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e6a-quality-control.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e6a-quality-control.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e7-shipping.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e7-shipping.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e7-shipping.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e7-shipping.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e7a-shipping.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/e7a-shipping.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e7a-shipping.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/e7a-shipping.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-supplier/order1.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/order1.yaml new file mode 100644 index 0000000..bcaf45f --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/order1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order1" +spec: + name: "order1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-supplier/order2.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/order2.yaml new file mode 100644 index 0000000..dbc0dcf --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/order2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order2" +spec: + name: "order2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/bolt.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/pinA.yaml similarity index 64% rename from config/datasource/smart-factory-parallel/bolt.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/pinA.yaml index 2dacd3d..65266d9 100644 --- a/config/datasource/smart-factory-parallel/bolt.yaml +++ b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/pinA.yaml @@ -1,6 +1,6 @@ kind: object -name: "bolt" +name: "pinA" spec: - name: "bolt" + name: "pinA" type: "smallComponent" size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/screw.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/pinW.yaml similarity index 62% rename from config/datasource/smart-factory-parallel/screw.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/pinW.yaml index b721d7d..196b594 100644 --- a/config/datasource/smart-factory-parallel/screw.yaml +++ b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/pinW.yaml @@ -1,6 +1,6 @@ kind: object -name: "screw" +name: "pinW" spec: - name: "screw" + name: "pinW" type: "smallComponent" size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-supplier/resourceOrder1.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/resourceOrder1.yaml new file mode 100644 index 0000000..be67937 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/resourceOrder1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder1" +spec: + name: "resourceOrder1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-supplier/resourceOrder2.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/resourceOrder2.yaml new file mode 100644 index 0000000..7fcf9c4 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/resourceOrder2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder2" +spec: + name: "resourceOrder2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/routing.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/routing.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/routing.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/routing.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-supplier/screw1.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/screw1.yaml new file mode 100644 index 0000000..5f02ab1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/screw1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw1" +spec: + name: "screw1" + type: "smallComponent" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-supplier/screw2.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/screw2.yaml new file mode 100644 index 0000000..3219433 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/screw2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw2" +spec: + name: "screw2" + type: "smallComponent" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/woodShelf.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/shelf1.yaml similarity index 53% rename from config/datasource/smart-factory-parallel/woodShelf.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/shelf1.yaml index f4859dd..ea1a1d8 100644 --- a/config/datasource/smart-factory-parallel/woodShelf.yaml +++ b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/shelf1.yaml @@ -1,6 +1,6 @@ kind: object -name: "woodShelf" +name: "shelf1" spec: - name: "woodShelf" + name: "shelf1" type: "product" size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-supplier/shelf2.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/shelf2.yaml new file mode 100644 index 0000000..7115caa --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/shelf2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf2" +spec: + name: "shelf2" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects4/warehouse_stock.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-supplier/warehouse_stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/warehouse_stock.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-supplier/warehouse_stock.yaml diff --git a/config/datasource/smart-factory-parallel/bar-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/barA-resource.yaml similarity index 66% rename from config/datasource/smart-factory-parallel/bar-resource.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/barA-resource.yaml index 5959b49..34bd237 100644 --- a/config/datasource/smart-factory-parallel/bar-resource.yaml +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/barA-resource.yaml @@ -1,7 +1,7 @@ kind: object -name: "barResource" +name: "barAResource" spec: - name: "barResource" + name: "barAResource" type: "resource" size: length: "5" diff --git a/config/datasource/smart-factory-parallel/bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/barA.yaml similarity index 77% rename from config/datasource/smart-factory-parallel/bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/barA.yaml index e075f62..59070fc 100644 --- a/config/datasource/smart-factory-parallel/bar.yaml +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/barA.yaml @@ -1,7 +1,7 @@ kind: object -name: "bar" +name: "barA" spec: - name: "bar" + name: "barA" type: "processedResource" size: length: "2" diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-time/barW-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/barW-resource.yaml new file mode 100644 index 0000000..4086ca6 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/barW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barWResource" +spec: + name: "barWResource" + type: "resource" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-time/barW.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/barW.yaml new file mode 100644 index 0000000..5fd5a06 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/barW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barW" +spec: + name: "barW" + type: "processedResource" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/board-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/boardA-resource.yaml similarity index 65% rename from config/datasource/smart-factory-parallel/board-resource.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/boardA-resource.yaml index 43f93bb..34a8491 100644 --- a/config/datasource/smart-factory-parallel/board-resource.yaml +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/boardA-resource.yaml @@ -1,7 +1,7 @@ kind: object -name: "boardResource" +name: "boardAResource" spec: - name: "boardResource" + name: "boardAResource" type: "resource" size: length: "" diff --git a/config/datasource/smart-factory-parallel/board.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/boardA.yaml similarity index 75% rename from config/datasource/smart-factory-parallel/board.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/boardA.yaml index 8422765..8483dd9 100644 --- a/config/datasource/smart-factory-parallel/board.yaml +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/boardA.yaml @@ -1,7 +1,7 @@ kind: object -name: "board" +name: "boardA" spec: - name: "board" + name: "boardA" type: "processedResource" size: length: diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-time/boardW-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/boardW-resource.yaml new file mode 100644 index 0000000..c107fd1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/boardW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardWResource" +spec: + name: "boardWResource" + type: "resource" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-time/boardW.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/boardW.yaml new file mode 100644 index 0000000..7a4be5c --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/boardW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardW" +spec: + name: "boardW" + type: "processedResource" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e0-order.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e0-order.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e0-order.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e0-order.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e0a-order.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e0a-order.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e0a-order.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e0a-order.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e1-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e1-outgoing-stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e1-outgoing-stock.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e1-outgoing-stock.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e1a-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e1a-outgoing-stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e1a-outgoing-stock.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e1a-outgoing-stock.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e2-sawing-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e2-sawing-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e2-sawing-bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e2-sawing-bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e2-sawing-board.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e2-sawing-board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e2-sawing-board.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e2-sawing-board.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e2a-sawing-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e2a-sawing-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e2a-sawing-bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e2a-sawing-bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e2a-sawing-board.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e2a-sawing-board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e2a-sawing-board.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e2a-sawing-board.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e3-drilling-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e3-drilling-bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e3-drilling-bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e3a-drilling-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e3a-drilling-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e3a-drilling-bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e3a-drilling-bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e4-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e4-sanding-Bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e4-sanding-Bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e4-sanding-Bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e4-sanding-Board.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e4-sanding-Board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e4-sanding-Board.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e4-sanding-Board.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e4a-sanding-Bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e4a-sanding-Bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e4a-sanding-Bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e4a-sanding-Board.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e4a-sanding-Board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e4a-sanding-Board.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e4a-sanding-Board.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e5-assembly.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e5-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e5-assembly.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e5-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e5a-assembly.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e5a-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e5a-assembly.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e5a-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e6-quality-control.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e6-quality-control.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e6-quality-control.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e6-quality-control.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/e6a-quality-control.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e6a-quality-control.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/e6a-quality-control.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e6a-quality-control.yaml diff --git a/config/datasource/smart-factory-parallel2/e7-shipping.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e7-shipping.yaml similarity index 51% rename from config/datasource/smart-factory-parallel2/e7-shipping.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/e7-shipping.yaml index 3115212..d3c6dd3 100644 --- a/config/datasource/smart-factory-parallel2/e7-shipping.yaml +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/e7-shipping.yaml @@ -1,7 +1,7 @@ kind: datasource -name: "Shipping" +name: "Shipping1" spec: - name: "Shipping" + name: "Shipping1" group: "factory" type: objectCentric workforce: noWorkforce @@ -9,28 +9,19 @@ spec: end: "S" workstation: "S" selection: genericProbability - distribution: [ 0.8, 0.2 ] + distribution: [ 1.0 ] input: - - object: "woodShelf" + - object: "shelf1" number: 1 lastState: "proofed" size: eventData: - - activity: - name: "Package waits for sending" - output: - - object: "woodShelf" - number: 1 - change: "sent" - size: - transition: "Shipping" - duration: 180 - activity: name: "Package sent" output: - - object: "woodShelf" + - object: "shelf1" number: 1 change: "sent" size: transition: "" - duration: 1 \ No newline at end of file + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-time/e7a-shipping.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/e7a-shipping.yaml new file mode 100644 index 0000000..94c8670 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/e7a-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping2" +spec: + name: "Shipping2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf2" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-time/order1.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/order1.yaml new file mode 100644 index 0000000..bcaf45f --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/order1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order1" +spec: + name: "order1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-time/order2.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/order2.yaml new file mode 100644 index 0000000..dbc0dcf --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/order2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order2" +spec: + name: "order2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-time/pinA.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/pinA.yaml new file mode 100644 index 0000000..3ff2a03 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/pinA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinA" +spec: + name: "pinA" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-time/pinW.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/pinW.yaml new file mode 100644 index 0000000..96ec4f7 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/pinW.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinW" +spec: + name: "pinW" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-time/resourceOrder1.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/resourceOrder1.yaml new file mode 100644 index 0000000..be67937 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/resourceOrder1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder1" +spec: + name: "resourceOrder1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-time/resourceOrder2.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/resourceOrder2.yaml new file mode 100644 index 0000000..7fcf9c4 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/resourceOrder2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder2" +spec: + name: "resourceOrder2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/routing.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/routing.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/routing.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-time/routing.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-time/screw1.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/screw1.yaml new file mode 100644 index 0000000..45e5f8b --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/screw1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw1" +spec: + name: "screw1" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-time/screw2.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/screw2.yaml new file mode 100644 index 0000000..6d6076e --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/screw2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw2" +spec: + name: "screw2" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-time/shelf1.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/shelf1.yaml new file mode 100644 index 0000000..ea1a1d8 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/shelf1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf1" +spec: + name: "shelf1" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-time/shelf2.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/shelf2.yaml new file mode 100644 index 0000000..7115caa --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/shelf2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf2" +spec: + name: "shelf2" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-time/warehouse_stock.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-time/warehouse_stock.yaml new file mode 100644 index 0000000..bca347e --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-time/warehouse_stock.yaml @@ -0,0 +1,12 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order2" + number: 1000 + lastState: + size: + - object: "order1" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/barA-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/barA-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/barA-resource.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/barA-resource.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/barA.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/barA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/barA.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/barA.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/barW-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/barW-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/barW-resource.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/barW-resource.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/barW.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/barW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/barW.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/barW.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/boardA-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/boardA-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/boardA-resource.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/boardA-resource.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/boardA.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/boardA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/boardA.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/boardA.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/boardW-resource.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/boardW-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/boardW-resource.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/boardW-resource.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/boardW.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/boardW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/boardW.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/boardW.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e0-order.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e0-order.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e0-order.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e0-order.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e0a-order.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e0a-order.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e0a-order.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e0a-order.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e1-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e1-outgoing-stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e1-outgoing-stock.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e1-outgoing-stock.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e1a-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e1a-outgoing-stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e1a-outgoing-stock.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e1a-outgoing-stock.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e2-sawing-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e2-sawing-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e2-sawing-bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e2-sawing-bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e2-sawing-board.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e2-sawing-board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e2-sawing-board.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e2-sawing-board.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e2a-sawing-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e2a-sawing-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e2a-sawing-bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e2a-sawing-bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e2a-sawing-board.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e2a-sawing-board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e2a-sawing-board.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e2a-sawing-board.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e3-drilling-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e3-drilling-bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e3-drilling-bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e3a-drilling-bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e3a-drilling-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e3a-drilling-bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e3a-drilling-bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e4-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e4-sanding-Bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e4-sanding-Bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e4-sanding-Bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e4-sanding-Board.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e4-sanding-Board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e4-sanding-Board.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e4-sanding-Board.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e4a-sanding-Bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e4a-sanding-Bar.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e4a-sanding-Bar.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e4a-sanding-Board.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e4a-sanding-Board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e4a-sanding-Board.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e4a-sanding-Board.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e5-assembly.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e5-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e5-assembly.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e5-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e5a-assembly.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e5a-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e5a-assembly.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e5a-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e6-quality-control.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e6-quality-control.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e6-quality-control.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e6-quality-control.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/e6a-quality-control.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e6a-quality-control.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/e6a-quality-control.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e6a-quality-control.yaml diff --git a/config/datasource/smart-factory-parallel/e7-shipping.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e7-shipping.yaml similarity index 51% rename from config/datasource/smart-factory-parallel/e7-shipping.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/e7-shipping.yaml index 0a1044f..d3c6dd3 100644 --- a/config/datasource/smart-factory-parallel/e7-shipping.yaml +++ b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e7-shipping.yaml @@ -1,7 +1,7 @@ kind: datasource -name: "Shipping" +name: "Shipping1" spec: - name: "Shipping" + name: "Shipping1" group: "factory" type: objectCentric workforce: noWorkforce @@ -9,28 +9,19 @@ spec: end: "S" workstation: "S" selection: genericProbability - distribution: [ 0.8, 0.2 ] + distribution: [ 1.0 ] input: - - object: "woodShelf" + - object: "shelf1" number: 1 lastState: "proofed" size: eventData: - - activity: - name: "Package waits for sending" - output: - - object: "woodShelf" - number: 1 - change: "proofed" - size: - transition: "Shipping" - duration: 180 - activity: name: "Package sent" output: - - object: "woodShelf" + - object: "shelf1" number: 1 change: "sent" size: transition: "" - duration: 1 \ No newline at end of file + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-variant/e7a-shipping.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e7a-shipping.yaml new file mode 100644 index 0000000..94c8670 --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-variant/e7a-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping2" +spec: + name: "Shipping2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf2" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects/order1.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/order1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/order1.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/order1.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/order2.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/order2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/order2.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/order2.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/pinA.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/pinA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/pinA.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/pinA.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/pinW.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/pinW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/pinW.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/pinW.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/resourceOrder1.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/resourceOrder1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/resourceOrder1.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/resourceOrder1.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/resourceOrder2.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/resourceOrder2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/resourceOrder2.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/resourceOrder2.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects4/routing.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/routing.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects4/routing.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/routing.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/screw1.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/screw1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/screw1.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/screw1.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/screw2.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/screw2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/screw2.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/screw2.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/shelf1.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/shelf1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/shelf1.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/shelf1.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/shelf2.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/shelf2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/shelf2.yaml rename to config/datasource/smart-factory-2P-withoutDefects-by-variant/shelf2.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects-by-variant/warehouse_stock.yaml b/config/datasource/smart-factory-2P-withoutDefects-by-variant/warehouse_stock.yaml new file mode 100644 index 0000000..bca347e --- /dev/null +++ b/config/datasource/smart-factory-2P-withoutDefects-by-variant/warehouse_stock.yaml @@ -0,0 +1,12 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order2" + number: 1000 + lastState: + size: + - object: "order1" + number: 1000 + lastState: + size: \ No newline at end of file From 41daf5608dc3da69aa3f4d61933436c457c5f1c6 Mon Sep 17 00:00:00 2001 From: ulpi Date: Thu, 28 Aug 2025 10:20:49 +0200 Subject: [PATCH 119/124] smart factory renaming --- .../barA-resource.yaml | 0 .../barA.yaml | 0 .../barW-resource.yaml | 0 .../barW.yaml | 0 .../boardA-resource.yaml | 0 .../boardA.yaml | 0 .../boardW-resource.yaml | 0 .../boardW.yaml | 0 .../e0-order.yaml | 0 .../e0a-order.yaml | 0 .../e1-outgoing-stock.yaml | 0 .../e1a-outgoing-stock.yaml | 0 .../e2-sawing-bar.yaml | 0 .../e2-sawing-board.yaml | 0 .../e2a-sawing-bar.yaml | 0 .../e2a-sawing-board.yaml | 0 .../e3-drilling-bar.yaml | 0 .../e3a-drilling-bar.yaml | 0 .../e4-sanding-Bar.yaml | 0 .../e4-sanding-Board.yaml | 0 .../e4a-sanding-Bar.yaml | 0 .../e4a-sanding-Board.yaml | 0 .../e5-assembly.yaml | 0 .../e5a-assembly.yaml | 0 .../e6-quality-control.yaml | 0 .../e6a-quality-control.yaml | 0 .../e7-shipping.yaml | 0 .../e7a-shipping.yaml | 0 .../handover.yaml | 0 .../handoverA.yaml | 0 .../handoverBar.yaml | 0 .../handoverBarA.yaml | 0 .../handoverBarR.yaml | 0 .../handoverBarRA.yaml | 0 .../handoverBoard.yaml | 0 .../handoverBoardA.yaml | 0 .../handoverBoardR.yaml | 0 .../handoverBoardRA.yaml | 0 .../order1.yaml | 0 .../order2.yaml | 0 .../pinA.yaml | 0 .../pinW.yaml | 0 .../resourceOrder1.yaml | 0 .../resourceOrder2.yaml | 0 .../routing.yaml | 0 .../screw1.yaml | 0 .../screw2.yaml | 0 .../shelf1.yaml | 0 .../shelf2.yaml | 0 .../t0A-stock-to-machine.yaml | 0 .../t0BA-stock-to-machine.yaml | 0 .../t0BW-stock-to-machine.yaml | 0 .../t0W-stock-to-machine.yaml | 0 .../t1-stock-to-assembly.yaml | 0 .../t1A-machine-to-assembly.yaml | 0 .../t1A-stock-to-assembly.yaml | 0 .../t1BA-machine-to-assembly.yaml | 0 .../t1BW-machine-to-assembly.yaml | 0 .../t1W-machine-to-assembly.yaml | 0 .../warehouse_stock.yaml | 0 .../workforces.yaml | 0 .../barA-resource.yaml | 0 .../barA.yaml | 0 .../barW-resource.yaml | 0 .../barW.yaml | 0 .../boardA-resource.yaml | 0 .../boardA.yaml | 0 .../boardW-resource.yaml | 0 .../boardW.yaml | 0 .../e0-order.yaml | 0 .../e0a-order.yaml | 0 .../e1-outgoing-stock.yaml | 0 .../e1a-outgoing-stock.yaml | 0 .../e2-sawing-bar.yaml | 0 .../e2-sawing-board.yaml | 0 .../e2a-sawing-bar.yaml | 0 .../e2a-sawing-board.yaml | 0 .../e3-drilling-bar.yaml | 0 .../e3a-drilling-bar.yaml | 0 .../e4-sanding-Bar.yaml | 0 .../e4-sanding-Board.yaml | 0 .../e4a-sanding-Bar.yaml | 0 .../e4a-sanding-Board.yaml | 0 .../e5-assembly.yaml | 0 .../e5a-assembly.yaml | 0 .../e6-quality-control.yaml | 0 .../e6a-quality-control.yaml | 0 .../e7-shipping.yaml | 0 .../e7a-shipping.yaml | 0 .../handover.yaml | 0 .../handoverA.yaml | 6 ++ .../handoverBar.yaml | 6 ++ .../handoverBarA.yaml | 6 ++ .../handoverBarR.yaml | 6 ++ .../handoverBarRA.yaml | 6 ++ .../handoverBoard.yaml | 6 ++ .../handoverBoardA.yaml | 6 ++ .../handoverBoardR.yaml | 6 ++ .../handoverBoardRA.yaml | 6 ++ .../order1.yaml | 0 .../order2.yaml | 0 .../pinA.yaml | 0 .../pinW.yaml | 0 .../resourceOrder1.yaml | 0 .../resourceOrder2.yaml | 0 .../routing.yaml | 0 .../screw1.yaml | 0 .../screw2.yaml | 0 .../shelf1.yaml | 0 .../shelf2.yaml | 0 .../t0A-stock-to-machine.yaml | 0 .../t0BA-stock-to-machine.yaml | 0 .../t0BW-stock-to-machine.yaml | 0 .../t0W-stock-to-machine.yaml | 0 .../t1-stock-to-assembly.yaml | 0 .../t1A-machine-to-assembly.yaml | 0 .../t1A-stock-to-assembly.yaml | 0 .../t1BA-machine-to-assembly.yaml | 0 .../t1BW-machine-to-assembly.yaml | 0 .../t1W-machine-to-assembly.yaml | 0 .../warehouse_stock.yaml | 0 .../workforces.yaml | 0 .../barA-resource.yaml | 9 +++ .../barA.yaml | 9 +++ .../barW-resource.yaml | 0 .../barW.yaml | 0 .../boardA-resource.yaml | 9 +++ .../boardA.yaml | 9 +++ .../boardW-resource.yaml | 0 .../boardW.yaml | 0 .../e0-order.yaml | 0 .../e0a-order.yaml | 0 .../e1-outgoing-stock.yaml | 26 +++++-- .../e1a-outgoing-stock.yaml | 54 +++++++++++++ .../e2-sawing-bar.yaml | 75 +++++++++++++++++++ .../e2-sawing-board.yaml | 75 +++++++++++++++++++ .../e2a-sawing-bar.yaml | 75 +++++++++++++++++++ .../e2a-sawing-board.yaml | 75 +++++++++++++++++++ .../e3-drilling-bar.yaml | 48 ++++++++++++ .../e3a-drilling-bar.yaml | 48 ++++++++++++ .../e4-sanding-Bar.yaml | 0 .../e4-sanding-Board.yaml | 0 .../e4a-sanding-Bar.yaml | 0 .../e4a-sanding-Board.yaml | 0 .../e5-assembly.yaml | 39 +++++++--- .../e5a-assembly.yaml} | 34 ++++----- .../e6-quality-control.yaml | 37 +++++---- .../e6a-quality-control.yaml | 47 ++++++++++++ .../e7-shipping.yaml | 0 .../e7a-shipping.yaml | 0 .../handover.yaml | 0 .../handoverA.yaml | 0 .../handoverBar.yaml | 0 .../handoverBarA.yaml | 0 .../handoverBarR.yaml | 0 .../handoverBarRA.yaml | 0 .../handoverBoard.yaml | 0 .../handoverBoardA.yaml | 0 .../handoverBoardR.yaml | 0 .../handoverBoardRA.yaml | 0 .../order1.yaml | 0 .../order2.yaml | 0 .../pinA.yaml | 0 .../pinW.yaml | 0 .../resourceOrder1.yaml | 0 .../resourceOrder2.yaml | 0 .../routing.yaml | 0 .../screw1.yaml | 0 .../screw2.yaml | 0 .../shelf1.yaml | 0 .../shelf2.yaml | 0 .../t0A-stock-to-machine.yaml | 0 .../t0BA-stock-to-machine.yaml | 0 .../t0BW-stock-to-machine.yaml | 0 .../t0W-stock-to-machine.yaml | 0 .../t1-stock-to-assembly.yaml | 0 .../t1A-machine-to-assembly.yaml | 0 .../t1A-stock-to-assembly.yaml | 0 .../t1BA-machine-to-assembly.yaml | 0 .../t1BW-machine-to-assembly.yaml | 0 .../t1W-machine-to-assembly.yaml | 0 .../warehouse_stock.yaml | 0 .../workforces.yaml | 0 .../barA-resource.yaml | 0 .../barA.yaml | 0 .../barW-resource.yaml | 0 .../barW.yaml | 0 .../boardA-resource.yaml | 0 .../boardA.yaml | 0 .../boardW-resource.yaml | 0 .../boardW.yaml | 0 .../e0-order.yaml | 27 +++++++ .../e0a-order.yaml | 27 +++++++ .../e1-outgoing-stock.yaml | 54 +++++++++++++ .../e1a-outgoing-stock.yaml | 54 +++++++++++++ .../e2-sawing-bar.yaml | 75 +++++++++++++++++++ .../e2-sawing-board.yaml | 75 +++++++++++++++++++ .../e2a-sawing-bar.yaml | 75 +++++++++++++++++++ .../e2a-sawing-board.yaml | 75 +++++++++++++++++++ .../e3-drilling-bar.yaml | 48 ++++++++++++ .../e3a-drilling-bar.yaml | 48 ++++++++++++ .../e4-sanding-Bar.yaml | 18 ++--- .../e4-sanding-Board.yaml | 18 ++--- .../e4a-sanding-Bar.yaml} | 24 +++--- .../e4a-sanding-Board.yaml | 36 +++++++++ .../e5-assembly.yaml | 75 +++++++++++++++++++ .../e5a-assembly.yaml | 75 +++++++++++++++++++ .../e6-quality-control.yaml | 39 +++++----- .../e6a-quality-control.yaml | 47 ++++++++++++ .../e7-shipping.yaml | 0 .../e7a-shipping.yaml | 0 .../handover.yaml | 0 .../handoverA.yaml | 0 .../handoverBar.yaml | 0 .../handoverBarA.yaml | 0 .../handoverBarR.yaml | 0 .../handoverBarRA.yaml | 0 .../handoverBoard.yaml | 0 .../handoverBoardA.yaml | 0 .../handoverBoardR.yaml | 0 .../handoverBoardRA.yaml | 0 .../order1.yaml | 0 .../order2.yaml | 0 .../pinA.yaml | 0 .../pinW.yaml | 0 .../resourceOrder1.yaml | 0 .../resourceOrder2.yaml | 0 .../routing.yaml | 24 +++++- .../screw1.yaml | 0 .../screw2.yaml | 0 .../shelf1.yaml | 0 .../shelf2.yaml | 0 .../t0A-stock-to-machine.yaml} | 18 ++--- .../t0BA-stock-to-machine.yaml | 40 ++++++++++ .../t0BW-stock-to-machine.yaml} | 18 ++--- .../t0W-stock-to-machine.yaml} | 18 ++--- .../t1-stock-to-assembly.yaml | 14 ++-- .../t1A-machine-to-assembly.yaml | 40 ++++++++++ .../t1A-stock-to-assembly.yaml | 42 +++++++++++ .../t1BA-machine-to-assembly.yaml | 40 ++++++++++ .../t1BW-machine-to-assembly.yaml} | 20 ++--- .../t1W-machine-to-assembly.yaml} | 14 ++-- .../warehouse_stock.yaml | 0 .../workforces.yaml | 5 +- .../barA-resource.yaml | 0 .../barA.yaml | 0 .../barW-resource.yaml | 0 .../barW.yaml | 0 .../boardA-resource.yaml | 0 .../boardA.yaml | 0 .../boardW-resource.yaml | 0 .../boardW.yaml | 0 .../e0-order.yaml | 27 +++++++ .../e0a-order.yaml | 27 +++++++ .../e1-outgoing-stock.yaml | 0 .../e1a-outgoing-stock.yaml | 0 .../e2-sawing-bar.yaml | 0 .../e2-sawing-board.yaml | 0 .../e2a-sawing-bar.yaml | 0 .../e2a-sawing-board.yaml | 0 .../e3-drilling-bar.yaml | 0 .../e3a-drilling-bar.yaml | 0 .../e4-sanding-Bar.yaml | 25 ++++--- .../e4-sanding-Board.yaml} | 27 ++++--- .../e4a-sanding-Bar.yaml | 36 +++++++++ .../e4a-sanding-Board.yaml | 36 +++++++++ .../e5-assembly.yaml | 0 .../e5a-assembly.yaml | 0 .../e6-quality-control.yaml | 0 .../e6a-quality-control.yaml | 0 .../e7-shipping.yaml | 0 .../e7a-shipping.yaml | 0 .../handover.yaml | 5 -- .../handoverA.yaml} | 4 +- .../handoverBar.yaml | 0 .../handoverBarA.yaml | 6 ++ .../handoverBarR.yaml | 6 ++ .../handoverBarRA.yaml | 6 ++ .../handoverBoard.yaml | 6 ++ .../handoverBoardA.yaml | 6 ++ .../handoverBoardR.yaml | 6 ++ .../handoverBoardRA.yaml | 6 ++ .../order1.yaml | 0 .../order2.yaml | 0 .../pinA.yaml | 0 .../pinW.yaml | 0 .../resourceOrder1.yaml | 0 .../resourceOrder2.yaml | 0 .../routing.yaml | 42 +++++------ .../screw1.yaml | 0 .../screw2.yaml | 0 .../shelf1.yaml | 0 .../shelf2.yaml | 0 .../t0A-stock-to-machine.yaml | 40 ++++++++++ .../t0BA-stock-to-machine.yaml | 40 ++++++++++ .../t0BW-stock-to-machine.yaml | 40 ++++++++++ .../t0W-stock-to-machine.yaml | 40 ++++++++++ .../t1-stock-to-assembly.yaml | 18 +++-- .../t1A-machine-to-assembly.yaml | 40 ++++++++++ .../t1A-stock-to-assembly.yaml | 42 +++++++++++ .../t1BA-machine-to-assembly.yaml | 40 ++++++++++ .../t1BW-machine-to-assembly.yaml | 40 ++++++++++ .../t1W-machine-to-assembly.yaml} | 16 ++-- .../warehouse_stock.yaml | 0 .../workforces.yaml | 13 ++++ 305 files changed, 2317 insertions(+), 229 deletions(-) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/barA-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/barA.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/barW-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/barW.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/boardA-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/boardA.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/boardW-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/boardW.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/e0-order.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/e0a-order.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withTR-withoutDefects}/e1-outgoing-stock.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withTR-withoutDefects}/e1a-outgoing-stock.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withTR-withoutDefects}/e2-sawing-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withTR-withoutDefects}/e2-sawing-board.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withTR-withoutDefects}/e2a-sawing-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withTR-withoutDefects}/e2a-sawing-board.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withTR-withoutDefects}/e3-drilling-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withTR-withoutDefects}/e3a-drilling-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withTR-withoutDefects}/e4-sanding-Bar.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withTR-withoutDefects}/e4-sanding-Board.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withTR-withoutDefects}/e4a-sanding-Bar.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withTR-withoutDefects}/e4a-sanding-Board.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withTR-withoutDefects}/e5-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withTR-withoutDefects}/e5a-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withTR-withoutDefects}/e6-quality-control.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withTR-withoutDefects}/e6a-quality-control.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/e7-shipping.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/e7a-shipping.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/handover.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/handoverA.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/handoverBar.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/handoverBarA.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/handoverBarR.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/handoverBarRA.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/handoverBoard.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/handoverBoardA.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/handoverBoardR.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/handoverBoardRA.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/order1.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/order2.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/pinA.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/pinW.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/resourceOrder1.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/resourceOrder2.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/routing.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/screw1.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/screw2.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/shelf1.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/shelf2.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/t0A-stock-to-machine.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/t0BA-stock-to-machine.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/t0BW-stock-to-machine.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/t0W-stock-to-machine.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/t1-stock-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/t1A-machine-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/t1A-stock-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/t1BA-machine-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/t1BW-machine-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/t1W-machine-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withTR-withoutDefects}/warehouse_stock.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withTR-withoutDefects}/workforces.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/barA-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/barA.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/barW-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/barW.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/boardA-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/boardA.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/boardW-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/boardW.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e0-order.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e0a-order.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e1-outgoing-stock.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e1a-outgoing-stock.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e2-sawing-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e2-sawing-board.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e2a-sawing-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e2a-sawing-board.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e3-drilling-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e3a-drilling-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e4-sanding-Bar.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e4-sanding-Board.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e4a-sanding-Bar.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e4a-sanding-Board.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e5-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e5a-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e6-quality-control.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e6a-quality-control.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e7-shipping.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/e7a-shipping.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/handover.yaml (100%) create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBarA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBarR.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBarRA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBoard.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBoardA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBoardR.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBoardRA.yaml rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/order1.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/order2.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/pinA.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/pinW.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/resourceOrder1.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/resourceOrder2.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/routing.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/screw1.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/screw2.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/shelf1.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/shelf2.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/t0A-stock-to-machine.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/t0BA-stock-to-machine.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/t0BW-stock-to-machine.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/t0W-stock-to-machine.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/t1-stock-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/t1A-machine-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/t1A-stock-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/t1BA-machine-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/t1BW-machine-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/t1W-machine-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-strict-time}/warehouse_stock.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withD3 => smart-factory-2P-withWF-withDefects-by-strict-time}/workforces.yaml (100%) create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/barA-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/barA.yaml rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withWF-withDefects-by-supplier}/barW-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withWF-withDefects-by-supplier}/barW.yaml (100%) create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/boardA-resource.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/boardA.yaml rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withWF-withDefects-by-supplier}/boardW-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withWF-withDefects-by-supplier}/boardW.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/e0-order.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/e0a-order.yaml (100%) rename config/datasource/{smart-factory-parallel => smart-factory-2P-withWF-withDefects-by-supplier}/e1-outgoing-stock.yaml (60%) create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e1a-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e2-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e2-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e2a-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e2a-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e3a-drilling-bar.yaml rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/e4-sanding-Bar.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/e4-sanding-Board.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/e4a-sanding-Bar.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/e4a-sanding-Board.yaml (100%) rename config/datasource/{smart-factory-parallel2 => smart-factory-2P-withWF-withDefects-by-supplier}/e5-assembly.yaml (62%) rename config/datasource/{smart-factory-parallel/e5-assembly.yaml => smart-factory-2P-withWF-withDefects-by-supplier/e5a-assembly.yaml} (70%) rename config/datasource/{smart-factory-parallel2 => smart-factory-2P-withWF-withDefects-by-supplier}/e6-quality-control.yaml (65%) create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e6a-quality-control.yaml rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/e7-shipping.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/e7a-shipping.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/handover.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/handoverA.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/handoverBar.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/handoverBarA.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/handoverBarR.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/handoverBarRA.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/handoverBoard.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/handoverBoardA.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/handoverBoardR.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/handoverBoardRA.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/order1.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/order2.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withWF-withDefects-by-supplier}/pinA.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withWF-withDefects-by-supplier}/pinW.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/resourceOrder1.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/resourceOrder2.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/routing.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withWF-withDefects-by-supplier}/screw1.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withWF-withDefects-by-supplier}/screw2.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/shelf1.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/shelf2.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/t0A-stock-to-machine.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/t0BA-stock-to-machine.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/t0BW-stock-to-machine.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/t0W-stock-to-machine.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/t1-stock-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/t1A-machine-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/t1A-stock-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/t1BA-machine-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/t1BW-machine-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/t1W-machine-to-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/warehouse_stock.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withDefects-by-supplier}/workforces.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/barA-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/barA.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/barW-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/barW.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/boardA-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/boardA.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/boardW-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/boardW.yaml (100%) create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/e0-order.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/e0a-order.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/e1-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/e1a-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/e2-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/e2-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/e2a-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/e2a-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/e3a-drilling-bar.yaml rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-2P-withWF-withDefects-by-time}/e4-sanding-Bar.yaml (73%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-2P-withWF-withDefects-by-time}/e4-sanding-Board.yaml (73%) rename config/datasource/{smart-factory-1P-withWF+/e3-drilling-bar.yaml => smart-factory-2P-withWF-withDefects-by-time/e4a-sanding-Bar.yaml} (63%) create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/e4a-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/e5-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/e5a-assembly.yaml rename config/datasource/{smart-factory-parallel => smart-factory-2P-withWF-withDefects-by-time}/e6-quality-control.yaml (56%) create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/e6a-quality-control.yaml rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withWF-withDefects-by-time}/e7-shipping.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withWF-withDefects-by-time}/e7a-shipping.yaml (100%) rename config/datasource/{smart-factory-parallel => smart-factory-2P-withWF-withDefects-by-time}/handover.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/handoverA.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/handoverBar.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/handoverBarA.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/handoverBarR.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/handoverBarRA.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/handoverBoard.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/handoverBoardA.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/handoverBoardR.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/handoverBoardRA.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withWF-withDefects-by-time}/order1.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withWF-withDefects-by-time}/order2.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/pinA.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/pinW.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withWF-withDefects-by-time}/resourceOrder1.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withWF-withDefects-by-time}/resourceOrder2.yaml (100%) rename config/datasource/{smart-factory-parallel => smart-factory-2P-withWF-withDefects-by-time}/routing.yaml (55%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/screw1.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withDefects-by-time}/screw2.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withWF-withDefects-by-time}/shelf1.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withWF-withDefects-by-time}/shelf2.yaml (100%) rename config/datasource/{smart-factory-parallel/t0-stock-to-machine.yaml => smart-factory-2P-withWF-withDefects-by-time/t0A-stock-to-machine.yaml} (70%) create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/t0BA-stock-to-machine.yaml rename config/datasource/{smart-factory-parallel/t1-stock-to-machine.yaml => smart-factory-2P-withWF-withDefects-by-time/t0BW-stock-to-machine.yaml} (70%) rename config/datasource/{smart-factory-parallel2/t0-stock-to-machine.yaml => smart-factory-2P-withWF-withDefects-by-time/t0W-stock-to-machine.yaml} (71%) rename config/datasource/{smart-factory-parallel => smart-factory-2P-withWF-withDefects-by-time}/t1-stock-to-assembly.yaml (76%) create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1A-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1A-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1BA-machine-to-assembly.yaml rename config/datasource/{smart-factory-parallel/t2-machine-to-assembly.yaml => smart-factory-2P-withWF-withDefects-by-time/t1BW-machine-to-assembly.yaml} (71%) rename config/datasource/{smart-factory-parallel/t1-machine-to-assembly.yaml => smart-factory-2P-withWF-withDefects-by-time/t1W-machine-to-assembly.yaml} (79%) rename config/datasource/{smart-factory-2P-withoutDefects => smart-factory-2P-withWF-withDefects-by-time}/warehouse_stock.yaml (100%) rename config/datasource/{smart-factory-1P-withWF+WithD => smart-factory-2P-withWF-withDefects-by-time}/workforces.yaml (63%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/barA-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/barA.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/barW-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/barW.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/boardA-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/boardA.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/boardW-resource.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/boardW.yaml (100%) create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/e0-order.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/e0a-order.yaml rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withoutDefects}/e1-outgoing-stock.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withoutDefects}/e1a-outgoing-stock.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/e2-sawing-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/e2-sawing-board.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/e2a-sawing-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/e2a-sawing-board.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/e3-drilling-bar.yaml (100%) rename config/datasource/{smart-factory-2P-withWF+withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/e3a-drilling-bar.yaml (100%) rename config/datasource/{smart-factory-parallel => smart-factory-2P-withWF-withoutDefects}/e4-sanding-Bar.yaml (59%) rename config/datasource/{smart-factory-parallel/e3-drilling-board.yaml => smart-factory-2P-withWF-withoutDefects/e4-sanding-Board.yaml} (55%) create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/e4a-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/e4a-sanding-Board.yaml rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withoutDefects}/e5-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withoutDefects}/e5a-assembly.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withoutDefects}/e6-quality-control.yaml (100%) rename config/datasource/{smart-factory-2P-withWFwithoutDefects3 => smart-factory-2P-withWF-withoutDefects}/e6a-quality-control.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withWF-withoutDefects}/e7-shipping.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withWF-withoutDefects}/e7a-shipping.yaml (100%) rename config/datasource/{smart-factory-parallel2 => smart-factory-2P-withWF-withoutDefects}/handover.yaml (55%) rename config/datasource/{smart-factory-parallel/handoverStock.yaml => smart-factory-2P-withWF-withoutDefects/handoverA.yaml} (50%) rename config/datasource/{smart-factory-parallel => smart-factory-2P-withWF-withoutDefects}/handoverBar.yaml (100%) create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBarA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBarR.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBarRA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBoard.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBoardA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBoardR.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBoardRA.yaml rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/order1.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/order2.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/pinA.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/pinW.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/resourceOrder1.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/resourceOrder2.yaml (100%) rename config/datasource/{smart-factory-parallel2 => smart-factory-2P-withWF-withoutDefects}/routing.yaml (53%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/screw1.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/screw2.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/shelf1.yaml (100%) rename config/datasource/{smart-factory-2P-withoutDefects3 => smart-factory-2P-withWF-withoutDefects}/shelf2.yaml (100%) create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/t0A-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/t0BA-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/t0BW-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/t0W-stock-to-machine.yaml rename config/datasource/{smart-factory-parallel2 => smart-factory-2P-withWF-withoutDefects}/t1-stock-to-assembly.yaml (64%) create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/t1A-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/t1A-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/t1BA-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/t1BW-machine-to-assembly.yaml rename config/datasource/{smart-factory-parallel2/t1-machine-to-assembly.yaml => smart-factory-2P-withWF-withoutDefects/t1W-machine-to-assembly.yaml} (76%) rename config/datasource/{smart-factory-2P-withoutDefects2 => smart-factory-2P-withWF-withoutDefects}/warehouse_stock.yaml (100%) create mode 100644 config/datasource/smart-factory-2P-withWF-withoutDefects/workforces.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/barA-resource.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/barA-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/barA-resource.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/barA-resource.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/barA.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/barA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/barA.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/barA.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/barW-resource.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/barW-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/barW-resource.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/barW-resource.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/barW.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/barW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/barW.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/barW.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/boardA-resource.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/boardA-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/boardA-resource.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/boardA-resource.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/boardA.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/boardA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/boardA.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/boardA.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/boardW-resource.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/boardW-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/boardW-resource.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/boardW-resource.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/boardW.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/boardW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/boardW.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/boardW.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e0-order.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e0-order.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e0-order.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e0-order.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e0a-order.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e0a-order.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e0a-order.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e0a-order.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e1-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e1-outgoing-stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e1-outgoing-stock.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e1-outgoing-stock.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e1a-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e1a-outgoing-stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e1a-outgoing-stock.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e1a-outgoing-stock.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e2-sawing-bar.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e2-sawing-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e2-sawing-bar.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e2-sawing-bar.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e2-sawing-board.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e2-sawing-board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e2-sawing-board.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e2-sawing-board.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e2a-sawing-bar.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e2a-sawing-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e2a-sawing-bar.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e2a-sawing-bar.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e2a-sawing-board.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e2a-sawing-board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e2a-sawing-board.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e2a-sawing-board.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e3-drilling-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e3-drilling-bar.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e3-drilling-bar.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e3a-drilling-bar.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e3a-drilling-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e3a-drilling-bar.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e3a-drilling-bar.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e4-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e4-sanding-Bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e4-sanding-Bar.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e4-sanding-Bar.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e4-sanding-Board.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e4-sanding-Board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e4-sanding-Board.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e4-sanding-Board.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e4a-sanding-Bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e4a-sanding-Bar.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e4a-sanding-Bar.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e4a-sanding-Board.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e4a-sanding-Board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e4a-sanding-Board.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e4a-sanding-Board.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e5-assembly.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e5-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e5-assembly.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e5-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e5a-assembly.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e5a-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e5a-assembly.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e5a-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e6-quality-control.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e6-quality-control.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e6-quality-control.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e6-quality-control.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e6a-quality-control.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e6a-quality-control.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e6a-quality-control.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e6a-quality-control.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e7-shipping.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e7-shipping.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e7-shipping.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e7-shipping.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e7a-shipping.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/e7a-shipping.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e7a-shipping.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/e7a-shipping.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handover.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/handover.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/handover.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/handover.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverA.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/handoverA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/handoverA.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/handoverA.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverBar.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/handoverBar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/handoverBar.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/handoverBar.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverBarA.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/handoverBarA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/handoverBarA.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/handoverBarA.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverBarR.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/handoverBarR.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/handoverBarR.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/handoverBarR.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverBarRA.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/handoverBarRA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/handoverBarRA.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/handoverBarRA.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverBoard.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/handoverBoard.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/handoverBoard.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/handoverBoard.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverBoardA.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/handoverBoardA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/handoverBoardA.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/handoverBoardA.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverBoardR.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/handoverBoardR.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/handoverBoardR.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/handoverBoardR.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/handoverBoardRA.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/handoverBoardRA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/handoverBoardRA.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/handoverBoardRA.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/order1.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/order1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/order1.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/order1.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/order2.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/order2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/order2.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/order2.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/pinA.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/pinA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/pinA.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/pinA.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/pinW.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/pinW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/pinW.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/pinW.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/resourceOrder1.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/resourceOrder1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/resourceOrder1.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/resourceOrder1.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/resourceOrder2.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/resourceOrder2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/resourceOrder2.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/resourceOrder2.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/routing.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/routing.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/routing.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/routing.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/screw1.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/screw1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/screw1.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/screw1.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/screw2.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/screw2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/screw2.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/screw2.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/shelf1.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/shelf1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/shelf1.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/shelf1.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/shelf2.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/shelf2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/shelf2.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/shelf2.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t0A-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/t0A-stock-to-machine.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/t0A-stock-to-machine.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/t0A-stock-to-machine.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t0BA-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/t0BA-stock-to-machine.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/t0BA-stock-to-machine.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/t0BA-stock-to-machine.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t0BW-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/t0BW-stock-to-machine.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/t0BW-stock-to-machine.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/t0BW-stock-to-machine.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t0W-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/t0W-stock-to-machine.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/t0W-stock-to-machine.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/t0W-stock-to-machine.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/t1-stock-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/t1-stock-to-assembly.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/t1-stock-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t1A-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/t1A-machine-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/t1A-machine-to-assembly.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/t1A-machine-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t1A-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/t1A-stock-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/t1A-stock-to-assembly.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/t1A-stock-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t1BA-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/t1BA-machine-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/t1BA-machine-to-assembly.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/t1BA-machine-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t1BW-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/t1BW-machine-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/t1BW-machine-to-assembly.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/t1BW-machine-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/t1W-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/t1W-machine-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/t1W-machine-to-assembly.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/t1W-machine-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/warehouse_stock.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/warehouse_stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/warehouse_stock.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/warehouse_stock.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/workforces.yaml b/config/datasource/smart-factory-2P-withTR-withoutDefects/workforces.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/workforces.yaml rename to config/datasource/smart-factory-2P-withTR-withoutDefects/workforces.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/barA-resource.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/barA-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/barA-resource.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/barA-resource.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/barA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/barA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/barA.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/barA.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/barW-resource.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/barW-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/barW-resource.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/barW-resource.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/barW.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/barW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/barW.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/barW.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/boardA-resource.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/boardA-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/boardA-resource.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/boardA-resource.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/boardA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/boardA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/boardA.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/boardA.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/boardW-resource.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/boardW-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/boardW-resource.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/boardW-resource.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/boardW.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/boardW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/boardW.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/boardW.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e0-order.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e0-order.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e0-order.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e0-order.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e0a-order.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e0a-order.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e0a-order.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e0a-order.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e1-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e1-outgoing-stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e1-outgoing-stock.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e1-outgoing-stock.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e1a-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e1a-outgoing-stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e1a-outgoing-stock.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e1a-outgoing-stock.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e2-sawing-bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e2-sawing-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e2-sawing-bar.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e2-sawing-bar.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e2-sawing-board.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e2-sawing-board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e2-sawing-board.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e2-sawing-board.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e2a-sawing-bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e2a-sawing-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e2a-sawing-bar.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e2a-sawing-bar.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e2a-sawing-board.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e2a-sawing-board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e2a-sawing-board.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e2a-sawing-board.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e3-drilling-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e3-drilling-bar.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e3-drilling-bar.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e3a-drilling-bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e3a-drilling-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e3a-drilling-bar.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e3a-drilling-bar.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e4-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e4-sanding-Bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e4-sanding-Bar.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e4-sanding-Bar.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e4-sanding-Board.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e4-sanding-Board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e4-sanding-Board.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e4-sanding-Board.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e4a-sanding-Bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e4a-sanding-Bar.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e4a-sanding-Bar.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e4a-sanding-Board.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e4a-sanding-Board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e4a-sanding-Board.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e4a-sanding-Board.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e5-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e5-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e5-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e5-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e5a-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e5a-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e5a-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e5a-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e6-quality-control.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e6-quality-control.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e6-quality-control.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e6-quality-control.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/e6a-quality-control.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e6a-quality-control.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/e6a-quality-control.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e6a-quality-control.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e7-shipping.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e7-shipping.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e7-shipping.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e7-shipping.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e7a-shipping.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e7a-shipping.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e7a-shipping.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/e7a-shipping.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handover.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handover.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/handover.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handover.yaml diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverA.yaml new file mode 100644 index 0000000..bf0052b --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverA" +spec: + name: "handoverA" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBar.yaml new file mode 100644 index 0000000..9535238 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBar.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBar" +spec: + name: "handoverBar" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBarA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBarA.yaml new file mode 100644 index 0000000..ad647ff --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBarA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarA" +spec: + name: "handoverBarA" + type: "processedResource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBarR.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBarR.yaml new file mode 100644 index 0000000..6841e0a --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBarR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarR" +spec: + name: "handoverBarR" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBarRA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBarRA.yaml new file mode 100644 index 0000000..3c8ab3c --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBarRA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarRA" +spec: + name: "handoverBarRA" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBoard.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBoard.yaml new file mode 100644 index 0000000..1b814fc --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBoard.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoard" +spec: + name: "handoverBoard" + type: "processedResource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBoardA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBoardA.yaml new file mode 100644 index 0000000..37cdba7 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBoardA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardA" +spec: + name: "handoverBoardA" + type: "processedResource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBoardR.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBoardR.yaml new file mode 100644 index 0000000..47c7a44 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBoardR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardR" +spec: + name: "handoverBoardR" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBoardRA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBoardRA.yaml new file mode 100644 index 0000000..9d0a3e0 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/handoverBoardRA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardRA" +spec: + name: "handoverBoardRA" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/order1.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/order1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/order1.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/order1.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/order2.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/order2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/order2.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/order2.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/pinA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/pinA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/pinA.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/pinA.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/pinW.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/pinW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/pinW.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/pinW.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/resourceOrder1.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/resourceOrder1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/resourceOrder1.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/resourceOrder1.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/resourceOrder2.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/resourceOrder2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/resourceOrder2.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/resourceOrder2.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/routing.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/routing.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/routing.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/routing.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/screw1.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/screw1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/screw1.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/screw1.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/screw2.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/screw2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/screw2.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/screw2.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/shelf1.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/shelf1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/shelf1.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/shelf1.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/shelf2.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/shelf2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/shelf2.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/shelf2.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t0A-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t0A-stock-to-machine.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/t0A-stock-to-machine.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t0A-stock-to-machine.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t0BA-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t0BA-stock-to-machine.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/t0BA-stock-to-machine.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t0BA-stock-to-machine.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t0BW-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t0BW-stock-to-machine.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/t0BW-stock-to-machine.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t0BW-stock-to-machine.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t0W-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t0W-stock-to-machine.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/t0W-stock-to-machine.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t0W-stock-to-machine.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t1-stock-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/t1-stock-to-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t1-stock-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1A-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t1A-machine-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/t1A-machine-to-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t1A-machine-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1A-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t1A-stock-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/t1A-stock-to-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t1A-stock-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1BA-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t1BA-machine-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/t1BA-machine-to-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t1BA-machine-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1BW-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t1BW-machine-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/t1BW-machine-to-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t1BW-machine-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/t1W-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t1W-machine-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/t1W-machine-to-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/t1W-machine-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/warehouse_stock.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/warehouse_stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/warehouse_stock.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/warehouse_stock.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withD3/workforces.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/workforces.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withD3/workforces.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-strict-time/workforces.yaml diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/barA-resource.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/barA-resource.yaml new file mode 100644 index 0000000..5f4f56b --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/barA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barAResource" +spec: + name: "barAResource" + type: "aluminum" + size: + length: "5" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/barA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/barA.yaml new file mode 100644 index 0000000..4a85117 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/barA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barA" +spec: + name: "barA" + type: "aluminum" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/barW-resource.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/barW-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/barW-resource.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/barW-resource.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/barW.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/barW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/barW.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/barW.yaml diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/boardA-resource.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/boardA-resource.yaml new file mode 100644 index 0000000..7b9088c --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/boardA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardAResource" +spec: + name: "boardAResource" + type: "aluminum" + size: + length: "" + width: "30" + depth: "30" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/boardA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/boardA.yaml new file mode 100644 index 0000000..3978ca1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/boardA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardA" +spec: + name: "boardA" + type: "aluminum" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects2/boardW-resource.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/boardW-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/boardW-resource.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/boardW-resource.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/boardW.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/boardW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/boardW.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/boardW.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e0-order.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e0-order.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e0-order.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e0-order.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e0a-order.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e0a-order.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e0a-order.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e0a-order.yaml diff --git a/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e1-outgoing-stock.yaml similarity index 60% rename from config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e1-outgoing-stock.yaml index 0d87273..d7d9833 100644 --- a/config/datasource/smart-factory-parallel/e1-outgoing-stock.yaml +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e1-outgoing-stock.yaml @@ -8,9 +8,10 @@ spec: start: "ST" end: "ST" workstation: "ST" - selection: parallel + selection: genericProbability + distribution: [ 0.99, 0.01 ] input: - - object: "resourceOrder" + - object: "resourceOrder1" number: 1 lastState: "" size: @@ -18,27 +19,36 @@ spec: - activity: name: "retrieve resources" output: - - object: "barResource" - number: 4 + - object: "barAResource" + number: 2 change: "" size: length: "4" width: "" depth: "" - - object: "boardResource" + - object: "boardWResource" number: 1 change: "" size: length: "" width: "30" depth: "30" - - object: "screw" + - object: "screw1" number: 13 change: "" size: - - object: "bolt" + - object: "pinW" number: 13 change: "" size: - duration: 13 + duration: 5 + transition: "" + - activity: + name: "Failure: Missing resources" + output: + - object: "" + number: 0 + change: "" + size: + duration: 2 transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e1a-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e1a-outgoing-stock.yaml new file mode 100644 index 0000000..4c2151d --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e1a-outgoing-stock.yaml @@ -0,0 +1,54 @@ +kind: datasource +name: "OutgoingStockA" +spec: + name: "OutgoingStockA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: genericProbability + distribution: [ 0.99, 0.01 ] + input: + - object: "resourceOrder2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barWResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw2" + number: 13 + change: "" + size: + - object: "pinA" + number: 13 + change: "" + size: + duration: 5 + transition: "" + - activity: + name: "Failure: Missing resources" + output: + - object: "" + number: 0 + change: "" + size: + duration: 2 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e2-sawing-bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e2-sawing-bar.yaml new file mode 100644 index 0000000..e9c192c --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e2-sawing-bar.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBarW" +spec: + name: "SawingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "barWResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "barW" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarW" + duration: 4 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barWResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "barW" + number: 3 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + - object: "barW" + number: 1 + change: "broken" + size: + length: "1.25" + width: "" + depth: "" + duration: 4 + transition: "DrillingBarW" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e2-sawing-board.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e2-sawing-board.yaml new file mode 100644 index 0000000..cfc90d6 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e2-sawing-board.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBoardW" +spec: + name: "SawingBoardW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "boardWResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "boardW" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardW" + duration: 9 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "boardW" + number: 4 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + - object: "boardW" + number: 2 + change: "broken" + size: + length: "" + width: "4.32" + depth: "4.24" + duration: 4 + transition: "SandingBoardW" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e2a-sawing-bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e2a-sawing-bar.yaml new file mode 100644 index 0000000..3748a84 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e2a-sawing-bar.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBarA" +spec: + name: "SawingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "barAResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "barA" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarA" + duration: 4 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "barA" + number: 3 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + - object: "barA" + number: 1 + change: "broken" + size: + length: "1.25" + width: "" + depth: "" + duration: 4 + transition: "DrillingBarA" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e2a-sawing-board.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e2a-sawing-board.yaml new file mode 100644 index 0000000..98373c1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e2a-sawing-board.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBoardA" +spec: + name: "SawingBoardA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardRA" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "boardA" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardA" + duration: 9 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardRA" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "boardA" + number: 4 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + - object: "boardA" + number: 2 + change: "broken" + size: + length: "" + width: "4.32" + depth: "4.24" + duration: 4 + transition: "SandingBoardA" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e3-drilling-bar.yaml new file mode 100644 index 0000000..a726fe6 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e3-drilling-bar.yaml @@ -0,0 +1,48 @@ +kind: datasource +name: "DrillingBarW" +spec: + name: "DrillingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.99, 0.01] + input: + - object: "barW" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "barW" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarW" + duration: 3 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barW" + number: 1 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + duration: 20 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e3a-drilling-bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e3a-drilling-bar.yaml new file mode 100644 index 0000000..a4423de --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e3a-drilling-bar.yaml @@ -0,0 +1,48 @@ +kind: datasource +name: "DrillingBarA" +spec: + name: "DrillingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.99, 0.01] + input: + - object: "barA" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "barA" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarA" + duration: 3 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barA" + number: 1 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + duration: 20 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e4-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e4-sanding-Bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e4-sanding-Bar.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e4-sanding-Bar.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e4-sanding-Board.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e4-sanding-Board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e4-sanding-Board.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e4-sanding-Board.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e4a-sanding-Bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e4a-sanding-Bar.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e4a-sanding-Bar.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e4a-sanding-Board.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e4a-sanding-Board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e4a-sanding-Board.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e4a-sanding-Board.yaml diff --git a/config/datasource/smart-factory-parallel2/e5-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e5-assembly.yaml similarity index 62% rename from config/datasource/smart-factory-parallel2/e5-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e5-assembly.yaml index ede735f..252d51e 100644 --- a/config/datasource/smart-factory-parallel2/e5-assembly.yaml +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e5-assembly.yaml @@ -1,7 +1,7 @@ kind: datasource -name: "Assembly" +name: "Assembly1" spec: - name: "Assembly" + name: "Assembly1" group: "factory" type: objectCentric workforce: noWorkforce @@ -9,24 +9,39 @@ spec: end: "A" workstation: "A" selection: genericProbability - distribution: [ 0.8, 0.1, 0.1 ] + distribution: [ 0.94, 0.03, 0.03 ] input: - - object: "bar" + - object: "barA" number: 4 lastState: "sanded" size: length: "2" width: "" depth: "" - - object: "screw" + - object: "boardW" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw1" number: 13 lastState: "" size: - - object: "handover" + - object: "pinW" + number: 13 + lastState: "" + size: + - object: "handoverBoard" number: 1 lastState: "" size: - - object: "handoverStock" + - object: "handoverBarA" + number: 1 + lastState: "" + size: + - object: "handover" number: 1 lastState: "" size: @@ -34,16 +49,16 @@ spec: - activity: name: "Assembling completed" output: - - object: "woodShelf" + - object: "shelf1" number: 1 change: "assembled" size: - duration: 10 - transition: "QualityControl" + duration: 15 + transition: "QualityControl1" - activity: name: "Failure: Overheating" output: - - object: "woodShelf" + - object: "shelf1" number: 1 change: "overheated" size: @@ -52,7 +67,7 @@ spec: - activity: name: "Failure: Item broke" output: - - object: "woodShelf" + - object: "shelf1" number: 1 change: "broke" size: diff --git a/config/datasource/smart-factory-parallel/e5-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e5a-assembly.yaml similarity index 70% rename from config/datasource/smart-factory-parallel/e5-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e5a-assembly.yaml index d190f81..0a361df 100644 --- a/config/datasource/smart-factory-parallel/e5-assembly.yaml +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e5a-assembly.yaml @@ -1,7 +1,7 @@ kind: datasource -name: "Assembly" +name: "Assembly2" spec: - name: "Assembly" + name: "Assembly2" group: "factory" type: objectCentric workforce: noWorkforce @@ -9,39 +9,39 @@ spec: end: "A" workstation: "A" selection: genericProbability - distribution: [ 0.8, 0.1, 0.1 ] + distribution: [ 0.94, 0.03, 0.03 ] input: - - object: "bar" + - object: "barW" number: 4 lastState: "sanded" size: length: "2" width: "" depth: "" - - object: "board" + - object: "boardA" number: 6 lastState: "sanded" size: length: "" width: "5" depth: "5" - - object: "screw" + - object: "screw2" number: 13 lastState: "" size: - - object: "bolt" + - object: "pinA" number: 13 lastState: "" size: - - object: "handover" - number: 2 + - object: "handoverBoardA" + number: 1 lastState: "" size: - object: "handoverBar" number: 1 lastState: "" size: - - object: "handoverStock" + - object: "handoverA" number: 1 lastState: "" size: @@ -49,25 +49,25 @@ spec: - activity: name: "Assembling completed" output: - - object: "woodShelf" + - object: "shelf2" number: 1 change: "assembled" size: - duration: 10 - transition: "QualityControl" + duration: 15 + transition: "QualityControl2" - activity: - name: "Overheating" + name: "Failure: Overheating" output: - - object: "woodShelf" + - object: "shelf2" number: 1 change: "overheated" size: transition: "" duration: 2 - activity: - name: "Item broke" + name: "Failure: Item broke" output: - - object: "woodShelf" + - object: "shelf2" number: 1 change: "broke" size: diff --git a/config/datasource/smart-factory-parallel2/e6-quality-control.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e6-quality-control.yaml similarity index 65% rename from config/datasource/smart-factory-parallel2/e6-quality-control.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e6-quality-control.yaml index b777efb..dd8217e 100644 --- a/config/datasource/smart-factory-parallel2/e6-quality-control.yaml +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e6-quality-control.yaml @@ -1,7 +1,7 @@ kind: datasource -name: "QualityControl" +name: "QualityControl1" spec: - name: "QualityControl" + name: "QualityControl1" group: "factory" type: objectCentric workforce: noWorkforce @@ -9,41 +9,38 @@ spec: end: "A" workstation: "A" selection: genericProbability - distribution: [ 0.3, 0.1, 0.6 ] + distribution: [ 0.8, 0.15, 0.05] input: - - object: "woodShelf" + - object: "shelf1" number: 1 lastState: "assembled" size: eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf1" + number: 1 + change: "proofed" + size: + transition: "Shipping1" + duration: 2 - activity: name: "Item Corrections" output: - - object: "woodShelf" + - object: "shelf1" number: 1 change: "proofed" size: - transition: "Shipping" - duration: 22 + transition: "Shipping1" + duration: 12 - activity: name: "Failure: Quality Insufficient" output: - - object: "woodShelf" + - object: "shelf1" number: 1 change: "damaged" size: transition: "" duration: 2 - - activity: - name: "Quality check passed" - output: - - object: "woodShelf" - number: 1 - change: "proofed" - size: - transition: "Shipping" - duration: - type: uniform - lowerBound: 5 - upperBound: 10 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e6a-quality-control.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e6a-quality-control.yaml new file mode 100644 index 0000000..c838db3 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e6a-quality-control.yaml @@ -0,0 +1,47 @@ +kind: datasource +name: "QualityControl2" +spec: + name: "QualityControl2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.8, 0.15, 0.05] + input: + - object: "shelf2" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 2 + - activity: + name: "Item Corrections" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 12 + - activity: + name: "Failure: Quality Insufficient" + output: + - object: "shelf2" + number: 1 + change: "damaged" + size: + transition: "" + duration: 2 + + diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e7-shipping.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e7-shipping.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e7-shipping.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e7-shipping.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e7a-shipping.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e7a-shipping.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e7a-shipping.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/e7a-shipping.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handover.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handover.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/handover.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handover.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverA.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverA.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverBar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBar.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverBar.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverBarA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarA.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverBarA.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarR.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverBarR.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarR.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverBarR.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarRA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverBarRA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBarRA.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverBarRA.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoard.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverBoard.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoard.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverBoard.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverBoardA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardA.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverBoardA.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardR.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverBoardR.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardR.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverBoardR.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardRA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverBoardRA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/handoverBoardRA.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/handoverBoardRA.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/order1.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/order1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/order1.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/order1.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/order2.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/order2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/order2.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/order2.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/pinA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/pinA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/pinA.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/pinA.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/pinW.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/pinW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/pinW.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/pinW.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/resourceOrder1.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/resourceOrder1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/resourceOrder1.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/resourceOrder1.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/resourceOrder2.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/resourceOrder2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/resourceOrder2.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/resourceOrder2.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/routing.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/routing.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/routing.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/routing.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/screw1.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/screw1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/screw1.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/screw1.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/screw2.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/screw2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/screw2.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/screw2.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/shelf1.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/shelf1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/shelf1.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/shelf1.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/shelf2.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/shelf2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/shelf2.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/shelf2.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t0A-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t0A-stock-to-machine.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/t0A-stock-to-machine.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t0A-stock-to-machine.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t0BA-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t0BA-stock-to-machine.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/t0BA-stock-to-machine.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t0BA-stock-to-machine.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t0BW-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t0BW-stock-to-machine.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/t0BW-stock-to-machine.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t0BW-stock-to-machine.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t0W-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t0W-stock-to-machine.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/t0W-stock-to-machine.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t0W-stock-to-machine.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t1-stock-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/t1-stock-to-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t1-stock-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1A-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t1A-machine-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/t1A-machine-to-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t1A-machine-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1A-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t1A-stock-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/t1A-stock-to-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t1A-stock-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1BA-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t1BA-machine-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/t1BA-machine-to-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t1BA-machine-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1BW-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t1BW-machine-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/t1BW-machine-to-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t1BW-machine-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/t1W-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t1W-machine-to-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/t1W-machine-to-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/t1W-machine-to-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/warehouse_stock.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/warehouse_stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/warehouse_stock.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/warehouse_stock.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/workforces.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/workforces.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/workforces.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-supplier/workforces.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/barA-resource.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/barA-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/barA-resource.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/barA-resource.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/barA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/barA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/barA.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/barA.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/barW-resource.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/barW-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/barW-resource.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/barW-resource.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/barW.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/barW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/barW.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/barW.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/boardA-resource.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/boardA-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/boardA-resource.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/boardA-resource.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/boardA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/boardA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/boardA.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/boardA.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/boardW-resource.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/boardW-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/boardW-resource.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/boardW-resource.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/boardW.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/boardW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/boardW.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/boardW.yaml diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e0-order.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e0-order.yaml new file mode 100644 index 0000000..8a48a17 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order1" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder1" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e0a-order.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e0a-order.yaml new file mode 100644 index 0000000..34285c0 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e0a-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacementA" +spec: + name: "OrderPlacementA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder2" + number: 1 + change: "" + size: + transition: "OutgoingStockA" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e1-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e1-outgoing-stock.yaml new file mode 100644 index 0000000..d7d9833 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e1-outgoing-stock.yaml @@ -0,0 +1,54 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: genericProbability + distribution: [ 0.99, 0.01 ] + input: + - object: "resourceOrder1" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw1" + number: 13 + change: "" + size: + - object: "pinW" + number: 13 + change: "" + size: + duration: 5 + transition: "" + - activity: + name: "Failure: Missing resources" + output: + - object: "" + number: 0 + change: "" + size: + duration: 2 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e1a-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e1a-outgoing-stock.yaml new file mode 100644 index 0000000..4c2151d --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e1a-outgoing-stock.yaml @@ -0,0 +1,54 @@ +kind: datasource +name: "OutgoingStockA" +spec: + name: "OutgoingStockA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: genericProbability + distribution: [ 0.99, 0.01 ] + input: + - object: "resourceOrder2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barWResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "screw2" + number: 13 + change: "" + size: + - object: "pinA" + number: 13 + change: "" + size: + duration: 5 + transition: "" + - activity: + name: "Failure: Missing resources" + output: + - object: "" + number: 0 + change: "" + size: + duration: 2 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e2-sawing-bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e2-sawing-bar.yaml new file mode 100644 index 0000000..e9c192c --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e2-sawing-bar.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBarW" +spec: + name: "SawingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "barWResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "barW" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarW" + duration: 4 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barWResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "barW" + number: 3 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + - object: "barW" + number: 1 + change: "broken" + size: + length: "1.25" + width: "" + depth: "" + duration: 4 + transition: "DrillingBarW" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e2-sawing-board.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e2-sawing-board.yaml new file mode 100644 index 0000000..cfc90d6 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e2-sawing-board.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBoardW" +spec: + name: "SawingBoardW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "boardWResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "boardW" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardW" + duration: 9 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "boardW" + number: 4 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + - object: "boardW" + number: 2 + change: "broken" + size: + length: "" + width: "4.32" + depth: "4.24" + duration: 4 + transition: "SandingBoardW" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e2a-sawing-bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e2a-sawing-bar.yaml new file mode 100644 index 0000000..3748a84 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e2a-sawing-bar.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBarA" +spec: + name: "SawingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "barAResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "barA" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarA" + duration: 4 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "barA" + number: 3 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + - object: "barA" + number: 1 + change: "broken" + size: + length: "1.25" + width: "" + depth: "" + duration: 4 + transition: "DrillingBarA" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e2a-sawing-board.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e2a-sawing-board.yaml new file mode 100644 index 0000000..98373c1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e2a-sawing-board.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBoardA" +spec: + name: "SawingBoardA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardRA" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "boardA" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardA" + duration: 9 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardRA" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "boardA" + number: 4 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + - object: "boardA" + number: 2 + change: "broken" + size: + length: "" + width: "4.32" + depth: "4.24" + duration: 4 + transition: "SandingBoardA" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e3-drilling-bar.yaml new file mode 100644 index 0000000..a726fe6 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e3-drilling-bar.yaml @@ -0,0 +1,48 @@ +kind: datasource +name: "DrillingBarW" +spec: + name: "DrillingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.99, 0.01] + input: + - object: "barW" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "barW" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarW" + duration: 3 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barW" + number: 1 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + duration: 20 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e3a-drilling-bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e3a-drilling-bar.yaml new file mode 100644 index 0000000..a4423de --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e3a-drilling-bar.yaml @@ -0,0 +1,48 @@ +kind: datasource +name: "DrillingBarA" +spec: + name: "DrillingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.99, 0.01] + input: + - object: "barA" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "barA" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarA" + duration: 3 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barA" + number: 1 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + duration: 20 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e4-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e4-sanding-Bar.yaml similarity index 73% rename from config/datasource/smart-factory-1P-withWF+WithD/e4-sanding-Bar.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/e4-sanding-Bar.yaml index c061bd7..5b46039 100644 --- a/config/datasource/smart-factory-1P-withWF+WithD/e4-sanding-Bar.yaml +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e4-sanding-Bar.yaml @@ -1,17 +1,17 @@ kind: datasource -name: "SandingBar" +name: "SandingBarW" spec: - name: "SandingBar" + name: "SandingBarW" group: "factory" type: objectCentric workforce: hasWorkforce - start: "M" - end: "M" - workstation: "M" + start: "W" + end: "W" + workstation: "W" selection: genericProbability distribution: [1.0] input: - - object: "bar" + - object: "barW" number: 1 lastState: "drilled" size: @@ -23,14 +23,14 @@ spec: number: 1 eventData: - activity: - name: "Sanded bar" + name: "Sanded" output: - - object: "bar" + - object: "barW" number: 1 change: "sanded" size: length: "2" width: "" depth: "" - transition: "TransportM1A" + transition: "Assembly2" duration: 2 diff --git a/config/datasource/smart-factory-1P-withWF+WithD/e4-sanding-Board.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e4-sanding-Board.yaml similarity index 73% rename from config/datasource/smart-factory-1P-withWF+WithD/e4-sanding-Board.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/e4-sanding-Board.yaml index 84834d8..e32bb7d 100644 --- a/config/datasource/smart-factory-1P-withWF+WithD/e4-sanding-Board.yaml +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e4-sanding-Board.yaml @@ -1,17 +1,17 @@ kind: datasource -name: "SandingBoard" +name: "SandingBoardW" spec: - name: "SandingBoard" + name: "SandingBoardW" group: "factory" type: objectCentric workforce: hasWorkforce - start: "M" - end: "M" - workstation: "M" + start: "W" + end: "W" + workstation: "W" selection: genericProbability distribution: [1.0] input: - - object: "board" + - object: "boardW" number: 1 lastState: "divided Resource" size: @@ -23,14 +23,14 @@ spec: number: 1 eventData: - activity: - name: "Sanded board" + name: "Sanded" output: - - object: "board" + - object: "boardW" number: 1 change: "sanded" size: length: "" width: "5" depth: "5" - transition: "TransportM1AB" + transition: "Assembly1" duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-1P-withWF+/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e4a-sanding-Bar.yaml similarity index 63% rename from config/datasource/smart-factory-1P-withWF+/e3-drilling-bar.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/e4a-sanding-Bar.yaml index f5598dd..a6d3bee 100644 --- a/config/datasource/smart-factory-1P-withWF+/e3-drilling-bar.yaml +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e4a-sanding-Bar.yaml @@ -1,19 +1,19 @@ kind: datasource -name: "DrillingBar" +name: "SandingBarA" spec: - name: "DrillingBar" + name: "SandingBarA" group: "factory" type: objectCentric workforce: hasWorkforce - start: "M" - end: "M" - workstation: "M" + start: "Al" + end: "Al" + workstation: "Al" selection: genericProbability distribution: [1.0] input: - - object: "bar" + - object: "barA" number: 1 - lastState: "divided Resource" + lastState: "drilled" size: length: "2" width: "" @@ -23,14 +23,14 @@ spec: number: 1 eventData: - activity: - name: "Drilled" + name: "Sanded" output: - - object: "bar" + - object: "barA" number: 1 - change: "drilled" + change: "sanded" size: length: "2" width: "" depth: "" - transition: "SandingBar" - duration: 3 \ No newline at end of file + transition: "Assembly1" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e4a-sanding-Board.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e4a-sanding-Board.yaml new file mode 100644 index 0000000..683a707 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e4a-sanding-Board.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBoardA" +spec: + name: "SandingBoardA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "boardA" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly2" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e5-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e5-assembly.yaml new file mode 100644 index 0000000..252d51e --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e5-assembly.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "Assembly1" +spec: + name: "Assembly1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.94, 0.03, 0.03 ] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardW" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw1" + number: 13 + lastState: "" + size: + - object: "pinW" + number: 13 + lastState: "" + size: + - object: "handoverBoard" + number: 1 + lastState: "" + size: + - object: "handoverBarA" + number: 1 + lastState: "" + size: + - object: "handover" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf1" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl1" + - activity: + name: "Failure: Overheating" + output: + - object: "shelf1" + number: 1 + change: "overheated" + size: + transition: "" + duration: 2 + - activity: + name: "Failure: Item broke" + output: + - object: "shelf1" + number: 1 + change: "broke" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e5a-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e5a-assembly.yaml new file mode 100644 index 0000000..0a361df --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e5a-assembly.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "Assembly2" +spec: + name: "Assembly2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.94, 0.03, 0.03 ] + input: + - object: "barW" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardA" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw2" + number: 13 + lastState: "" + size: + - object: "pinA" + number: 13 + lastState: "" + size: + - object: "handoverBoardA" + number: 1 + lastState: "" + size: + - object: "handoverBar" + number: 1 + lastState: "" + size: + - object: "handoverA" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf2" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl2" + - activity: + name: "Failure: Overheating" + output: + - object: "shelf2" + number: 1 + change: "overheated" + size: + transition: "" + duration: 2 + - activity: + name: "Failure: Item broke" + output: + - object: "shelf2" + number: 1 + change: "broke" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/e6-quality-control.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e6-quality-control.yaml similarity index 56% rename from config/datasource/smart-factory-parallel/e6-quality-control.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/e6-quality-control.yaml index e2f16eb..dd8217e 100644 --- a/config/datasource/smart-factory-parallel/e6-quality-control.yaml +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e6-quality-control.yaml @@ -1,7 +1,7 @@ kind: datasource -name: "QualityControl" +name: "QualityControl1" spec: - name: "QualityControl" + name: "QualityControl1" group: "factory" type: objectCentric workforce: noWorkforce @@ -9,41 +9,38 @@ spec: end: "A" workstation: "A" selection: genericProbability - distribution: [ 0.3, 0.1, 0.6 ] + distribution: [ 0.8, 0.15, 0.05] input: - - object: "woodShelf" + - object: "shelf1" number: 1 lastState: "assembled" size: eventData: - activity: - name: "Item Needs Corrections" + name: "Quality check passed" output: - - object: "woodShelf" + - object: "shelf1" number: 1 change: "proofed" size: - transition: "Shipping" - duration: 22 + transition: "Shipping1" + duration: 2 - activity: - name: "Quality Insufficient" + name: "Item Corrections" output: - - object: "woodShelf" + - object: "shelf1" number: 1 - change: "damaged" + change: "proofed" size: - transition: "" - duration: 2 + transition: "Shipping1" + duration: 12 - activity: - name: "Quality check passed" + name: "Failure: Quality Insufficient" output: - - object: "woodShelf" + - object: "shelf1" number: 1 - change: "proofed" + change: "damaged" size: - transition: "Shipping" - duration: - type: uniform - lowerBound: 5 - upperBound: 10 + transition: "" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e6a-quality-control.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e6a-quality-control.yaml new file mode 100644 index 0000000..c838db3 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e6a-quality-control.yaml @@ -0,0 +1,47 @@ +kind: datasource +name: "QualityControl2" +spec: + name: "QualityControl2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.8, 0.15, 0.05] + input: + - object: "shelf2" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 2 + - activity: + name: "Item Corrections" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 12 + - activity: + name: "Failure: Quality Insufficient" + output: + - object: "shelf2" + number: 1 + change: "damaged" + size: + transition: "" + duration: 2 + + diff --git a/config/datasource/smart-factory-2P-withoutDefects/e7-shipping.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e7-shipping.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e7-shipping.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/e7-shipping.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects/e7a-shipping.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/e7a-shipping.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/e7a-shipping.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/e7a-shipping.yaml diff --git a/config/datasource/smart-factory-parallel/handover.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/handover.yaml similarity index 100% rename from config/datasource/smart-factory-parallel/handover.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/handover.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverA.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverA.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverBar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBar.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverBar.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverBarA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarA.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverBarA.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarR.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverBarR.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarR.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverBarR.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarRA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverBarRA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBarRA.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverBarRA.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoard.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverBoard.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoard.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverBoard.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverBoardA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardA.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverBoardA.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardR.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverBoardR.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardR.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverBoardR.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardRA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverBoardRA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/handoverBoardRA.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/handoverBoardRA.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/order1.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/order1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/order1.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/order1.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/order2.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/order2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/order2.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/order2.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/pinA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/pinA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/pinA.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/pinA.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/pinW.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/pinW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/pinW.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/pinW.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/resourceOrder1.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/resourceOrder1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/resourceOrder1.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/resourceOrder1.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/resourceOrder2.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/resourceOrder2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/resourceOrder2.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/resourceOrder2.yaml diff --git a/config/datasource/smart-factory-parallel/routing.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/routing.yaml similarity index 55% rename from config/datasource/smart-factory-parallel/routing.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/routing.yaml index 1b83480..f7e82a6 100644 --- a/config/datasource/smart-factory-parallel/routing.yaml +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/routing.yaml @@ -4,7 +4,11 @@ spec: routes: - routeForActivity: "retrieve resources" start: "ST" - end: "M" + end: "W" + duration: 3 + - routeForActivity: "retrieve resources" + start: "ST" + end: "Al" duration: 3 - routeForActivity: "Sent to assembly station" start: "ST" @@ -15,14 +19,26 @@ spec: end: "ST" duration: 3 - routeForActivity: "Back to stock" - start: "M" + start: "W" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "W" + end: "A" + duration: 3 + - routeForActivity: "Back to machine" + start: "A" + end: "W" + duration: 3 + - routeForActivity: "Back to stock" + start: "Al" end: "ST" duration: 3 - routeForActivity: "Sent to assembly station" - start: "M" + start: "Al" end: "A" duration: 3 - routeForActivity: "Back to machine" start: "A" - end: "M" + end: "Al" duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/screw1.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/screw1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/screw1.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/screw1.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/screw2.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/screw2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/screw2.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/screw2.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/shelf1.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/shelf1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/shelf1.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/shelf1.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/shelf2.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/shelf2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/shelf2.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/shelf2.yaml diff --git a/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t0A-stock-to-machine.yaml similarity index 70% rename from config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/t0A-stock-to-machine.yaml index 62f51e5..b92d1cc 100644 --- a/config/datasource/smart-factory-parallel/t0-stock-to-machine.yaml +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t0A-stock-to-machine.yaml @@ -1,17 +1,17 @@ kind: datasource -name: "TransportM1Bar" +name: "TransportMA" spec: - name: "TransportM1Bar" + name: "TransportMA" group: "transport" type: objectCentric workforce: hasWorkforce workstation: "R" start: "ST" - end: "M" + end: "Al" selection: genericProbability distribution: [1.0] input: - - object: "barResource" + - object: "barAResource" number: 2 lastState: "" size: @@ -23,18 +23,18 @@ spec: number: 1 eventData: - activity: - name: "transport from stock to M1" + name: "transport: stock -> MA" output: - - object: "barResource" + - object: "barAResource" number: 2 change: "" size: length: "4" width: "" depth: "" - - object: "handoverBar" + - object: "handoverBarRA" number: 1 change: "" size: - transition: "SawingBar" - duration: 10 + transition: "SawingBarA" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t0BA-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t0BA-stock-to-machine.yaml new file mode 100644 index 0000000..ffcf36d --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t0BA-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1BA" +spec: + name: "TransportM1BA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MA" + output: + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardRA" + number: 1 + change: "" + size: + transition: "SawingBoardA" + duration: 1 diff --git a/config/datasource/smart-factory-parallel/t1-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t0BW-stock-to-machine.yaml similarity index 70% rename from config/datasource/smart-factory-parallel/t1-stock-to-machine.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/t0BW-stock-to-machine.yaml index 931f01a..ba6bd7a 100644 --- a/config/datasource/smart-factory-parallel/t1-stock-to-machine.yaml +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t0BW-stock-to-machine.yaml @@ -1,17 +1,17 @@ kind: datasource -name: "TransportM1" +name: "TransportM1B" spec: - name: "TransportM1" + name: "TransportM1B" group: "transport" type: objectCentric workforce: hasWorkforce workstation: "R" start: "ST" - end: "M" + end: "W" selection: genericProbability distribution: [1.0] input: - - object: "boardResource" + - object: "boardWResource" number: 1 lastState: "" size: @@ -23,18 +23,18 @@ spec: number: 1 eventData: - activity: - name: "transport from stock to M1" + name: "transport: stock -> MW" output: - - object: "boardResource" + - object: "boardWResource" number: 1 change: "" size: length: "" width: "30" depth: "30" - - object: "handover" + - object: "handoverBoardR" number: 1 change: "" size: - transition: "SawingBar" - duration: 10 + transition: "SawingBarW" + duration: 1 diff --git a/config/datasource/smart-factory-parallel2/t0-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t0W-stock-to-machine.yaml similarity index 71% rename from config/datasource/smart-factory-parallel2/t0-stock-to-machine.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/t0W-stock-to-machine.yaml index 79b5366..eb86094 100644 --- a/config/datasource/smart-factory-parallel2/t0-stock-to-machine.yaml +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t0W-stock-to-machine.yaml @@ -1,17 +1,17 @@ kind: datasource -name: "TransportM1" +name: "TransportMW" spec: - name: "TransportM1" + name: "TransportMW" group: "transport" type: objectCentric workforce: hasWorkforce workstation: "R" start: "ST" - end: "M" + end: "W" selection: genericProbability distribution: [1.0] input: - - object: "barResource" + - object: "barWResource" number: 2 lastState: "" size: @@ -23,18 +23,18 @@ spec: number: 1 eventData: - activity: - name: "transport from stock to M1" + name: "transport: stock -> MW" output: - - object: "barResource" + - object: "barWResource" number: 2 change: "" size: length: "4" width: "" depth: "" - - object: "handover" + - object: "handoverBarR" number: 1 change: "" size: - transition: "SawingBar" - duration: 10 + transition: "SawingBarW" + duration: 1 diff --git a/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1-stock-to-assembly.yaml similarity index 76% rename from config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1-stock-to-assembly.yaml index 18197d9..5f1efe1 100644 --- a/config/datasource/smart-factory-parallel/t1-stock-to-assembly.yaml +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1-stock-to-assembly.yaml @@ -11,11 +11,11 @@ spec: selection: genericProbability distribution: [1.0] input: - - object: "screw" + - object: "screw1" number: 13 lastState: "" size: - - object: "bolt" + - object: "pinW" number: 13 lastState: "" size: @@ -24,19 +24,19 @@ spec: number: 1 eventData: - activity: - name: "transport from stock to assembly" + name: "transport: stock -> assembly" output: - - object: "screw" + - object: "screw1" number: 13 change: "" size: - - object: "bolt" + - object: "pinW" number: 13 change: "" size: - - object: "handoverStock" + - object: "handover" number: 1 change: "" size: transition: "Assembly" - duration: 10 + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1A-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1A-machine-to-assembly.yaml new file mode 100644 index 0000000..90fc2c1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1A-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMAlA" +spec: + name: "TransportMAlA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "Al" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MA -> assembly" + output: + - object: "barA" + number: 4 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "handoverBarA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1A-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1A-stock-to-assembly.yaml new file mode 100644 index 0000000..f26053f --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1A-stock-to-assembly.yaml @@ -0,0 +1,42 @@ +kind: datasource +name: "TransportSAAl" +spec: + name: "TransportSAAl" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw2" + number: 13 + lastState: "" + size: + - object: "pinA" + number: 13 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> assembly" + output: + - object: "screw2" + number: 13 + change: "" + size: + - object: "pinA" + number: 13 + change: "" + size: + - object: "handoverA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1BA-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1BA-machine-to-assembly.yaml new file mode 100644 index 0000000..06a5b53 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1BA-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMAlAB" +spec: + name: "TransportMAlAB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "Al" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MAl -> assembly" + output: + - object: "boardA" + number: 6 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "handoverBoardA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-parallel/t2-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1BW-machine-to-assembly.yaml similarity index 71% rename from config/datasource/smart-factory-parallel/t2-machine-to-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1BW-machine-to-assembly.yaml index 6557a85..8c4d0e0 100644 --- a/config/datasource/smart-factory-parallel/t2-machine-to-assembly.yaml +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1BW-machine-to-assembly.yaml @@ -1,18 +1,18 @@ kind: datasource -name: "TransportM1A" +name: "TransportMWAB" spec: - name: "TransportM1A" + name: "TransportMWAB" group: "transport" type: objectCentric workforce: hasWorkforce workstation: "R" - start: "M" + start: "W" end: "A" selection: genericProbability distribution: [1.0] input: - - object: "board" - number: 3 + - object: "boardW" + number: 6 lastState: "sanded" size: length: "" @@ -23,18 +23,18 @@ spec: number: 1 eventData: - activity: - name: "transport from M1 to assembly" + name: "transport: MW -> assembly" output: - - object: "board" - number: 3 + - object: "boardW" + number: 6 change: "sanded" size: length: "" width: "5" depth: "5" - - object: "handover" + - object: "handoverBoard" number: 1 change: "" size: transition: "Assembly" - duration: 10 + duration: 1 diff --git a/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1W-machine-to-assembly.yaml similarity index 79% rename from config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1W-machine-to-assembly.yaml index 7f3a7e6..9c67240 100644 --- a/config/datasource/smart-factory-parallel/t1-machine-to-assembly.yaml +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/t1W-machine-to-assembly.yaml @@ -1,17 +1,17 @@ kind: datasource -name: "TransportM1ABar" +name: "TransportMWA" spec: - name: "TransportM1ABar" + name: "TransportMWA" group: "transport" type: objectCentric workforce: hasWorkforce workstation: "R" - start: "M" + start: "W" end: "A" selection: genericProbability distribution: [1.0] input: - - object: "bar" + - object: "barW" number: 4 lastState: "sanded" size: @@ -23,9 +23,9 @@ spec: number: 1 eventData: - activity: - name: "transport from M1 to assembly" + name: "transport: MW -> assembly" output: - - object: "bar" + - object: "barW" number: 4 change: "sanded" size: @@ -37,4 +37,4 @@ spec: change: "" size: transition: "Assembly" - duration: 10 + duration: 1 diff --git a/config/datasource/smart-factory-2P-withoutDefects/warehouse_stock.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/warehouse_stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects/warehouse_stock.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/warehouse_stock.yaml diff --git a/config/datasource/smart-factory-1P-withWF+WithD/workforces.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/workforces.yaml similarity index 63% rename from config/datasource/smart-factory-1P-withWF+WithD/workforces.yaml rename to config/datasource/smart-factory-2P-withWF-withDefects-by-time/workforces.yaml index f333c3d..8bc09fb 100644 --- a/config/datasource/smart-factory-1P-withWF+WithD/workforces.yaml +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-time/workforces.yaml @@ -6,5 +6,8 @@ spec: startLocation: "ST" number: 3 - name: "machineWorker" - startLocation: "M" + startLocation: "W" + number: 2 + - name: "machineWorker" + startLocation: "Al" number: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/barA-resource.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/barA-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/barA-resource.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/barA-resource.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/barA.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/barA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/barA.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/barA.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/barW-resource.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/barW-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/barW-resource.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/barW-resource.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/barW.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/barW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/barW.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/barW.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/boardA-resource.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/boardA-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/boardA-resource.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/boardA-resource.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/boardA.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/boardA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/boardA.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/boardA.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/boardW-resource.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/boardW-resource.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/boardW-resource.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/boardW-resource.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/boardW.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/boardW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/boardW.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/boardW.yaml diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/e0-order.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e0-order.yaml new file mode 100644 index 0000000..8a48a17 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order1" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder1" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/e0a-order.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e0a-order.yaml new file mode 100644 index 0000000..34285c0 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/e0a-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacementA" +spec: + name: "OrderPlacementA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder2" + number: 1 + change: "" + size: + transition: "OutgoingStockA" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e1-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e1-outgoing-stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e1-outgoing-stock.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/e1-outgoing-stock.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e1a-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e1a-outgoing-stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e1a-outgoing-stock.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/e1a-outgoing-stock.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e2-sawing-bar.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e2-sawing-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e2-sawing-bar.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/e2-sawing-bar.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e2-sawing-board.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e2-sawing-board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e2-sawing-board.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/e2-sawing-board.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e2a-sawing-bar.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e2a-sawing-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e2a-sawing-bar.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/e2a-sawing-bar.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e2a-sawing-board.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e2a-sawing-board.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e2a-sawing-board.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/e2a-sawing-board.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e3-drilling-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e3-drilling-bar.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/e3-drilling-bar.yaml diff --git a/config/datasource/smart-factory-2P-withWF+withoutDefects3/e3a-drilling-bar.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e3a-drilling-bar.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWF+withoutDefects3/e3a-drilling-bar.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/e3a-drilling-bar.yaml diff --git a/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e4-sanding-Bar.yaml similarity index 59% rename from config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/e4-sanding-Bar.yaml index c7f4870..5b46039 100644 --- a/config/datasource/smart-factory-parallel/e4-sanding-Bar.yaml +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/e4-sanding-Bar.yaml @@ -1,33 +1,36 @@ kind: datasource -name: "SandingBar" +name: "SandingBarW" spec: - name: "SandingBar" + name: "SandingBarW" group: "factory" type: objectCentric - workforce: noWorkforce - start: "SA" - end: "SA" - workstation: "SA" + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" selection: genericProbability distribution: [1.0] input: - - object: "bar" + - object: "barW" number: 1 lastState: "drilled" size: length: "2" width: "" depth: "" + workforces: + - workforce: "machineWorker" + number: 1 eventData: - activity: - name: "Sanded bar" + name: "Sanded" output: - - object: "bar" + - object: "barW" number: 1 change: "sanded" size: length: "2" width: "" depth: "" - transition: "TransportM1ABar" - duration: 5 + transition: "Assembly2" + duration: 2 diff --git a/config/datasource/smart-factory-parallel/e3-drilling-board.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e4-sanding-Board.yaml similarity index 55% rename from config/datasource/smart-factory-parallel/e3-drilling-board.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/e4-sanding-Board.yaml index 81dbf2f..e32bb7d 100644 --- a/config/datasource/smart-factory-parallel/e3-drilling-board.yaml +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/e4-sanding-Board.yaml @@ -1,33 +1,36 @@ kind: datasource -name: "DrillingBoard" +name: "SandingBoardW" spec: - name: "DrillingBoard" + name: "SandingBoardW" group: "factory" type: objectCentric - workforce: noWorkforce - start: "D" - end: "D" - workstation: "D" + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" selection: genericProbability distribution: [1.0] input: - - object: "board" + - object: "boardW" number: 1 lastState: "divided Resource" size: length: "" width: "5" depth: "5" + workforces: + - workforce: "machineWorker" + number: 1 eventData: - activity: - name: "Drilled" + name: "Sanded" output: - - object: "board" + - object: "boardW" number: 1 - change: "drilled" + change: "sanded" size: length: "" width: "5" depth: "5" - transition: "SandingBoard" - duration: 5 \ No newline at end of file + transition: "Assembly1" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e4a-sanding-Bar.yaml new file mode 100644 index 0000000..a6d3bee --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/e4a-sanding-Bar.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBarA" +spec: + name: "SandingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "barA" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "Assembly1" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/e4a-sanding-Board.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e4a-sanding-Board.yaml new file mode 100644 index 0000000..683a707 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/e4a-sanding-Board.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBoardA" +spec: + name: "SandingBoardA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "boardA" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly2" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e5-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e5-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e5-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/e5-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e5a-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e5a-assembly.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e5a-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/e5a-assembly.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e6-quality-control.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e6-quality-control.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e6-quality-control.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/e6-quality-control.yaml diff --git a/config/datasource/smart-factory-2P-withWFwithoutDefects3/e6a-quality-control.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e6a-quality-control.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withWFwithoutDefects3/e6a-quality-control.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/e6a-quality-control.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e7-shipping.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e7-shipping.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e7-shipping.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/e7-shipping.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects2/e7a-shipping.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/e7a-shipping.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/e7a-shipping.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/e7a-shipping.yaml diff --git a/config/datasource/smart-factory-parallel2/handover.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/handover.yaml similarity index 55% rename from config/datasource/smart-factory-parallel2/handover.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/handover.yaml index 3bd5a18..b018412 100644 --- a/config/datasource/smart-factory-parallel2/handover.yaml +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/handover.yaml @@ -3,9 +3,4 @@ name: "handover" spec: name: "handover" type: "transport" - input: - - object: - number: - lastState: - size: size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/handoverStock.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverA.yaml similarity index 50% rename from config/datasource/smart-factory-parallel/handoverStock.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/handoverA.yaml index e444615..c4b4b17 100644 --- a/config/datasource/smart-factory-parallel/handoverStock.yaml +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverA.yaml @@ -1,6 +1,6 @@ kind: object -name: "handoverStock" +name: "handoverA" spec: - name: "handoverStock" + name: "handoverA" type: "transport" size: \ No newline at end of file diff --git a/config/datasource/smart-factory-parallel/handoverBar.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBar.yaml similarity index 100% rename from config/datasource/smart-factory-parallel/handoverBar.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBar.yaml diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBarA.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBarA.yaml new file mode 100644 index 0000000..3b887b5 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBarA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarA" +spec: + name: "handoverBarA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBarR.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBarR.yaml new file mode 100644 index 0000000..aad56dd --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBarR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarR" +spec: + name: "handoverBarR" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBarRA.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBarRA.yaml new file mode 100644 index 0000000..a651621 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBarRA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarRA" +spec: + name: "handoverBarRA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBoard.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBoard.yaml new file mode 100644 index 0000000..59186c2 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBoard.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoard" +spec: + name: "handoverBoard" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBoardA.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBoardA.yaml new file mode 100644 index 0000000..0a6adfa --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBoardA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardA" +spec: + name: "handoverBoardA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBoardR.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBoardR.yaml new file mode 100644 index 0000000..493563a --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBoardR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardR" +spec: + name: "handoverBoardR" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBoardRA.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBoardRA.yaml new file mode 100644 index 0000000..42e7977 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/handoverBoardRA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardRA" +spec: + name: "handoverBoardRA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/order1.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/order1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/order1.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/order1.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/order2.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/order2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/order2.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/order2.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/pinA.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/pinA.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/pinA.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/pinA.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/pinW.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/pinW.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/pinW.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/pinW.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/resourceOrder1.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/resourceOrder1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/resourceOrder1.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/resourceOrder1.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/resourceOrder2.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/resourceOrder2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/resourceOrder2.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/resourceOrder2.yaml diff --git a/config/datasource/smart-factory-parallel2/routing.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/routing.yaml similarity index 53% rename from config/datasource/smart-factory-parallel2/routing.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/routing.yaml index 1c9507b..f7e82a6 100644 --- a/config/datasource/smart-factory-parallel2/routing.yaml +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/routing.yaml @@ -4,43 +4,41 @@ spec: routes: - routeForActivity: "retrieve resources" start: "ST" - end: "M" - transferObjects: - - name: "barResource" - number: 1 + end: "W" + duration: 3 + - routeForActivity: "retrieve resources" + start: "ST" + end: "Al" duration: 3 - routeForActivity: "Sent to assembly station" start: "ST" end: "A" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Back to stock" start: "A" end: "ST" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Back to stock" - start: "M" + start: "W" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "W" + end: "A" + duration: 3 + - routeForActivity: "Back to machine" + start: "A" + end: "W" + duration: 3 + - routeForActivity: "Back to stock" + start: "Al" end: "ST" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Sent to assembly station" - start: "M" + start: "Al" end: "A" - transferObjects: - - name: "screw" - number: 13 duration: 3 - routeForActivity: "Back to machine" start: "A" - end: "M" - transferObjects: - - name: "screw" - number: 13 + end: "Al" duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withoutDefects3/screw1.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/screw1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/screw1.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/screw1.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/screw2.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/screw2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/screw2.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/screw2.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/shelf1.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/shelf1.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/shelf1.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/shelf1.yaml diff --git a/config/datasource/smart-factory-2P-withoutDefects3/shelf2.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/shelf2.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects3/shelf2.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/shelf2.yaml diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/t0A-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/t0A-stock-to-machine.yaml new file mode 100644 index 0000000..b92d1cc --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/t0A-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMA" +spec: + name: "TransportMA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barAResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MA" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + change: "" + size: + transition: "SawingBarA" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/t0BA-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/t0BA-stock-to-machine.yaml new file mode 100644 index 0000000..ffcf36d --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/t0BA-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1BA" +spec: + name: "TransportM1BA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MA" + output: + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardRA" + number: 1 + change: "" + size: + transition: "SawingBoardA" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/t0BW-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/t0BW-stock-to-machine.yaml new file mode 100644 index 0000000..ba6bd7a --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/t0BW-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1B" +spec: + name: "TransportM1B" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardWResource" + number: 1 + lastState: "" + size: + length: "" + width: "30" + depth: "30" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MW" + output: + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "30" + depth: "30" + - object: "handoverBoardR" + number: 1 + change: "" + size: + transition: "SawingBarW" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/t0W-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/t0W-stock-to-machine.yaml new file mode 100644 index 0000000..eb86094 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/t0W-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMW" +spec: + name: "TransportMW" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barWResource" + number: 2 + lastState: "" + size: + length: "4" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MW" + output: + - object: "barWResource" + number: 2 + change: "" + size: + length: "4" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + change: "" + size: + transition: "SawingBarW" + duration: 1 diff --git a/config/datasource/smart-factory-parallel2/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/t1-stock-to-assembly.yaml similarity index 64% rename from config/datasource/smart-factory-parallel2/t1-stock-to-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/t1-stock-to-assembly.yaml index e12e3d0..5f1efe1 100644 --- a/config/datasource/smart-factory-parallel2/t1-stock-to-assembly.yaml +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/t1-stock-to-assembly.yaml @@ -11,7 +11,11 @@ spec: selection: genericProbability distribution: [1.0] input: - - object: "screw" + - object: "screw1" + number: 13 + lastState: "" + size: + - object: "pinW" number: 13 lastState: "" size: @@ -20,15 +24,19 @@ spec: number: 1 eventData: - activity: - name: "transport from stock to assembly" + name: "transport: stock -> assembly" output: - - object: "screw" + - object: "screw1" + number: 13 + change: "" + size: + - object: "pinW" number: 13 change: "" size: - - object: "handoverStock" + - object: "handover" number: 1 change: "" size: transition: "Assembly" - duration: 10 + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/t1A-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/t1A-machine-to-assembly.yaml new file mode 100644 index 0000000..90fc2c1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/t1A-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMAlA" +spec: + name: "TransportMAlA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "Al" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MA -> assembly" + output: + - object: "barA" + number: 4 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "handoverBarA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/t1A-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/t1A-stock-to-assembly.yaml new file mode 100644 index 0000000..f26053f --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/t1A-stock-to-assembly.yaml @@ -0,0 +1,42 @@ +kind: datasource +name: "TransportSAAl" +spec: + name: "TransportSAAl" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw2" + number: 13 + lastState: "" + size: + - object: "pinA" + number: 13 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> assembly" + output: + - object: "screw2" + number: 13 + change: "" + size: + - object: "pinA" + number: 13 + change: "" + size: + - object: "handoverA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/t1BA-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/t1BA-machine-to-assembly.yaml new file mode 100644 index 0000000..06a5b53 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/t1BA-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMAlAB" +spec: + name: "TransportMAlAB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "Al" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MAl -> assembly" + output: + - object: "boardA" + number: 6 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "handoverBoardA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/t1BW-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/t1BW-machine-to-assembly.yaml new file mode 100644 index 0000000..8c4d0e0 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/t1BW-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMWAB" +spec: + name: "TransportMWAB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "W" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MW -> assembly" + output: + - object: "boardW" + number: 6 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "handoverBoard" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-parallel2/t1-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/t1W-machine-to-assembly.yaml similarity index 76% rename from config/datasource/smart-factory-parallel2/t1-machine-to-assembly.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/t1W-machine-to-assembly.yaml index 907dc58..9c67240 100644 --- a/config/datasource/smart-factory-parallel2/t1-machine-to-assembly.yaml +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/t1W-machine-to-assembly.yaml @@ -1,17 +1,17 @@ kind: datasource -name: "TransportM1A" +name: "TransportMWA" spec: - name: "TransportM1A" + name: "TransportMWA" group: "transport" type: objectCentric workforce: hasWorkforce workstation: "R" - start: "M" + start: "W" end: "A" selection: genericProbability distribution: [1.0] input: - - object: "bar" + - object: "barW" number: 4 lastState: "sanded" size: @@ -23,18 +23,18 @@ spec: number: 1 eventData: - activity: - name: "transport from M1 to assembly" + name: "transport: MW -> assembly" output: - - object: "bar" + - object: "barW" number: 4 change: "sanded" size: length: "2" width: "" depth: "" - - object: "handover" + - object: "handoverBar" number: 1 change: "" size: transition: "Assembly" - duration: 10 + duration: 1 diff --git a/config/datasource/smart-factory-2P-withoutDefects2/warehouse_stock.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/warehouse_stock.yaml similarity index 100% rename from config/datasource/smart-factory-2P-withoutDefects2/warehouse_stock.yaml rename to config/datasource/smart-factory-2P-withWF-withoutDefects/warehouse_stock.yaml diff --git a/config/datasource/smart-factory-2P-withWF-withoutDefects/workforces.yaml b/config/datasource/smart-factory-2P-withWF-withoutDefects/workforces.yaml new file mode 100644 index 0000000..8bc09fb --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withoutDefects/workforces.yaml @@ -0,0 +1,13 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "transportRobot" + startLocation: "ST" + number: 3 + - name: "machineWorker" + startLocation: "W" + number: 2 + - name: "machineWorker" + startLocation: "Al" + number: 2 \ No newline at end of file From 37e70310a6de1f054a4af494f89f7b65b80db2a8 Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 29 Aug 2025 21:18:51 +0200 Subject: [PATCH 120/124] add original designed smart shelf production --- .../barA-resource.yaml | 9 ++ .../smart-factory-original-scenario/barA.yaml | 9 ++ .../barW-resource.yaml | 9 ++ .../smart-factory-original-scenario/barW.yaml | 9 ++ .../boardA-resource.yaml | 9 ++ .../boardA.yaml | 9 ++ .../boardW-resource.yaml | 9 ++ .../boardW.yaml | 9 ++ .../crossA-resource.yaml | 9 ++ .../crossA.yaml | 9 ++ .../crossW-resource.yaml | 9 ++ .../crossW.yaml | 9 ++ .../e-buying resources.yaml | 89 ++++++++++++++ .../e0-order.yaml | 40 +++++++ .../e0a-order.yaml | 40 +++++++ .../e2-sawing-barCross.yaml | 110 ++++++++++++++++++ .../e2-sawing-board.yaml | 75 ++++++++++++ .../e2a-sawing-barCross.yaml | 110 ++++++++++++++++++ .../e2a-sawing-board.yaml | 75 ++++++++++++ .../e3-drilling-bar.yaml | 48 ++++++++ .../e3a-drilling-bar.yaml | 48 ++++++++ .../e3a-drilling-cross.yaml | 48 ++++++++ .../e4-sanding-Bar.yaml | 36 ++++++ .../e4-sanding-Board.yaml | 36 ++++++ .../e4-sanding-Cross.yaml | 36 ++++++ .../e4a-sanding-Bar.yaml | 36 ++++++ .../e4a-sanding-Board.yaml | 36 ++++++ .../e4a-sanding-Cross.yaml | 36 ++++++ .../e5-assembly.yaml | 82 +++++++++++++ .../e5a-assembly.yaml | 82 +++++++++++++ .../e6-quality-control.yaml | 46 ++++++++ .../e6a-quality-control.yaml | 47 ++++++++ .../e7-shipping.yaml | 27 +++++ .../e7a-shipping.yaml | 27 +++++ .../handover.yaml | 6 + .../handoverA.yaml | 6 + .../handoverBar.yaml | 6 + .../handoverBarA.yaml | 6 + .../handoverBarR.yaml | 6 + .../handoverBarRA.yaml | 6 + .../handoverBoard.yaml | 6 + .../handoverBoardA.yaml | 6 + .../handoverBoardR.yaml | 6 + .../handoverBoardRA.yaml | 6 + .../order1.yaml | 6 + .../order2.yaml | 6 + .../orderBuyResource.yaml | 6 + .../smart-factory-original-scenario/pinA.yaml | 6 + .../smart-factory-original-scenario/pinW.yaml | 6 + .../resourceOrder1.yaml | 6 + .../resourceOrder2.yaml | 6 + .../routing.yaml | 96 +++++++++++++++ .../screw1.yaml | 6 + .../screw2.yaml | 6 + .../shelf1.yaml | 6 + .../shelf2.yaml | 6 + .../t0A-stock-to-machine.yaml | 54 +++++++++ .../t0BA-stock-to-machine.yaml | 40 +++++++ .../t0BW-stock-to-machine.yaml | 40 +++++++ .../t0W-stock-to-machine.yaml | 54 +++++++++ .../t1-stock-to-assembly.yaml | 42 +++++++ .../t1A-machine-to-assembly.yaml | 54 +++++++++ .../t1A-stock-to-assembly.yaml | 42 +++++++ .../t1BA-machine-to-assembly.yaml | 40 +++++++ .../t1BW-machine-to-assembly.yaml | 40 +++++++ .../t1W-machine-to-assembly.yaml | 54 +++++++++ .../warehouse_stock.yaml | 66 +++++++++++ .../workforces.yaml | 13 +++ config/sink/ocel.yaml | 6 +- 69 files changed, 2084 insertions(+), 1 deletion(-) create mode 100644 config/datasource/smart-factory-original-scenario/barA-resource.yaml create mode 100644 config/datasource/smart-factory-original-scenario/barA.yaml create mode 100644 config/datasource/smart-factory-original-scenario/barW-resource.yaml create mode 100644 config/datasource/smart-factory-original-scenario/barW.yaml create mode 100644 config/datasource/smart-factory-original-scenario/boardA-resource.yaml create mode 100644 config/datasource/smart-factory-original-scenario/boardA.yaml create mode 100644 config/datasource/smart-factory-original-scenario/boardW-resource.yaml create mode 100644 config/datasource/smart-factory-original-scenario/boardW.yaml create mode 100644 config/datasource/smart-factory-original-scenario/crossA-resource.yaml create mode 100644 config/datasource/smart-factory-original-scenario/crossA.yaml create mode 100644 config/datasource/smart-factory-original-scenario/crossW-resource.yaml create mode 100644 config/datasource/smart-factory-original-scenario/crossW.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e-buying resources.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e0-order.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e0a-order.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e2-sawing-barCross.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e2-sawing-board.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e2a-sawing-barCross.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e2a-sawing-board.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e3a-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e3a-drilling-cross.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e4-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e4-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e4-sanding-Cross.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e4a-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e4a-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e4a-sanding-Cross.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e5-assembly.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e5a-assembly.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e6-quality-control.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e6a-quality-control.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e7-shipping.yaml create mode 100644 config/datasource/smart-factory-original-scenario/e7a-shipping.yaml create mode 100644 config/datasource/smart-factory-original-scenario/handover.yaml create mode 100644 config/datasource/smart-factory-original-scenario/handoverA.yaml create mode 100644 config/datasource/smart-factory-original-scenario/handoverBar.yaml create mode 100644 config/datasource/smart-factory-original-scenario/handoverBarA.yaml create mode 100644 config/datasource/smart-factory-original-scenario/handoverBarR.yaml create mode 100644 config/datasource/smart-factory-original-scenario/handoverBarRA.yaml create mode 100644 config/datasource/smart-factory-original-scenario/handoverBoard.yaml create mode 100644 config/datasource/smart-factory-original-scenario/handoverBoardA.yaml create mode 100644 config/datasource/smart-factory-original-scenario/handoverBoardR.yaml create mode 100644 config/datasource/smart-factory-original-scenario/handoverBoardRA.yaml create mode 100644 config/datasource/smart-factory-original-scenario/order1.yaml create mode 100644 config/datasource/smart-factory-original-scenario/order2.yaml create mode 100644 config/datasource/smart-factory-original-scenario/orderBuyResource.yaml create mode 100644 config/datasource/smart-factory-original-scenario/pinA.yaml create mode 100644 config/datasource/smart-factory-original-scenario/pinW.yaml create mode 100644 config/datasource/smart-factory-original-scenario/resourceOrder1.yaml create mode 100644 config/datasource/smart-factory-original-scenario/resourceOrder2.yaml create mode 100644 config/datasource/smart-factory-original-scenario/routing.yaml create mode 100644 config/datasource/smart-factory-original-scenario/screw1.yaml create mode 100644 config/datasource/smart-factory-original-scenario/screw2.yaml create mode 100644 config/datasource/smart-factory-original-scenario/shelf1.yaml create mode 100644 config/datasource/smart-factory-original-scenario/shelf2.yaml create mode 100644 config/datasource/smart-factory-original-scenario/t0A-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-original-scenario/t0BA-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-original-scenario/t0BW-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-original-scenario/t0W-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-original-scenario/t1-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-original-scenario/t1A-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-original-scenario/t1A-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-original-scenario/t1BA-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-original-scenario/t1BW-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-original-scenario/t1W-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-original-scenario/warehouse_stock.yaml create mode 100644 config/datasource/smart-factory-original-scenario/workforces.yaml diff --git a/config/datasource/smart-factory-original-scenario/barA-resource.yaml b/config/datasource/smart-factory-original-scenario/barA-resource.yaml new file mode 100644 index 0000000..fa486d1 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/barA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barAResource" +spec: + name: "barAResource" + type: "resource" + size: + length: "500" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/barA.yaml b/config/datasource/smart-factory-original-scenario/barA.yaml new file mode 100644 index 0000000..59070fc --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/barA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barA" +spec: + name: "barA" + type: "processedResource" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/barW-resource.yaml b/config/datasource/smart-factory-original-scenario/barW-resource.yaml new file mode 100644 index 0000000..2cd791a --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/barW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barWResource" +spec: + name: "barWResource" + type: "resource" + size: + length: "500" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/barW.yaml b/config/datasource/smart-factory-original-scenario/barW.yaml new file mode 100644 index 0000000..5fd5a06 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/barW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barW" +spec: + name: "barW" + type: "processedResource" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/boardA-resource.yaml b/config/datasource/smart-factory-original-scenario/boardA-resource.yaml new file mode 100644 index 0000000..22e1c8f --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/boardA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardAResource" +spec: + name: "boardAResource" + type: "resource" + size: + length: "" + width: "500" + depth: "500" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/boardA.yaml b/config/datasource/smart-factory-original-scenario/boardA.yaml new file mode 100644 index 0000000..8483dd9 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/boardA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardA" +spec: + name: "boardA" + type: "processedResource" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/boardW-resource.yaml b/config/datasource/smart-factory-original-scenario/boardW-resource.yaml new file mode 100644 index 0000000..b7731ea --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/boardW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardWResource" +spec: + name: "boardWResource" + type: "resource" + size: + length: "" + width: "500" + depth: "500" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/boardW.yaml b/config/datasource/smart-factory-original-scenario/boardW.yaml new file mode 100644 index 0000000..7a4be5c --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/boardW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardW" +spec: + name: "boardW" + type: "processedResource" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/crossA-resource.yaml b/config/datasource/smart-factory-original-scenario/crossA-resource.yaml new file mode 100644 index 0000000..dcbce2b --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/crossA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "crossAResource" +spec: + name: "crossAResource" + type: "resource" + size: + length: "500" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/crossA.yaml b/config/datasource/smart-factory-original-scenario/crossA.yaml new file mode 100644 index 0000000..4cec584 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/crossA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "crossA" +spec: + name: "crossA" + type: "resource" + size: + length: "500" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/crossW-resource.yaml b/config/datasource/smart-factory-original-scenario/crossW-resource.yaml new file mode 100644 index 0000000..42b7122 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/crossW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "crossWResource" +spec: + name: "crossWResource" + type: "resource" + size: + length: "500" + width: + depth: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/crossW.yaml b/config/datasource/smart-factory-original-scenario/crossW.yaml new file mode 100644 index 0000000..75be72b --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/crossW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "crossW" +spec: + name: "crossW" + type: "processedResource" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/e-buying resources.yaml b/config/datasource/smart-factory-original-scenario/e-buying resources.yaml new file mode 100644 index 0000000..68c1b45 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e-buying resources.yaml @@ -0,0 +1,89 @@ +kind: datasource +name: "ResourceDelivery" +spec: + name: "ResourceDelivery" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "RD" + end: "RD" + workstation: "RD" + selection: genericProbability + distribution: [1.0] + input: + - object: "order1" + number: 1 + lastState: "" + size: + - object: "orderBuyResource" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "order1" + number: 1 + change: "" + size: + - object: "barAResource" + number: 150 + change: "" + size: + length: "500" + width: "" + depth: "" + - object: "barWResource" + number: 150 + change: "" + size: + length: "500" + width: "" + depth: "" + - object: "boardAResource" + number: 150 + change: "" + size: + length: "" + width: "500" + depth: "500" + - object: "boardWResource" + number: 150 + change: "" + size: + length: "" + width: "500" + depth: "500" + - object: "crossAResource" + number: 150 + change: "" + size: + length: "500" + width: "" + depth: "" + - object: "crossWResource" + number: 150 + change: "" + size: + length: "500" + width: "" + depth: "" + - object: "pinA" + number: 150 + change: "" + size: + - object: "pinW" + number: 150 + change: "" + size: + - object: "screw1" + number: 150 + change: "" + size: + - object: "screw2" + number: 150 + change: "" + size: + transition: "" + duration: 10 diff --git a/config/datasource/smart-factory-original-scenario/e0-order.yaml b/config/datasource/smart-factory-original-scenario/e0-order.yaml new file mode 100644 index 0000000..4242fc2 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e0-order.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [0.7, 0.3] + input: + - object: "order1" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder1" + number: 1 + change: "" + size: + transition: "" + duration: 0 + - activity: + name: "buying resources" + output: + - object: "order1" + number: 1 + change: "" + size: + - object: "orderBuyResource" + number: 1 + change: "" + size: + transition: "ResourceDelivery" + duration: 20 diff --git a/config/datasource/smart-factory-original-scenario/e0a-order.yaml b/config/datasource/smart-factory-original-scenario/e0a-order.yaml new file mode 100644 index 0000000..b6cf030 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e0a-order.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "OrderPlacementA" +spec: + name: "OrderPlacementA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [0.7, 0.3] + input: + - object: "order2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder2" + number: 1 + change: "" + size: + transition: "" + duration: 0 + - activity: + name: "buying resources" + output: + - object: "order1" + number: 1 + change: "" + size: + - object: "orderBuyResource" + number: 1 + change: "" + size: + transition: "ResourceDelivery" + duration: 20 diff --git a/config/datasource/smart-factory-original-scenario/e2-sawing-barCross.yaml b/config/datasource/smart-factory-original-scenario/e2-sawing-barCross.yaml new file mode 100644 index 0000000..1845b4f --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e2-sawing-barCross.yaml @@ -0,0 +1,110 @@ +kind: datasource +name: "SawingBarW" +spec: + name: "SawingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "barWResource" + number: 1 + lastState: "" + size: + length: "200" + width: "" + depth: "" + - object: "crossWResource" + number: 1 + lastState: "" + size: + length: "160" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "barW" + number: 4 + change: "divided Resource" + size: + length: "50" + width: "" + depth: "" + - object: "crossW" + number: 6 + change: "divided Resource" + size: + length: "20" + width: "" + depth: "" + transition: "" + duration: 8 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barWResource" + number: 1 + change: "" + size: + length: "200" + width: "" + depth: "" + - object: "crossWResource" + number: 1 + change: "" + size: + length: "160" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "barW" + number: 3 + change: "divided Resource" + size: + length: "50" + width: "" + depth: "" + - object: "crossW" + number: 4 + change: "divided Resource" + size: + length: "20" + width: "" + depth: "" + - object: "barW" + number: 1 + change: "broken" + size: + length: "41.25" + width: "" + depth: "" + - object: "crossW" + number: 2 + change: "broken" + size: + length: "17.5" + width: "" + depth: "" + duration: 8 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/e2-sawing-board.yaml b/config/datasource/smart-factory-original-scenario/e2-sawing-board.yaml new file mode 100644 index 0000000..501b7c5 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e2-sawing-board.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBoardW" +spec: + name: "SawingBoardW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "boardWResource" + number: 1 + lastState: "" + size: + length: "" + width: "200" + depth: "150" + - object: "handoverBoardR" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "boardW" + number: 5 + change: "divided Resource" + size: + length: "" + width: "40" + depth: "30" + transition: "" + duration: 9 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "200" + depth: "150" + - object: "handoverBoardR" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "boardW" + number: 4 + change: "divided Resource" + size: + length: "" + width: "40" + depth: "30" + - object: "boardW" + number: 1 + change: "broken" + size: + length: "" + width: "35.32" + depth: "25.24" + duration: 4 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/e2a-sawing-barCross.yaml b/config/datasource/smart-factory-original-scenario/e2a-sawing-barCross.yaml new file mode 100644 index 0000000..2053ccc --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e2a-sawing-barCross.yaml @@ -0,0 +1,110 @@ +kind: datasource +name: "SawingBarA" +spec: + name: "SawingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "barAResource" + number: 2 + lastState: "" + size: + length: "360" + width: "" + depth: "" + - object: "crossAResource" + number: 3 + lastState: "" + size: + length: "380" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "barA" + number: 4 + change: "divided Resource" + size: + length: "180" + width: "" + depth: "" + - object: "crossA" + number: 6 + change: "divided Resource" + size: + length: "190" + width: "" + depth: "" + transition: "" + duration: 8 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "360" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + change: "" + size: + - object: "crossAResource" + number: 3 + change: "" + size: + length: "380" + width: "" + depth: "" + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "barA" + number: 3 + change: "divided Resource" + size: + length: "180" + width: "" + depth: "" + - object: "barA" + number: 1 + change: "broken" + size: + length: "179.25" + width: "" + depth: "" + - object: "crossA" + number: 5 + change: "divided Resource" + size: + length: "190" + width: "" + depth: "" + - object: "crossA" + number: 1 + change: "broken" + size: + length: "189.25" + width: "" + depth: "" + duration: 8 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/e2a-sawing-board.yaml b/config/datasource/smart-factory-original-scenario/e2a-sawing-board.yaml new file mode 100644 index 0000000..8f49d4f --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e2a-sawing-board.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBoardA" +spec: + name: "SawingBoardA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "60" + depth: "60" + - object: "handoverBoardRA" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "boardA" + number: 3 + change: "divided Resource" + size: + length: "" + width: "20" + depth: "20" + transition: "" + duration: 9 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "60" + depth: "60" + - object: "handoverBoardRA" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "boardA" + number: 2 + change: "divided Resource" + size: + length: "" + width: "20" + depth: "20" + - object: "boardA" + number: 1 + change: "broken" + size: + length: "" + width: "19.32" + depth: "14.24" + duration: 4 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/e3-drilling-bar.yaml b/config/datasource/smart-factory-original-scenario/e3-drilling-bar.yaml new file mode 100644 index 0000000..3397729 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e3-drilling-bar.yaml @@ -0,0 +1,48 @@ +kind: datasource +name: "DrillingBarW" +spec: + name: "DrillingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.99, 0.01] + input: + - object: "barW" + number: 1 + lastState: "divided Resource" + size: + length: "50" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "barW" + number: 1 + change: "drilled" + size: + length: "50" + width: "" + depth: "" + transition: "" + duration: 3 + - activity: + name: "Failure: Drilling machine broken" + output: + - object: "barW" + number: 1 + change: "divided Resource" + size: + length: "50" + width: "" + depth: "" + duration: 20 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/e3a-drilling-bar.yaml b/config/datasource/smart-factory-original-scenario/e3a-drilling-bar.yaml new file mode 100644 index 0000000..0e109a1 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e3a-drilling-bar.yaml @@ -0,0 +1,48 @@ +kind: datasource +name: "DrillingBarA" +spec: + name: "DrillingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.99, 0.01] + input: + - object: "barA" + number: 1 + lastState: "divided Resource" + size: + length: "180" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "barA" + number: 1 + change: "drilled" + size: + length: "180" + width: "" + depth: "" + transition: "" + duration: 3 + - activity: + name: "Failure: Drilling machine broken" + output: + - object: "barA" + number: 1 + change: "divided Resource" + size: + length: "180" + width: "" + depth: "" + duration: 20 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/e3a-drilling-cross.yaml b/config/datasource/smart-factory-original-scenario/e3a-drilling-cross.yaml new file mode 100644 index 0000000..ed917da --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e3a-drilling-cross.yaml @@ -0,0 +1,48 @@ +kind: datasource +name: "DrillingBarC" +spec: + name: "DrillingBarC" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.99, 0.01] + input: + - object: "crossA" + number: 1 + lastState: "divided Resource" + size: + length: "190" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "crossA" + number: 1 + change: "drilled" + size: + length: "190" + width: "" + depth: "" + transition: "" + duration: 3 + - activity: + name: "Failure: Drilling machine broken" + output: + - object: "crossA" + number: 1 + change: "divided Resource" + size: + length: "190" + width: "" + depth: "" + duration: 20 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/e4-sanding-Bar.yaml b/config/datasource/smart-factory-original-scenario/e4-sanding-Bar.yaml new file mode 100644 index 0000000..8cf5c2c --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e4-sanding-Bar.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBarW" +spec: + name: "SandingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 1 + lastState: "drilled" + size: + length: "50" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "barW" + number: 1 + change: "sanded" + size: + length: "50" + width: "" + depth: "" + transition: "" + duration: 2 diff --git a/config/datasource/smart-factory-original-scenario/e4-sanding-Board.yaml b/config/datasource/smart-factory-original-scenario/e4-sanding-Board.yaml new file mode 100644 index 0000000..8beba5b --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e4-sanding-Board.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBoardW" +spec: + name: "SandingBoardW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "40" + depth: "30" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "boardW" + number: 1 + change: "sanded" + size: + length: "" + width: "40" + depth: "30" + transition: "Assembly1" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/e4-sanding-Cross.yaml b/config/datasource/smart-factory-original-scenario/e4-sanding-Cross.yaml new file mode 100644 index 0000000..aec3593 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e4-sanding-Cross.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingCrossW" +spec: + name: "SandingCrossW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "crossW" + number: 1 + lastState: "divided Resource" + size: + length: "20" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "crossW" + number: 1 + change: "sanded" + size: + length: "20" + width: "" + depth: "" + transition: "" + duration: 2 diff --git a/config/datasource/smart-factory-original-scenario/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-original-scenario/e4a-sanding-Bar.yaml new file mode 100644 index 0000000..1d6d0b3 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e4a-sanding-Bar.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBarA" +spec: + name: "SandingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 1 + lastState: "drilled" + size: + length: "180" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "barA" + number: 1 + change: "sanded" + size: + length: "180" + width: "" + depth: "" + transition: "" + duration: 2 diff --git a/config/datasource/smart-factory-original-scenario/e4a-sanding-Board.yaml b/config/datasource/smart-factory-original-scenario/e4a-sanding-Board.yaml new file mode 100644 index 0000000..fbf22a2 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e4a-sanding-Board.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBoardA" +spec: + name: "SandingBoardA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "20" + depth: "20" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "boardA" + number: 1 + change: "sanded" + size: + length: "" + width: "20" + depth: "20" + transition: "" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/e4a-sanding-Cross.yaml b/config/datasource/smart-factory-original-scenario/e4a-sanding-Cross.yaml new file mode 100644 index 0000000..dfaa658 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e4a-sanding-Cross.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingCrossA" +spec: + name: "SandingCrossA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "crossA" + number: 1 + lastState: "drilled" + size: + length: "190" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "crossA" + number: 1 + change: "sanded" + size: + length: "190" + width: "" + depth: "" + transition: "" + duration: 2 diff --git a/config/datasource/smart-factory-original-scenario/e5-assembly.yaml b/config/datasource/smart-factory-original-scenario/e5-assembly.yaml new file mode 100644 index 0000000..c8c36e2 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e5-assembly.yaml @@ -0,0 +1,82 @@ +kind: datasource +name: "Assembly1" +spec: + name: "Assembly1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.94, 0.03, 0.03 ] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "180" + width: "" + depth: "" + - object: "crossA" + number: 6 + lastState: "sanded" + size: + length: "190" + width: "" + depth: "" + - object: "boardW" + number: 5 + lastState: "sanded" + size: + length: "" + width: "40" + depth: "30" + - object: "screw1" + number: 15 + lastState: "" + size: + - object: "pinW" + number: 20 + lastState: "" + size: + - object: "handoverBoard" + number: 1 + lastState: "" + size: + - object: "handoverBarA" + number: 1 + lastState: "" + size: + - object: "handover" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf1" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl1" + - activity: + name: "Failure: Overheating" + output: + - object: "shelf1" + number: 1 + change: "overheated" + size: + transition: "" + duration: 2 + - activity: + name: "Failure: Item broke" + output: + - object: "shelf1" + number: 1 + change: "broke" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/e5a-assembly.yaml b/config/datasource/smart-factory-original-scenario/e5a-assembly.yaml new file mode 100644 index 0000000..d2f0317 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e5a-assembly.yaml @@ -0,0 +1,82 @@ +kind: datasource +name: "Assembly2" +spec: + name: "Assembly2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.94, 0.03, 0.03 ] + input: + - object: "barW" + number: 4 + lastState: "sanded" + size: + length: "50" + width: "" + depth: "" + - object: "crossW" + number: 4 + lastState: "sanded" + size: + length: "20" + width: "" + depth: "" + - object: "boardA" + number: 3 + lastState: "sanded" + size: + length: "" + width: "20" + depth: "20" + - object: "screw2" + number: 8 + lastState: "" + size: + - object: "pinA" + number: 24 + lastState: "" + size: + - object: "handoverBoardA" + number: 1 + lastState: "" + size: + - object: "handoverBar" + number: 1 + lastState: "" + size: + - object: "handoverA" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf2" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl2" + - activity: + name: "Failure: Overheating" + output: + - object: "shelf2" + number: 1 + change: "overheated" + size: + transition: "" + duration: 2 + - activity: + name: "Failure: Item broke" + output: + - object: "shelf2" + number: 1 + change: "broke" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/e6-quality-control.yaml b/config/datasource/smart-factory-original-scenario/e6-quality-control.yaml new file mode 100644 index 0000000..dd8217e --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e6-quality-control.yaml @@ -0,0 +1,46 @@ +kind: datasource +name: "QualityControl1" +spec: + name: "QualityControl1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.8, 0.15, 0.05] + input: + - object: "shelf1" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf1" + number: 1 + change: "proofed" + size: + transition: "Shipping1" + duration: 2 + - activity: + name: "Item Corrections" + output: + - object: "shelf1" + number: 1 + change: "proofed" + size: + transition: "Shipping1" + duration: 12 + - activity: + name: "Failure: Quality Insufficient" + output: + - object: "shelf1" + number: 1 + change: "damaged" + size: + transition: "" + duration: 2 + diff --git a/config/datasource/smart-factory-original-scenario/e6a-quality-control.yaml b/config/datasource/smart-factory-original-scenario/e6a-quality-control.yaml new file mode 100644 index 0000000..c838db3 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e6a-quality-control.yaml @@ -0,0 +1,47 @@ +kind: datasource +name: "QualityControl2" +spec: + name: "QualityControl2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.8, 0.15, 0.05] + input: + - object: "shelf2" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 2 + - activity: + name: "Item Corrections" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 12 + - activity: + name: "Failure: Quality Insufficient" + output: + - object: "shelf2" + number: 1 + change: "damaged" + size: + transition: "" + duration: 2 + + diff --git a/config/datasource/smart-factory-original-scenario/e7-shipping.yaml b/config/datasource/smart-factory-original-scenario/e7-shipping.yaml new file mode 100644 index 0000000..d3c6dd3 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e7-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping1" +spec: + name: "Shipping1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf1" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf1" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/e7a-shipping.yaml b/config/datasource/smart-factory-original-scenario/e7a-shipping.yaml new file mode 100644 index 0000000..94c8670 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/e7a-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping2" +spec: + name: "Shipping2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf2" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/handover.yaml b/config/datasource/smart-factory-original-scenario/handover.yaml new file mode 100644 index 0000000..b018412 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/handover.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handover" +spec: + name: "handover" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/handoverA.yaml b/config/datasource/smart-factory-original-scenario/handoverA.yaml new file mode 100644 index 0000000..c4b4b17 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/handoverA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverA" +spec: + name: "handoverA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/handoverBar.yaml b/config/datasource/smart-factory-original-scenario/handoverBar.yaml new file mode 100644 index 0000000..d9add8d --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/handoverBar.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBar" +spec: + name: "handoverBar" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/handoverBarA.yaml b/config/datasource/smart-factory-original-scenario/handoverBarA.yaml new file mode 100644 index 0000000..3b887b5 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/handoverBarA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarA" +spec: + name: "handoverBarA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/handoverBarR.yaml b/config/datasource/smart-factory-original-scenario/handoverBarR.yaml new file mode 100644 index 0000000..aad56dd --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/handoverBarR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarR" +spec: + name: "handoverBarR" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/handoverBarRA.yaml b/config/datasource/smart-factory-original-scenario/handoverBarRA.yaml new file mode 100644 index 0000000..a651621 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/handoverBarRA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarRA" +spec: + name: "handoverBarRA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/handoverBoard.yaml b/config/datasource/smart-factory-original-scenario/handoverBoard.yaml new file mode 100644 index 0000000..59186c2 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/handoverBoard.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoard" +spec: + name: "handoverBoard" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/handoverBoardA.yaml b/config/datasource/smart-factory-original-scenario/handoverBoardA.yaml new file mode 100644 index 0000000..0a6adfa --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/handoverBoardA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardA" +spec: + name: "handoverBoardA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/handoverBoardR.yaml b/config/datasource/smart-factory-original-scenario/handoverBoardR.yaml new file mode 100644 index 0000000..493563a --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/handoverBoardR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardR" +spec: + name: "handoverBoardR" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/handoverBoardRA.yaml b/config/datasource/smart-factory-original-scenario/handoverBoardRA.yaml new file mode 100644 index 0000000..42e7977 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/handoverBoardRA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardRA" +spec: + name: "handoverBoardRA" + type: "transport" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/order1.yaml b/config/datasource/smart-factory-original-scenario/order1.yaml new file mode 100644 index 0000000..bcaf45f --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/order1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order1" +spec: + name: "order1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/order2.yaml b/config/datasource/smart-factory-original-scenario/order2.yaml new file mode 100644 index 0000000..dbc0dcf --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/order2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order2" +spec: + name: "order2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/orderBuyResource.yaml b/config/datasource/smart-factory-original-scenario/orderBuyResource.yaml new file mode 100644 index 0000000..6d10ccb --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/orderBuyResource.yaml @@ -0,0 +1,6 @@ +kind: object +name: "orderBuyResource" +spec: + name: "orderBuyResource" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/pinA.yaml b/config/datasource/smart-factory-original-scenario/pinA.yaml new file mode 100644 index 0000000..3ff2a03 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/pinA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinA" +spec: + name: "pinA" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/pinW.yaml b/config/datasource/smart-factory-original-scenario/pinW.yaml new file mode 100644 index 0000000..96ec4f7 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/pinW.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinW" +spec: + name: "pinW" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/resourceOrder1.yaml b/config/datasource/smart-factory-original-scenario/resourceOrder1.yaml new file mode 100644 index 0000000..be67937 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/resourceOrder1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder1" +spec: + name: "resourceOrder1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/resourceOrder2.yaml b/config/datasource/smart-factory-original-scenario/resourceOrder2.yaml new file mode 100644 index 0000000..7fcf9c4 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/resourceOrder2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder2" +spec: + name: "resourceOrder2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/routing.yaml b/config/datasource/smart-factory-original-scenario/routing.yaml new file mode 100644 index 0000000..e0d2c31 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/routing.yaml @@ -0,0 +1,96 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "Warehouse AL to wood" + start: "STA" + end: "W" + duration: 10 + - routeForActivity: "Warehouse Wood to wood" + start: "STW" + end: "W" + duration: 1 + - routeForActivity: "Warehouse Small to wood" + start: "STS" + end: "W" + duration: 2 + - routeForActivity: "retrieve resources" + start: "STA" + end: "Al" + duration: 1 + - routeForActivity: "retrieve resources" + start: "STW" + end: "Al" + duration: 10 + - routeForActivity: "retrieve resources" + start: "STS" + end: "Al" + duration: 2 + - routeForActivity: "Sent to assembly station" + start: "STA" + end: "A" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "STW" + end: "A" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "STS" + end: "A" + duration: 2 + - routeForActivity: "Back to stock" + start: "A" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "STA" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "STW" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "STS" + duration: 2 + - routeForActivity: "Back to stock" + start: "W" + end: "STW" + duration: 1 + - routeForActivity: "Back to stock" + start: "W" + end: "STA" + duration: 10 + - routeForActivity: "Back to stock" + start: "W" + end: "STS" + duration: 2 + - routeForActivity: "Back to stock" + start: "Al" + end: "STW" + duration: 10 + - routeForActivity: "Back to stock" + start: "Al" + end: "STA" + duration: 1 + - routeForActivity: "Back to stock" + start: "Al" + end: "STS" + duration: 2 + - routeForActivity: "Sent to assembly station" + start: "W" + end: "A" + duration: 1 + - routeForActivity: "Back to machine" + start: "A" + end: "W" + duration: 1 + - routeForActivity: "Sent to assembly station" + start: "Al" + end: "A" + duration: 1 + - routeForActivity: "Back to machine" + start: "A" + end: "Al" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario/screw1.yaml b/config/datasource/smart-factory-original-scenario/screw1.yaml new file mode 100644 index 0000000..45e5f8b --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/screw1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw1" +spec: + name: "screw1" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/screw2.yaml b/config/datasource/smart-factory-original-scenario/screw2.yaml new file mode 100644 index 0000000..6d6076e --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/screw2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw2" +spec: + name: "screw2" + type: "resource" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/shelf1.yaml b/config/datasource/smart-factory-original-scenario/shelf1.yaml new file mode 100644 index 0000000..ea1a1d8 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/shelf1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf1" +spec: + name: "shelf1" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/shelf2.yaml b/config/datasource/smart-factory-original-scenario/shelf2.yaml new file mode 100644 index 0000000..7115caa --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/shelf2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf2" +spec: + name: "shelf2" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/t0A-stock-to-machine.yaml b/config/datasource/smart-factory-original-scenario/t0A-stock-to-machine.yaml new file mode 100644 index 0000000..96ecd74 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/t0A-stock-to-machine.yaml @@ -0,0 +1,54 @@ +kind: datasource +name: "TransportMA" +spec: + name: "TransportMA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R1" + start: "STA" + end: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barAResource" + number: 2 + lastState: "" + size: + length: "360" + width: "" + depth: "" + - object: "crossAResource" + number: 3 + lastState: "" + size: + length: "380" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MA" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "360" + width: "" + depth: "" + - object: "crossAResource" + number: 3 + change: "" + size: + length: "380" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + change: "" + size: + transition: "SawingBarA" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario/t0BA-stock-to-machine.yaml b/config/datasource/smart-factory-original-scenario/t0BA-stock-to-machine.yaml new file mode 100644 index 0000000..880c05d --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/t0BA-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1BA" +spec: + name: "TransportM1BA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R2" + start: "STA" + end: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "60" + depth: "60" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MA" + output: + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "60" + depth: "60" + - object: "handoverBoardRA" + number: 1 + change: "" + size: + transition: "SawingBoardA" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario/t0BW-stock-to-machine.yaml b/config/datasource/smart-factory-original-scenario/t0BW-stock-to-machine.yaml new file mode 100644 index 0000000..3e114ef --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/t0BW-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1B" +spec: + name: "TransportM1B" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R3" + start: "STW" + end: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardWResource" + number: 1 + lastState: "" + size: + length: "" + width: "200" + depth: "150" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MW" + output: + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "200" + depth: "150" + - object: "handoverBoardR" + number: 1 + change: "" + size: + transition: "SawingBarW" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario/t0W-stock-to-machine.yaml b/config/datasource/smart-factory-original-scenario/t0W-stock-to-machine.yaml new file mode 100644 index 0000000..acdefe3 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/t0W-stock-to-machine.yaml @@ -0,0 +1,54 @@ +kind: datasource +name: "TransportMW" +spec: + name: "TransportMW" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R4" + start: "STW" + end: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barWResource" + number: 1 + lastState: "" + size: + length: "200" + width: "" + depth: "" + - object: "crossWResource" + number: 1 + lastState: "" + size: + length: "160" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MW" + output: + - object: "barWResource" + number: 1 + change: "" + size: + length: "200" + width: "" + depth: "" + - object: "crossWResource" + number: 1 + change: "" + size: + length: "160" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + change: "" + size: + transition: "SawingBarW" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-original-scenario/t1-stock-to-assembly.yaml new file mode 100644 index 0000000..e9481fa --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/t1-stock-to-assembly.yaml @@ -0,0 +1,42 @@ +kind: datasource +name: "TransportSA" +spec: + name: "TransportSA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R5" + start: "STS" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw1" + number: 15 + lastState: "" + size: + - object: "pinW" + number: 20 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> assembly" + output: + - object: "screw1" + number: 15 + change: "" + size: + - object: "pinW" + number: 20 + change: "" + size: + - object: "handover" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 2 diff --git a/config/datasource/smart-factory-original-scenario/t1A-machine-to-assembly.yaml b/config/datasource/smart-factory-original-scenario/t1A-machine-to-assembly.yaml new file mode 100644 index 0000000..e8afa44 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/t1A-machine-to-assembly.yaml @@ -0,0 +1,54 @@ +kind: datasource +name: "TransportMAlA" +spec: + name: "TransportMAlA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R6" + start: "Al" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "180" + width: "" + depth: "" + - object: "crossA" + number: 6 + lastState: "sanded" + size: + length: "190" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MA -> assembly" + output: + - object: "barA" + number: 4 + change: "sanded" + size: + length: "180" + width: "" + depth: "" + - object: "crossA" + number: 6 + change: "sanded" + size: + length: "190" + width: "" + depth: "" + - object: "handoverBarA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario/t1A-stock-to-assembly.yaml b/config/datasource/smart-factory-original-scenario/t1A-stock-to-assembly.yaml new file mode 100644 index 0000000..dcfa6b7 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/t1A-stock-to-assembly.yaml @@ -0,0 +1,42 @@ +kind: datasource +name: "TransportSAAl" +spec: + name: "TransportSAAl" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R7" + start: "ST" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw2" + number: 8 + lastState: "" + size: + - object: "pinA" + number: 24 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> assembly" + output: + - object: "screw2" + number: 8 + change: "" + size: + - object: "pinA" + number: 24 + change: "" + size: + - object: "handoverA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 2 diff --git a/config/datasource/smart-factory-original-scenario/t1BA-machine-to-assembly.yaml b/config/datasource/smart-factory-original-scenario/t1BA-machine-to-assembly.yaml new file mode 100644 index 0000000..c201519 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/t1BA-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMAlAB" +spec: + name: "TransportMAlAB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R8" + start: "Al" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 3 + lastState: "sanded" + size: + length: "" + width: "20" + depth: "20" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MAl -> assembly" + output: + - object: "boardA" + number: 3 + change: "sanded" + size: + length: "" + width: "20" + depth: "20" + - object: "handoverBoardA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario/t1BW-machine-to-assembly.yaml b/config/datasource/smart-factory-original-scenario/t1BW-machine-to-assembly.yaml new file mode 100644 index 0000000..94b9366 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/t1BW-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMWAB" +spec: + name: "TransportMWAB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R9" + start: "W" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 5 + lastState: "sanded" + size: + length: "" + width: "40" + depth: "30" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MW -> assembly" + output: + - object: "boardW" + number: 5 + change: "sanded" + size: + length: "" + width: "40" + depth: "30" + - object: "handoverBoard" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario/t1W-machine-to-assembly.yaml b/config/datasource/smart-factory-original-scenario/t1W-machine-to-assembly.yaml new file mode 100644 index 0000000..480386a --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/t1W-machine-to-assembly.yaml @@ -0,0 +1,54 @@ +kind: datasource +name: "TransportMWA" +spec: + name: "TransportMWA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R10" + start: "W" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 4 + lastState: "sanded" + size: + length: "50" + width: "" + depth: "" + - object: "crossW" + number: 4 + lastState: "sanded" + size: + length: "20" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MW -> assembly" + output: + - object: "barW" + number: 4 + change: "sanded" + size: + length: "50" + width: "" + depth: "" + - object: "crossW" + number: 4 + change: "sanded" + size: + length: "20" + width: "" + depth: "" + - object: "handoverBar" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario/warehouse_stock.yaml b/config/datasource/smart-factory-original-scenario/warehouse_stock.yaml new file mode 100644 index 0000000..cff84fa --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/warehouse_stock.yaml @@ -0,0 +1,66 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order2" + number: 1000 + lastState: + size: + - object: "barAResource" + number: 150 + lastState: "" + size: + length: "500" + width: "" + depth: "" + - object: "barWResource" + number: 150 + lastState: "" + size: + length: "500" + width: "" + depth: "" + - object: "boardAResource" + number: 150 + lastState: "" + size: + length: "" + width: "500" + depth: "500" + - object: "boardWResource" + number: 150 + lastState: "" + size: + length: "" + width: "500" + depth: "500" + - object: "crossAResource" + number: 150 + lastState: "" + size: + length: "500" + width: "" + depth: "" + - object: "crossWResource" + number: 150 + lastState: "" + size: + length: "500" + width: "" + depth: "" + - object: "pinA" + number: 150 + lastState: "" + size: + - object: "pinW" + number: 150 + lastState: "" + size: + - object: "screw1" + number: 150 + lastState: "" + size: + - object: "screw2" + number: 150 + lastState: "" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario/workforces.yaml b/config/datasource/smart-factory-original-scenario/workforces.yaml new file mode 100644 index 0000000..0397857 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario/workforces.yaml @@ -0,0 +1,13 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "transportRobot" + startLocation: "A" + number: 8 + - name: "machineWorker" + startLocation: "W" + number: 8 + - name: "machineWorker" + startLocation: "Al" + number: 8 \ No newline at end of file diff --git a/config/sink/ocel.yaml b/config/sink/ocel.yaml index 45911c7..00599f5 100644 --- a/config/sink/ocel.yaml +++ b/config/sink/ocel.yaml @@ -22,6 +22,9 @@ spec: - "DrillingBar" - "DrillingBarW" - "DrillingBarA" + - "DrillingBarC" + - "SandingCrossA" + - "SandingCrossW" - "SandingBar" - "SandingBarA" - "SandingBarW" @@ -63,4 +66,5 @@ spec: - "TransportMAlAB" - "TransportMWAB" - "TransportMWA" - - "TransportM1BA" \ No newline at end of file + - "TransportM1BA" + - "ResourceDelivery" \ No newline at end of file From 79b9cf1da22ccfbfbe9d6857cfce3af083652bcc Mon Sep 17 00:00:00 2001 From: ulpi Date: Fri, 29 Aug 2025 21:19:33 +0200 Subject: [PATCH 121/124] fix problem with logging --- .../simulation/simulator_objects/object_storage.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/distributed_event_factory/simulation/simulator_objects/object_storage.py b/distributed_event_factory/simulation/simulator_objects/object_storage.py index 58e29b8..5e64e60 100644 --- a/distributed_event_factory/simulation/simulator_objects/object_storage.py +++ b/distributed_event_factory/simulation/simulator_objects/object_storage.py @@ -226,7 +226,8 @@ def manage_input_and_output_of_steps(self, input_objects: List[InputObjectProvid outgoing_objects.append(obj) else: return ValueError("Object not found") - outgoing_objects.extend(self.add_output_changed_objects_to_store(ingoing_objects.copy(), object_templates, output_objects, + ingoing_objects_copy = ingoing_objects[:] + outgoing_objects.extend(self.add_output_changed_objects_to_store(ingoing_objects_copy, object_templates, output_objects, timestamp)) return ingoing_objects, outgoing_objects @@ -239,7 +240,11 @@ def add_output_changed_objects_to_store(self, objects, object_templates, output_ if output_object.change: obj.add_change(ObjectData(timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), object_state=output_object.change, - object_id=obj.object_id)) + object_id=obj.object_id)) + if output_object.size: + obj.size.length = output_object.size.length + obj.size.width = output_object.size.width + obj.size.depth = output_object.size.depth self.add_object(obj) outgoing_objects.append(obj) objects.remove(obj) @@ -250,6 +255,11 @@ def add_output_changed_objects_to_store(self, objects, object_templates, output_ obj.add_change(ObjectData(timestamp=timestamp.strftime("%Y-%m-%d %H:%M:%S"), object_state=output_object.change, object_id=obj.object_id)) + + if output_object.size: + obj.size.length = output_object.size.length + obj.size.width = output_object.size.width + obj.size.depth = output_object.size.depth self.add_object(obj) outgoing_objects.append(obj) return outgoing_objects From 352447cdb04c6c57f35c4ba832072ee2a9cb5814 Mon Sep 17 00:00:00 2001 From: ulpi Date: Sat, 30 Aug 2025 12:50:17 +0200 Subject: [PATCH 122/124] durationTests --- .../durationTestObject12/diamond.yaml | 6 +++ .../durationTestObject12/e0-order.yaml | 35 ++++++++++++ .../e1-outgoing-stock.yaml | 54 +++++++++++++++++++ .../durationTestObject12/e2-forging.yaml | 51 ++++++++++++++++++ .../durationTestObject12/order2.yaml | 6 +++ .../durationTestObject12/resourceOrder2.yaml | 6 +++ .../datasource/durationTestObject12/ring.yaml | 6 +++ .../durationTestObject12/routing.yaml | 28 ++++++++++ .../durationTestObject12/rubin.yaml | 6 +++ .../durationTestObject12/silver.yaml | 6 +++ .../durationTestObject12/smaragd.yaml | 6 +++ .../durationTestObject12/stone.yaml | 6 +++ .../durationTestObject12/warehouse_stock.yaml | 12 +++++ .../durationTestObject12/whitegold.yaml | 6 +++ .../e1-outgoing-stock.yaml | 26 +++++++++ .../durationTestObject3/e2-forging.yaml | 27 ++++++++++ .../datasource/durationTestObject3/gold.yaml | 6 +++ .../datasource/durationTestObject3/order.yaml | 6 +++ .../durationTestObject3/resourceOrder.yaml | 6 +++ .../durationTestObject3/routing.yaml | 28 ++++++++++ .../durationTestObject3/workforces.yaml | 7 +++ .../durationTestObject6/e0-order.yaml | 31 +++++++++++ .../e1-outgoing-stock.yaml | 30 +++++++++++ .../durationTestObject6/e2-forging.yaml | 31 +++++++++++ .../datasource/durationTestObject6/gold.yaml | 6 +++ .../datasource/durationTestObject6/order.yaml | 6 +++ .../durationTestObject6/order2.yaml | 6 +++ .../durationTestObject6/resourceOrder.yaml | 6 +++ .../datasource/durationTestObject6/ring.yaml | 6 +++ .../durationTestObject6/routing.yaml | 28 ++++++++++ .../durationTestObject6/warehouse_stock.yaml | 12 +++++ .../durationTestObject6/whitegold.yaml | 6 +++ .../durationTestObject6/workforces.yaml | 7 +++ .../goldsmiths-with-1WF/e0-order.yaml | 27 ++++++++++ .../e1-outgoing-stock.yaml | 0 .../e2-forging.yaml | 0 .../e3-shipping.yaml | 0 .../datasource/goldsmiths-with-1WF/gold.yaml | 6 +++ .../datasource/goldsmiths-with-1WF/order.yaml | 6 +++ .../goldsmiths-with-1WF/resourceOrder.yaml | 6 +++ .../goldsmiths-with-1WF/routing.yaml | 28 ++++++++++ .../goldsmiths-with-1WF/warehouse_stock.yaml | 8 +++ .../goldsmiths-with-1WF/workforces.yaml | 7 +++ .../goldsmiths-with-2WF/e0-order.yaml | 27 ++++++++++ .../e1-outgoing-stock.yaml | 29 ++++++++++ .../goldsmiths-with-2WF/e2-forging.yaml | 30 +++++++++++ .../goldsmiths-with-2WF/e3-shipping.yaml | 39 ++++++++++++++ .../datasource/goldsmiths-with-2WF/gold.yaml | 6 +++ .../datasource/goldsmiths-with-2WF/order.yaml | 6 +++ .../goldsmiths-with-2WF/resourceOrder.yaml | 6 +++ .../goldsmiths-with-2WF/routing.yaml | 28 ++++++++++ .../goldsmiths-with-2WF/warehouse_stock.yaml | 8 +++ .../goldsmiths-with-2WF/workforces.yaml | 7 +++ .../goldsmiths-with-6WF/e0-order.yaml | 27 ++++++++++ .../e1-outgoing-stock.yaml | 29 ++++++++++ .../goldsmiths-with-6WF/e2-forging.yaml | 30 +++++++++++ .../goldsmiths-with-6WF/e3-shipping.yaml | 39 ++++++++++++++ .../datasource/goldsmiths-with-6WF/gold.yaml | 6 +++ .../datasource/goldsmiths-with-6WF/order.yaml | 6 +++ .../goldsmiths-with-6WF/resourceOrder.yaml | 6 +++ .../goldsmiths-with-6WF/routing.yaml | 28 ++++++++++ .../goldsmiths-with-6WF/warehouse_stock.yaml | 8 +++ .../goldsmiths-with-6WF/workforces.yaml | 7 +++ 63 files changed, 975 insertions(+) create mode 100644 config/datasource/durationTestObject12/diamond.yaml create mode 100644 config/datasource/durationTestObject12/e0-order.yaml create mode 100644 config/datasource/durationTestObject12/e1-outgoing-stock.yaml create mode 100644 config/datasource/durationTestObject12/e2-forging.yaml create mode 100644 config/datasource/durationTestObject12/order2.yaml create mode 100644 config/datasource/durationTestObject12/resourceOrder2.yaml create mode 100644 config/datasource/durationTestObject12/ring.yaml create mode 100644 config/datasource/durationTestObject12/routing.yaml create mode 100644 config/datasource/durationTestObject12/rubin.yaml create mode 100644 config/datasource/durationTestObject12/silver.yaml create mode 100644 config/datasource/durationTestObject12/smaragd.yaml create mode 100644 config/datasource/durationTestObject12/stone.yaml create mode 100644 config/datasource/durationTestObject12/warehouse_stock.yaml create mode 100644 config/datasource/durationTestObject12/whitegold.yaml create mode 100644 config/datasource/durationTestObject3/e1-outgoing-stock.yaml create mode 100644 config/datasource/durationTestObject3/e2-forging.yaml create mode 100644 config/datasource/durationTestObject3/gold.yaml create mode 100644 config/datasource/durationTestObject3/order.yaml create mode 100644 config/datasource/durationTestObject3/resourceOrder.yaml create mode 100644 config/datasource/durationTestObject3/routing.yaml create mode 100644 config/datasource/durationTestObject3/workforces.yaml create mode 100644 config/datasource/durationTestObject6/e0-order.yaml create mode 100644 config/datasource/durationTestObject6/e1-outgoing-stock.yaml create mode 100644 config/datasource/durationTestObject6/e2-forging.yaml create mode 100644 config/datasource/durationTestObject6/gold.yaml create mode 100644 config/datasource/durationTestObject6/order.yaml create mode 100644 config/datasource/durationTestObject6/order2.yaml create mode 100644 config/datasource/durationTestObject6/resourceOrder.yaml create mode 100644 config/datasource/durationTestObject6/ring.yaml create mode 100644 config/datasource/durationTestObject6/routing.yaml create mode 100644 config/datasource/durationTestObject6/warehouse_stock.yaml create mode 100644 config/datasource/durationTestObject6/whitegold.yaml create mode 100644 config/datasource/durationTestObject6/workforces.yaml create mode 100644 config/datasource/goldsmiths-with-1WF/e0-order.yaml rename config/datasource/{goldsmiths-with-WF => goldsmiths-with-1WF}/e1-outgoing-stock.yaml (100%) rename config/datasource/{goldsmiths-with-WF => goldsmiths-with-1WF}/e2-forging.yaml (100%) rename config/datasource/{goldsmiths-with-WF => goldsmiths-with-1WF}/e3-shipping.yaml (100%) create mode 100644 config/datasource/goldsmiths-with-1WF/gold.yaml create mode 100644 config/datasource/goldsmiths-with-1WF/order.yaml create mode 100644 config/datasource/goldsmiths-with-1WF/resourceOrder.yaml create mode 100644 config/datasource/goldsmiths-with-1WF/routing.yaml create mode 100644 config/datasource/goldsmiths-with-1WF/warehouse_stock.yaml create mode 100644 config/datasource/goldsmiths-with-1WF/workforces.yaml create mode 100644 config/datasource/goldsmiths-with-2WF/e0-order.yaml create mode 100644 config/datasource/goldsmiths-with-2WF/e1-outgoing-stock.yaml create mode 100644 config/datasource/goldsmiths-with-2WF/e2-forging.yaml create mode 100644 config/datasource/goldsmiths-with-2WF/e3-shipping.yaml create mode 100644 config/datasource/goldsmiths-with-2WF/gold.yaml create mode 100644 config/datasource/goldsmiths-with-2WF/order.yaml create mode 100644 config/datasource/goldsmiths-with-2WF/resourceOrder.yaml create mode 100644 config/datasource/goldsmiths-with-2WF/routing.yaml create mode 100644 config/datasource/goldsmiths-with-2WF/warehouse_stock.yaml create mode 100644 config/datasource/goldsmiths-with-2WF/workforces.yaml create mode 100644 config/datasource/goldsmiths-with-6WF/e0-order.yaml create mode 100644 config/datasource/goldsmiths-with-6WF/e1-outgoing-stock.yaml create mode 100644 config/datasource/goldsmiths-with-6WF/e2-forging.yaml create mode 100644 config/datasource/goldsmiths-with-6WF/e3-shipping.yaml create mode 100644 config/datasource/goldsmiths-with-6WF/gold.yaml create mode 100644 config/datasource/goldsmiths-with-6WF/order.yaml create mode 100644 config/datasource/goldsmiths-with-6WF/resourceOrder.yaml create mode 100644 config/datasource/goldsmiths-with-6WF/routing.yaml create mode 100644 config/datasource/goldsmiths-with-6WF/warehouse_stock.yaml create mode 100644 config/datasource/goldsmiths-with-6WF/workforces.yaml diff --git a/config/datasource/durationTestObject12/diamond.yaml b/config/datasource/durationTestObject12/diamond.yaml new file mode 100644 index 0000000..e731d5c --- /dev/null +++ b/config/datasource/durationTestObject12/diamond.yaml @@ -0,0 +1,6 @@ +kind: object +name: "diamond" +spec: + name: "diamond" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject12/e0-order.yaml b/config/datasource/durationTestObject12/e0-order.yaml new file mode 100644 index 0000000..d0abdbc --- /dev/null +++ b/config/datasource/durationTestObject12/e0-order.yaml @@ -0,0 +1,35 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + - object: "order2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + - object: "resourceOrder2" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestObject12/e1-outgoing-stock.yaml b/config/datasource/durationTestObject12/e1-outgoing-stock.yaml new file mode 100644 index 0000000..9b8fcba --- /dev/null +++ b/config/datasource/durationTestObject12/e1-outgoing-stock.yaml @@ -0,0 +1,54 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder" + number: 1 + lastState: "" + size: + - object: "resourceOrder2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "gold" + number: 1 + change: "" + size: + - object: "whitegold" + number: 1 + change: "" + size: + - object: "silver" + number: 1 + change: "" + size: + - object: "stone" + number: 1 + change: "" + size: + - object: "diamond" + number: 1 + change: "" + size: + - object: "smaragd" + number: 1 + change: "" + size: + - object: "rubin" + number: 1 + change: "" + size: + duration: 3 + transition: "Forging" \ No newline at end of file diff --git a/config/datasource/durationTestObject12/e2-forging.yaml b/config/datasource/durationTestObject12/e2-forging.yaml new file mode 100644 index 0000000..10975b8 --- /dev/null +++ b/config/datasource/durationTestObject12/e2-forging.yaml @@ -0,0 +1,51 @@ +kind: datasource +name: "Forging" +spec: + name: "Forging" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "gold" + number: 1 + lastState: "" + size: + - object: "whitegold" + number: 1 + lastState: "" + size: + - object: "silver" + number: 1 + lastState: "" + size: + - object: "stone" + number: 1 + lastState: "" + size: + - object: "diamond" + number: 1 + lastState: "" + size: + - object: "smaragd" + number: 1 + lastState: "" + size: + - object: "rubin" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Forged" + output: + - object: "ring" + number: 1 + change: "shaped" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/durationTestObject12/order2.yaml b/config/datasource/durationTestObject12/order2.yaml new file mode 100644 index 0000000..0d6e2f0 --- /dev/null +++ b/config/datasource/durationTestObject12/order2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order2" +spec: + name: "order2" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject12/resourceOrder2.yaml b/config/datasource/durationTestObject12/resourceOrder2.yaml new file mode 100644 index 0000000..c2a6497 --- /dev/null +++ b/config/datasource/durationTestObject12/resourceOrder2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder2" +spec: + name: "resourceOrder2" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject12/ring.yaml b/config/datasource/durationTestObject12/ring.yaml new file mode 100644 index 0000000..9028a78 --- /dev/null +++ b/config/datasource/durationTestObject12/ring.yaml @@ -0,0 +1,6 @@ +kind: object +name: "ring" +spec: + name: "ring" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject12/routing.yaml b/config/datasource/durationTestObject12/routing.yaml new file mode 100644 index 0000000..4647302 --- /dev/null +++ b/config/datasource/durationTestObject12/routing.yaml @@ -0,0 +1,28 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "S" + duration: 3 + - routeForActivity: "Back to stock" + start: "S" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "S" + duration: 3 + - routeForActivity: "Back to machine" + start: "S" + end: "M" + duration: 3 \ No newline at end of file diff --git a/config/datasource/durationTestObject12/rubin.yaml b/config/datasource/durationTestObject12/rubin.yaml new file mode 100644 index 0000000..aab66f8 --- /dev/null +++ b/config/datasource/durationTestObject12/rubin.yaml @@ -0,0 +1,6 @@ +kind: object +name: "rubin" +spec: + name: "rubin" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject12/silver.yaml b/config/datasource/durationTestObject12/silver.yaml new file mode 100644 index 0000000..a051d6d --- /dev/null +++ b/config/datasource/durationTestObject12/silver.yaml @@ -0,0 +1,6 @@ +kind: object +name: "silver" +spec: + name: "silver" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject12/smaragd.yaml b/config/datasource/durationTestObject12/smaragd.yaml new file mode 100644 index 0000000..d6bacf5 --- /dev/null +++ b/config/datasource/durationTestObject12/smaragd.yaml @@ -0,0 +1,6 @@ +kind: object +name: "smaragd" +spec: + name: "smaragd" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject12/stone.yaml b/config/datasource/durationTestObject12/stone.yaml new file mode 100644 index 0000000..4ff96e8 --- /dev/null +++ b/config/datasource/durationTestObject12/stone.yaml @@ -0,0 +1,6 @@ +kind: object +name: "stone" +spec: + name: "stone" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject12/warehouse_stock.yaml b/config/datasource/durationTestObject12/warehouse_stock.yaml new file mode 100644 index 0000000..288f783 --- /dev/null +++ b/config/datasource/durationTestObject12/warehouse_stock.yaml @@ -0,0 +1,12 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: + - object: "order2" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject12/whitegold.yaml b/config/datasource/durationTestObject12/whitegold.yaml new file mode 100644 index 0000000..0ba7e29 --- /dev/null +++ b/config/datasource/durationTestObject12/whitegold.yaml @@ -0,0 +1,6 @@ +kind: object +name: "whitegold" +spec: + name: "whitegold" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject3/e1-outgoing-stock.yaml b/config/datasource/durationTestObject3/e1-outgoing-stock.yaml new file mode 100644 index 0000000..c81339d --- /dev/null +++ b/config/datasource/durationTestObject3/e1-outgoing-stock.yaml @@ -0,0 +1,26 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "gold" + number: 1 + change: "" + size: + duration: 3 + transition: "Forging" \ No newline at end of file diff --git a/config/datasource/durationTestObject3/e2-forging.yaml b/config/datasource/durationTestObject3/e2-forging.yaml new file mode 100644 index 0000000..4808720 --- /dev/null +++ b/config/datasource/durationTestObject3/e2-forging.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Forging" +spec: + name: "Forging" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "gold" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Forged" + output: + - object: "gold" + number: 1 + change: "shaped" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/durationTestObject3/gold.yaml b/config/datasource/durationTestObject3/gold.yaml new file mode 100644 index 0000000..ad33055 --- /dev/null +++ b/config/datasource/durationTestObject3/gold.yaml @@ -0,0 +1,6 @@ +kind: object +name: "gold" +spec: + name: "gold" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject3/order.yaml b/config/datasource/durationTestObject3/order.yaml new file mode 100644 index 0000000..031b156 --- /dev/null +++ b/config/datasource/durationTestObject3/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject3/resourceOrder.yaml b/config/datasource/durationTestObject3/resourceOrder.yaml new file mode 100644 index 0000000..e4e6fa1 --- /dev/null +++ b/config/datasource/durationTestObject3/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject3/routing.yaml b/config/datasource/durationTestObject3/routing.yaml new file mode 100644 index 0000000..4647302 --- /dev/null +++ b/config/datasource/durationTestObject3/routing.yaml @@ -0,0 +1,28 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "S" + duration: 3 + - routeForActivity: "Back to stock" + start: "S" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "S" + duration: 3 + - routeForActivity: "Back to machine" + start: "S" + end: "M" + duration: 3 \ No newline at end of file diff --git a/config/datasource/durationTestObject3/workforces.yaml b/config/datasource/durationTestObject3/workforces.yaml new file mode 100644 index 0000000..d8948eb --- /dev/null +++ b/config/datasource/durationTestObject3/workforces.yaml @@ -0,0 +1,7 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "humanWorkforce" + startLocation: "ST" + number: 2 \ No newline at end of file diff --git a/config/datasource/durationTestObject6/e0-order.yaml b/config/datasource/durationTestObject6/e0-order.yaml new file mode 100644 index 0000000..f9b987a --- /dev/null +++ b/config/datasource/durationTestObject6/e0-order.yaml @@ -0,0 +1,31 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + - object: "order2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/durationTestObject6/e1-outgoing-stock.yaml b/config/datasource/durationTestObject6/e1-outgoing-stock.yaml new file mode 100644 index 0000000..be7a7a3 --- /dev/null +++ b/config/datasource/durationTestObject6/e1-outgoing-stock.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "gold" + number: 1 + change: "" + size: + - object: "whitegold" + number: 1 + change: "" + size: + duration: 3 + transition: "Forging" \ No newline at end of file diff --git a/config/datasource/durationTestObject6/e2-forging.yaml b/config/datasource/durationTestObject6/e2-forging.yaml new file mode 100644 index 0000000..17d1a9b --- /dev/null +++ b/config/datasource/durationTestObject6/e2-forging.yaml @@ -0,0 +1,31 @@ +kind: datasource +name: "Forging" +spec: + name: "Forging" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "gold" + number: 1 + lastState: "" + size: + - object: "whitegold" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Forged" + output: + - object: "ring" + number: 1 + change: "shaped" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/durationTestObject6/gold.yaml b/config/datasource/durationTestObject6/gold.yaml new file mode 100644 index 0000000..ad33055 --- /dev/null +++ b/config/datasource/durationTestObject6/gold.yaml @@ -0,0 +1,6 @@ +kind: object +name: "gold" +spec: + name: "gold" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject6/order.yaml b/config/datasource/durationTestObject6/order.yaml new file mode 100644 index 0000000..031b156 --- /dev/null +++ b/config/datasource/durationTestObject6/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject6/order2.yaml b/config/datasource/durationTestObject6/order2.yaml new file mode 100644 index 0000000..0d6e2f0 --- /dev/null +++ b/config/datasource/durationTestObject6/order2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order2" +spec: + name: "order2" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject6/resourceOrder.yaml b/config/datasource/durationTestObject6/resourceOrder.yaml new file mode 100644 index 0000000..e4e6fa1 --- /dev/null +++ b/config/datasource/durationTestObject6/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject6/ring.yaml b/config/datasource/durationTestObject6/ring.yaml new file mode 100644 index 0000000..9028a78 --- /dev/null +++ b/config/datasource/durationTestObject6/ring.yaml @@ -0,0 +1,6 @@ +kind: object +name: "ring" +spec: + name: "ring" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject6/routing.yaml b/config/datasource/durationTestObject6/routing.yaml new file mode 100644 index 0000000..4647302 --- /dev/null +++ b/config/datasource/durationTestObject6/routing.yaml @@ -0,0 +1,28 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "S" + duration: 3 + - routeForActivity: "Back to stock" + start: "S" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "S" + duration: 3 + - routeForActivity: "Back to machine" + start: "S" + end: "M" + duration: 3 \ No newline at end of file diff --git a/config/datasource/durationTestObject6/warehouse_stock.yaml b/config/datasource/durationTestObject6/warehouse_stock.yaml new file mode 100644 index 0000000..288f783 --- /dev/null +++ b/config/datasource/durationTestObject6/warehouse_stock.yaml @@ -0,0 +1,12 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: + - object: "order2" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject6/whitegold.yaml b/config/datasource/durationTestObject6/whitegold.yaml new file mode 100644 index 0000000..0ba7e29 --- /dev/null +++ b/config/datasource/durationTestObject6/whitegold.yaml @@ -0,0 +1,6 @@ +kind: object +name: "whitegold" +spec: + name: "whitegold" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/durationTestObject6/workforces.yaml b/config/datasource/durationTestObject6/workforces.yaml new file mode 100644 index 0000000..d8948eb --- /dev/null +++ b/config/datasource/durationTestObject6/workforces.yaml @@ -0,0 +1,7 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "humanWorkforce" + startLocation: "ST" + number: 2 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-1WF/e0-order.yaml b/config/datasource/goldsmiths-with-1WF/e0-order.yaml new file mode 100644 index 0000000..3f31a9f --- /dev/null +++ b/config/datasource/goldsmiths-with-1WF/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-WF/e1-outgoing-stock.yaml b/config/datasource/goldsmiths-with-1WF/e1-outgoing-stock.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF/e1-outgoing-stock.yaml rename to config/datasource/goldsmiths-with-1WF/e1-outgoing-stock.yaml diff --git a/config/datasource/goldsmiths-with-WF/e2-forging.yaml b/config/datasource/goldsmiths-with-1WF/e2-forging.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF/e2-forging.yaml rename to config/datasource/goldsmiths-with-1WF/e2-forging.yaml diff --git a/config/datasource/goldsmiths-with-WF/e3-shipping.yaml b/config/datasource/goldsmiths-with-1WF/e3-shipping.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF/e3-shipping.yaml rename to config/datasource/goldsmiths-with-1WF/e3-shipping.yaml diff --git a/config/datasource/goldsmiths-with-1WF/gold.yaml b/config/datasource/goldsmiths-with-1WF/gold.yaml new file mode 100644 index 0000000..ad33055 --- /dev/null +++ b/config/datasource/goldsmiths-with-1WF/gold.yaml @@ -0,0 +1,6 @@ +kind: object +name: "gold" +spec: + name: "gold" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-1WF/order.yaml b/config/datasource/goldsmiths-with-1WF/order.yaml new file mode 100644 index 0000000..031b156 --- /dev/null +++ b/config/datasource/goldsmiths-with-1WF/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-1WF/resourceOrder.yaml b/config/datasource/goldsmiths-with-1WF/resourceOrder.yaml new file mode 100644 index 0000000..e4e6fa1 --- /dev/null +++ b/config/datasource/goldsmiths-with-1WF/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-1WF/routing.yaml b/config/datasource/goldsmiths-with-1WF/routing.yaml new file mode 100644 index 0000000..4647302 --- /dev/null +++ b/config/datasource/goldsmiths-with-1WF/routing.yaml @@ -0,0 +1,28 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "S" + duration: 3 + - routeForActivity: "Back to stock" + start: "S" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "S" + duration: 3 + - routeForActivity: "Back to machine" + start: "S" + end: "M" + duration: 3 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-1WF/warehouse_stock.yaml b/config/datasource/goldsmiths-with-1WF/warehouse_stock.yaml new file mode 100644 index 0000000..455a78c --- /dev/null +++ b/config/datasource/goldsmiths-with-1WF/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-1WF/workforces.yaml b/config/datasource/goldsmiths-with-1WF/workforces.yaml new file mode 100644 index 0000000..ee0175d --- /dev/null +++ b/config/datasource/goldsmiths-with-1WF/workforces.yaml @@ -0,0 +1,7 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "humanWorkforce" + startLocation: "ST" + number: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-2WF/e0-order.yaml b/config/datasource/goldsmiths-with-2WF/e0-order.yaml new file mode 100644 index 0000000..3f31a9f --- /dev/null +++ b/config/datasource/goldsmiths-with-2WF/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-2WF/e1-outgoing-stock.yaml b/config/datasource/goldsmiths-with-2WF/e1-outgoing-stock.yaml new file mode 100644 index 0000000..ae31c79 --- /dev/null +++ b/config/datasource/goldsmiths-with-2WF/e1-outgoing-stock.yaml @@ -0,0 +1,29 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "retrieve resources" + output: + - object: "gold" + number: 1 + change: "" + size: + duration: 3 + transition: "Forging" \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-2WF/e2-forging.yaml b/config/datasource/goldsmiths-with-2WF/e2-forging.yaml new file mode 100644 index 0000000..90f89e6 --- /dev/null +++ b/config/datasource/goldsmiths-with-2WF/e2-forging.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "Forging" +spec: + name: "Forging" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "gold" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Forged" + output: + - object: "gold" + number: 1 + change: "shaped" + size: + transition: "Shipping" + duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-2WF/e3-shipping.yaml b/config/datasource/goldsmiths-with-2WF/e3-shipping.yaml new file mode 100644 index 0000000..0db55aa --- /dev/null +++ b/config/datasource/goldsmiths-with-2WF/e3-shipping.yaml @@ -0,0 +1,39 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [0.1, 0.9] + input: + - object: "gold" + number: 1 + lastState: "shaped" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Package waits for sending" + output: + - object: "gold" + number: 1 + change: "shaped" + size: + transition: "Shipping" + duration: 20 + - activity: + name: "Package sent" + output: + - object: "gold" + number: 1 + change: "shipped" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-2WF/gold.yaml b/config/datasource/goldsmiths-with-2WF/gold.yaml new file mode 100644 index 0000000..ad33055 --- /dev/null +++ b/config/datasource/goldsmiths-with-2WF/gold.yaml @@ -0,0 +1,6 @@ +kind: object +name: "gold" +spec: + name: "gold" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-2WF/order.yaml b/config/datasource/goldsmiths-with-2WF/order.yaml new file mode 100644 index 0000000..031b156 --- /dev/null +++ b/config/datasource/goldsmiths-with-2WF/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-2WF/resourceOrder.yaml b/config/datasource/goldsmiths-with-2WF/resourceOrder.yaml new file mode 100644 index 0000000..e4e6fa1 --- /dev/null +++ b/config/datasource/goldsmiths-with-2WF/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-2WF/routing.yaml b/config/datasource/goldsmiths-with-2WF/routing.yaml new file mode 100644 index 0000000..4647302 --- /dev/null +++ b/config/datasource/goldsmiths-with-2WF/routing.yaml @@ -0,0 +1,28 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "S" + duration: 3 + - routeForActivity: "Back to stock" + start: "S" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "S" + duration: 3 + - routeForActivity: "Back to machine" + start: "S" + end: "M" + duration: 3 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-2WF/warehouse_stock.yaml b/config/datasource/goldsmiths-with-2WF/warehouse_stock.yaml new file mode 100644 index 0000000..455a78c --- /dev/null +++ b/config/datasource/goldsmiths-with-2WF/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-2WF/workforces.yaml b/config/datasource/goldsmiths-with-2WF/workforces.yaml new file mode 100644 index 0000000..d8948eb --- /dev/null +++ b/config/datasource/goldsmiths-with-2WF/workforces.yaml @@ -0,0 +1,7 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "humanWorkforce" + startLocation: "ST" + number: 2 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-6WF/e0-order.yaml b/config/datasource/goldsmiths-with-6WF/e0-order.yaml new file mode 100644 index 0000000..3f31a9f --- /dev/null +++ b/config/datasource/goldsmiths-with-6WF/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-6WF/e1-outgoing-stock.yaml b/config/datasource/goldsmiths-with-6WF/e1-outgoing-stock.yaml new file mode 100644 index 0000000..ae31c79 --- /dev/null +++ b/config/datasource/goldsmiths-with-6WF/e1-outgoing-stock.yaml @@ -0,0 +1,29 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: parallel + input: + - object: "resourceOrder" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "retrieve resources" + output: + - object: "gold" + number: 1 + change: "" + size: + duration: 3 + transition: "Forging" \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-6WF/e2-forging.yaml b/config/datasource/goldsmiths-with-6WF/e2-forging.yaml new file mode 100644 index 0000000..90f89e6 --- /dev/null +++ b/config/datasource/goldsmiths-with-6WF/e2-forging.yaml @@ -0,0 +1,30 @@ +kind: datasource +name: "Forging" +spec: + name: "Forging" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "M" + end: "M" + workstation: "M" + selection: genericProbability + distribution: [1.0] + input: + - object: "gold" + number: 1 + lastState: "" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Forged" + output: + - object: "gold" + number: 1 + change: "shaped" + size: + transition: "Shipping" + duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-6WF/e3-shipping.yaml b/config/datasource/goldsmiths-with-6WF/e3-shipping.yaml new file mode 100644 index 0000000..0db55aa --- /dev/null +++ b/config/datasource/goldsmiths-with-6WF/e3-shipping.yaml @@ -0,0 +1,39 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [0.1, 0.9] + input: + - object: "gold" + number: 1 + lastState: "shaped" + size: + workforces: + - workforce: "humanWorkforce" + number: 1 + eventData: + - activity: + name: "Package waits for sending" + output: + - object: "gold" + number: 1 + change: "shaped" + size: + transition: "Shipping" + duration: 20 + - activity: + name: "Package sent" + output: + - object: "gold" + number: 1 + change: "shipped" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-6WF/gold.yaml b/config/datasource/goldsmiths-with-6WF/gold.yaml new file mode 100644 index 0000000..ad33055 --- /dev/null +++ b/config/datasource/goldsmiths-with-6WF/gold.yaml @@ -0,0 +1,6 @@ +kind: object +name: "gold" +spec: + name: "gold" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-6WF/order.yaml b/config/datasource/goldsmiths-with-6WF/order.yaml new file mode 100644 index 0000000..031b156 --- /dev/null +++ b/config/datasource/goldsmiths-with-6WF/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-6WF/resourceOrder.yaml b/config/datasource/goldsmiths-with-6WF/resourceOrder.yaml new file mode 100644 index 0000000..e4e6fa1 --- /dev/null +++ b/config/datasource/goldsmiths-with-6WF/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "object" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-6WF/routing.yaml b/config/datasource/goldsmiths-with-6WF/routing.yaml new file mode 100644 index 0000000..4647302 --- /dev/null +++ b/config/datasource/goldsmiths-with-6WF/routing.yaml @@ -0,0 +1,28 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "M" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "S" + duration: 3 + - routeForActivity: "Back to stock" + start: "S" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "M" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "M" + end: "S" + duration: 3 + - routeForActivity: "Back to machine" + start: "S" + end: "M" + duration: 3 \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-6WF/warehouse_stock.yaml b/config/datasource/goldsmiths-with-6WF/warehouse_stock.yaml new file mode 100644 index 0000000..455a78c --- /dev/null +++ b/config/datasource/goldsmiths-with-6WF/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 1000 + lastState: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-with-6WF/workforces.yaml b/config/datasource/goldsmiths-with-6WF/workforces.yaml new file mode 100644 index 0000000..3dc6ea3 --- /dev/null +++ b/config/datasource/goldsmiths-with-6WF/workforces.yaml @@ -0,0 +1,7 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "humanWorkforce" + startLocation: "ST" + number: 6 \ No newline at end of file From 90b522d1a4be4d052a130d31285cb18995153999 Mon Sep 17 00:00:00 2001 From: ulpi Date: Sat, 30 Aug 2025 12:50:58 +0200 Subject: [PATCH 123/124] durationTests --- .../{goldsmiths-with-WF => durationTestObject12}/gold.yaml | 0 .../{goldsmiths-with-WF => durationTestObject12}/order.yaml | 0 .../resourceOrder.yaml | 0 .../{goldsmiths-with-WF => durationTestObject12}/workforces.yaml | 0 .../{goldsmiths-with-WF => durationTestObject3}/e0-order.yaml | 0 .../warehouse_stock.yaml | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename config/datasource/{goldsmiths-with-WF => durationTestObject12}/gold.yaml (100%) rename config/datasource/{goldsmiths-with-WF => durationTestObject12}/order.yaml (100%) rename config/datasource/{goldsmiths-with-WF => durationTestObject12}/resourceOrder.yaml (100%) rename config/datasource/{goldsmiths-with-WF => durationTestObject12}/workforces.yaml (100%) rename config/datasource/{goldsmiths-with-WF => durationTestObject3}/e0-order.yaml (100%) rename config/datasource/{goldsmiths-with-WF => durationTestObject3}/warehouse_stock.yaml (100%) diff --git a/config/datasource/goldsmiths-with-WF/gold.yaml b/config/datasource/durationTestObject12/gold.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF/gold.yaml rename to config/datasource/durationTestObject12/gold.yaml diff --git a/config/datasource/goldsmiths-with-WF/order.yaml b/config/datasource/durationTestObject12/order.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF/order.yaml rename to config/datasource/durationTestObject12/order.yaml diff --git a/config/datasource/goldsmiths-with-WF/resourceOrder.yaml b/config/datasource/durationTestObject12/resourceOrder.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF/resourceOrder.yaml rename to config/datasource/durationTestObject12/resourceOrder.yaml diff --git a/config/datasource/goldsmiths-with-WF/workforces.yaml b/config/datasource/durationTestObject12/workforces.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF/workforces.yaml rename to config/datasource/durationTestObject12/workforces.yaml diff --git a/config/datasource/goldsmiths-with-WF/e0-order.yaml b/config/datasource/durationTestObject3/e0-order.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF/e0-order.yaml rename to config/datasource/durationTestObject3/e0-order.yaml diff --git a/config/datasource/goldsmiths-with-WF/warehouse_stock.yaml b/config/datasource/durationTestObject3/warehouse_stock.yaml similarity index 100% rename from config/datasource/goldsmiths-with-WF/warehouse_stock.yaml rename to config/datasource/durationTestObject3/warehouse_stock.yaml From 8bb2af1b154471ce0560736921403a1048e2bd71 Mon Sep 17 00:00:00 2001 From: ulpi Date: Tue, 7 Oct 2025 22:43:29 +0200 Subject: [PATCH 124/124] add missing cases, delete unnecessary test and clean simulation return --- .../e0-order.yaml | 27 +++++ .../e1-outgoing-stock.yaml | 26 +++++ .../e2-forging.yaml | 27 +++++ .../e3-shipping.yaml | 36 ++++++ .../goldsmiths-without-WF-OneObject/gold.yaml | 7 ++ .../warehouse_stock.yaml | 8 ++ .../e0-order.yaml | 27 +++++ .../e1-outgoing-stock.yaml | 26 +++++ .../e2-forging.yaml | 36 ++++++ .../e3-shipping.yaml | 36 ++++++ .../goldsmiths-without-WF-TwoObject/gold.yaml | 7 ++ .../stone.yaml | 7 ++ .../warehouse_stock.yaml | 8 ++ .../barA.yaml | 9 ++ .../barW.yaml | 9 ++ .../boardA.yaml | 9 ++ .../boardW.yaml | 9 ++ .../e0-order.yaml | 36 ++++++ .../e1-outgoing-stock.yaml | 54 +++++++++ .../e1a-outgoing-stock.yaml | 54 +++++++++ .../e2-sawing-bar.yaml | 75 ++++++++++++ .../e2-sawing-board.yaml | 75 ++++++++++++ .../e2a-sawing-bar.yaml | 75 ++++++++++++ .../e2a-sawing-board.yaml | 75 ++++++++++++ .../e3-drilling-bar.yaml | 48 ++++++++ .../e3a-drilling-bar.yaml | 48 ++++++++ .../e4-sanding-Bar.yaml | 36 ++++++ .../e4-sanding-Board.yaml | 36 ++++++ .../e4a-sanding-Bar.yaml | 36 ++++++ .../e4a-sanding-Board.yaml | 36 ++++++ .../e5-assembly.yaml | 105 +++++++++++++++++ .../e5a-assembly.yaml | 105 +++++++++++++++++ .../e6-quality-control.yaml | 46 ++++++++ .../e6a-quality-control.yaml | 47 ++++++++ .../e7-shipping.yaml | 27 +++++ .../e7a-shipping.yaml | 27 +++++ .../handover.yaml | 6 + .../order.yaml | 6 + .../pinA.yaml | 6 + .../pinW.yaml | 6 + .../resourceOrder.yaml | 6 + .../routing.yaml | 44 +++++++ .../screw1.yaml | 6 + .../screw2.yaml | 6 + .../shelf1.yaml | 6 + .../shelf2.yaml | 6 + .../t0A-stock-to-machine.yaml | 40 +++++++ .../t0BA-stock-to-machine.yaml | 40 +++++++ .../t0BW-stock-to-machine.yaml | 40 +++++++ .../t0W-stock-to-machine.yaml | 40 +++++++ .../t1-stock-to-assembly.yaml | 42 +++++++ .../t1A-machine-to-assembly.yaml | 40 +++++++ .../t1A-stock-to-assembly.yaml | 42 +++++++ .../t1BA-machine-to-assembly.yaml | 40 +++++++ .../t1BW-machine-to-assembly.yaml | 40 +++++++ .../t1W-machine-to-assembly.yaml | 40 +++++++ .../warehouse_stock.yaml | 8 ++ .../workforces.yaml | 13 +++ .../barA-resource.yaml | 9 ++ .../barA.yaml | 9 ++ .../barW-resource.yaml | 9 ++ .../barW.yaml | 9 ++ .../boardA-resource.yaml | 9 ++ .../boardA.yaml | 9 ++ .../boardW-resource.yaml | 9 ++ .../boardW.yaml | 9 ++ .../crossA-resource.yaml | 9 ++ .../crossA.yaml | 9 ++ .../crossW-resource.yaml | 9 ++ .../crossW.yaml | 9 ++ .../e-buying resources.yaml | 89 ++++++++++++++ .../e0-order.yaml | 40 +++++++ .../e0a-order.yaml | 40 +++++++ .../e2-sawing-barCross.yaml | 110 ++++++++++++++++++ .../e2-sawing-board.yaml | 75 ++++++++++++ .../e2a-sawing-barCross.yaml | 110 ++++++++++++++++++ .../e2a-sawing-board.yaml | 75 ++++++++++++ .../e3-drilling-bar.yaml | 48 ++++++++ .../e3a-drilling-bar.yaml | 48 ++++++++ .../e3a-drilling-cross.yaml | 48 ++++++++ .../e4-sanding-Bar.yaml | 36 ++++++ .../e4-sanding-Board.yaml | 36 ++++++ .../e4-sanding-Cross.yaml | 36 ++++++ .../e4a-sanding-Bar.yaml | 36 ++++++ .../e4a-sanding-Board.yaml | 36 ++++++ .../e4a-sanding-Cross.yaml | 36 ++++++ .../e5-assembly.yaml | 82 +++++++++++++ .../e5a-assembly.yaml | 82 +++++++++++++ .../e6-quality-control.yaml | 46 ++++++++ .../e6a-quality-control.yaml | 47 ++++++++ .../e7-shipping.yaml | 27 +++++ .../e7a-shipping.yaml | 27 +++++ .../handover.yaml | 6 + .../handoverA.yaml | 6 + .../handoverBar.yaml | 6 + .../handoverBarA.yaml | 6 + .../handoverBarR.yaml | 6 + .../handoverBarRA.yaml | 6 + .../handoverBoard.yaml | 6 + .../handoverBoardA.yaml | 6 + .../handoverBoardR.yaml | 6 + .../handoverBoardRA.yaml | 6 + .../order1.yaml | 6 + .../order2.yaml | 6 + .../orderBuyResource.yaml | 6 + .../pinA.yaml | 6 + .../pinW.yaml | 6 + .../resourceOrder1.yaml | 6 + .../resourceOrder2.yaml | 6 + .../routing.yaml | 96 +++++++++++++++ .../screw1.yaml | 6 + .../screw2.yaml | 6 + .../shelf1.yaml | 6 + .../shelf2.yaml | 6 + .../t0A-stock-to-machine.yaml | 54 +++++++++ .../t0BA-stock-to-machine.yaml | 40 +++++++ .../t0BW-stock-to-machine.yaml | 40 +++++++ .../t0W-stock-to-machine.yaml | 54 +++++++++ .../t1-stock-to-assembly.yaml | 42 +++++++ .../t1A-machine-to-assembly.yaml | 54 +++++++++ .../t1A-stock-to-assembly.yaml | 42 +++++++ .../t1BA-machine-to-assembly.yaml | 40 +++++++ .../t1BW-machine-to-assembly.yaml | 40 +++++++ .../t1W-machine-to-assembly.yaml | 54 +++++++++ .../warehouse_stock.yaml | 70 +++++++++++ .../workforces.yaml | 13 +++ .../simulation/ocel_sim_test.py | 39 ------- .../process_simulation_object_centric.py | 2 +- 128 files changed, 3962 insertions(+), 40 deletions(-) create mode 100644 config/datasource/goldsmiths-without-WF-OneObject/e0-order.yaml create mode 100644 config/datasource/goldsmiths-without-WF-OneObject/e1-outgoing-stock.yaml create mode 100644 config/datasource/goldsmiths-without-WF-OneObject/e2-forging.yaml create mode 100644 config/datasource/goldsmiths-without-WF-OneObject/e3-shipping.yaml create mode 100644 config/datasource/goldsmiths-without-WF-OneObject/gold.yaml create mode 100644 config/datasource/goldsmiths-without-WF-OneObject/warehouse_stock.yaml create mode 100644 config/datasource/goldsmiths-without-WF-TwoObject/e0-order.yaml create mode 100644 config/datasource/goldsmiths-without-WF-TwoObject/e1-outgoing-stock.yaml create mode 100644 config/datasource/goldsmiths-without-WF-TwoObject/e2-forging.yaml create mode 100644 config/datasource/goldsmiths-without-WF-TwoObject/e3-shipping.yaml create mode 100644 config/datasource/goldsmiths-without-WF-TwoObject/gold.yaml create mode 100644 config/datasource/goldsmiths-without-WF-TwoObject/stone.yaml create mode 100644 config/datasource/goldsmiths-without-WF-TwoObject/warehouse_stock.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/barA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/barW.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/boardA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/boardW.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e0-order.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e1-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e1a-outgoing-stock.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e2-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e2-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e2a-sawing-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e2a-sawing-board.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e3a-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e4-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e4-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e4a-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e4a-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e5-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e5a-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e6-quality-control.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e6a-quality-control.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e7-shipping.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e7a-shipping.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/handover.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/order.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/pinA.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/pinW.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/resourceOrder.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/routing.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/screw1.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/screw2.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/shelf1.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/shelf2.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t0A-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t0BA-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t0BW-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t0W-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1A-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1A-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1BA-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1BW-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1W-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/warehouse_stock.yaml create mode 100644 config/datasource/smart-factory-2P-withWF-withDefects-by-demand/workforces.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/barA-resource.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/barA.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/barW-resource.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/barW.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/boardA-resource.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/boardA.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/boardW-resource.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/boardW.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/crossA-resource.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/crossA.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/crossW-resource.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/crossW.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e-buying resources.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e0-order.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e0a-order.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e2-sawing-barCross.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e2-sawing-board.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e2a-sawing-barCross.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e2a-sawing-board.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e3-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e3a-drilling-bar.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e3a-drilling-cross.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e4-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e4-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e4-sanding-Cross.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e4a-sanding-Bar.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e4a-sanding-Board.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e4a-sanding-Cross.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e5-assembly.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e5a-assembly.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e6-quality-control.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e6a-quality-control.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e7-shipping.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/e7a-shipping.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/handover.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/handoverA.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/handoverBar.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/handoverBarA.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/handoverBarR.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/handoverBarRA.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/handoverBoard.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/handoverBoardA.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/handoverBoardR.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/handoverBoardRA.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/order1.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/order2.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/orderBuyResource.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/pinA.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/pinW.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/resourceOrder1.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/resourceOrder2.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/routing.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/screw1.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/screw2.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/shelf1.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/shelf2.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/t0A-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/t0BA-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/t0BW-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/t0W-stock-to-machine.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/t1-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/t1A-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/t1A-stock-to-assembly.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/t1BA-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/t1BW-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/t1W-machine-to-assembly.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/warehouse_stock.yaml create mode 100644 config/datasource/smart-factory-original-scenario-V2/workforces.yaml delete mode 100644 distributed_event_factory/simulation/ocel_sim_test.py diff --git a/config/datasource/goldsmiths-without-WF-OneObject/e0-order.yaml b/config/datasource/goldsmiths-without-WF-OneObject/e0-order.yaml new file mode 100644 index 0000000..fa3bf12 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-OneObject/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "gold" + number: 1 + lastState: "order" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "gold" + number: 1 + change: "resourceOrder" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-OneObject/e1-outgoing-stock.yaml b/config/datasource/goldsmiths-without-WF-OneObject/e1-outgoing-stock.yaml new file mode 100644 index 0000000..f2846e5 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-OneObject/e1-outgoing-stock.yaml @@ -0,0 +1,26 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: parallel + input: + - object: "gold" + number: 1 + lastState: "resourceOrder" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "gold" + number: 1 + change: "gold" + size: + duration: 3 + transition: "Forging" \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-OneObject/e2-forging.yaml b/config/datasource/goldsmiths-without-WF-OneObject/e2-forging.yaml new file mode 100644 index 0000000..69a46e5 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-OneObject/e2-forging.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Forging" +spec: + name: "Forging" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "gold" + number: 1 + lastState: "gold" + size: + eventData: + - activity: + name: "Forged" + output: + - object: "gold" + number: 1 + change: "shaped" + size: + transition: "Shipping" + duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-OneObject/e3-shipping.yaml b/config/datasource/goldsmiths-without-WF-OneObject/e3-shipping.yaml new file mode 100644 index 0000000..f99bc81 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-OneObject/e3-shipping.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [0.1, 0.9] + input: + - object: "gold" + number: 1 + lastState: "shaped" + size: + eventData: + - activity: + name: "Package waits for sending" + output: + - object: "gold" + number: 1 + change: "shaped" + size: + transition: "Shipping" + duration: 20 + - activity: + name: "Package sent" + output: + - object: "gold" + number: 1 + change: "shipped" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-OneObject/gold.yaml b/config/datasource/goldsmiths-without-WF-OneObject/gold.yaml new file mode 100644 index 0000000..b58c575 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-OneObject/gold.yaml @@ -0,0 +1,7 @@ +kind: object +name: "gold" +spec: + name: "gold" + type: "object" + input: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-OneObject/warehouse_stock.yaml b/config/datasource/goldsmiths-without-WF-OneObject/warehouse_stock.yaml new file mode 100644 index 0000000..f580762 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-OneObject/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "gold" + number: 100 + lastState: "order" + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-TwoObject/e0-order.yaml b/config/datasource/goldsmiths-without-WF-TwoObject/e0-order.yaml new file mode 100644 index 0000000..fa3bf12 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-TwoObject/e0-order.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "gold" + number: 1 + lastState: "order" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "gold" + number: 1 + change: "resourceOrder" + size: + transition: "OutgoingStock" + duration: 0 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-TwoObject/e1-outgoing-stock.yaml b/config/datasource/goldsmiths-without-WF-TwoObject/e1-outgoing-stock.yaml new file mode 100644 index 0000000..f2846e5 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-TwoObject/e1-outgoing-stock.yaml @@ -0,0 +1,26 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: parallel + input: + - object: "gold" + number: 1 + lastState: "resourceOrder" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "gold" + number: 1 + change: "gold" + size: + duration: 3 + transition: "Forging" \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-TwoObject/e2-forging.yaml b/config/datasource/goldsmiths-without-WF-TwoObject/e2-forging.yaml new file mode 100644 index 0000000..f61e139 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-TwoObject/e2-forging.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "Forging" +spec: + name: "Forging" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [1.0] + input: + - object: "gold" + number: 1 + lastState: "gold" + size: + eventData: + - activity: + name: "Forged" + output: + - object: "gold" + number: 1 + change: "shaped" + size: + transition: "Shipping" + duration: 5 + - activity: + name: "Forged" + output: + - object: "stoe" + number: 1 + change: "shaped" + size: + transition: "Shipping" + duration: 5 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-TwoObject/e3-shipping.yaml b/config/datasource/goldsmiths-without-WF-TwoObject/e3-shipping.yaml new file mode 100644 index 0000000..f99bc81 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-TwoObject/e3-shipping.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "Shipping" +spec: + name: "Shipping" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [0.1, 0.9] + input: + - object: "gold" + number: 1 + lastState: "shaped" + size: + eventData: + - activity: + name: "Package waits for sending" + output: + - object: "gold" + number: 1 + change: "shaped" + size: + transition: "Shipping" + duration: 20 + - activity: + name: "Package sent" + output: + - object: "gold" + number: 1 + change: "shipped" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-TwoObject/gold.yaml b/config/datasource/goldsmiths-without-WF-TwoObject/gold.yaml new file mode 100644 index 0000000..b58c575 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-TwoObject/gold.yaml @@ -0,0 +1,7 @@ +kind: object +name: "gold" +spec: + name: "gold" + type: "object" + input: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-TwoObject/stone.yaml b/config/datasource/goldsmiths-without-WF-TwoObject/stone.yaml new file mode 100644 index 0000000..b58c575 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-TwoObject/stone.yaml @@ -0,0 +1,7 @@ +kind: object +name: "gold" +spec: + name: "gold" + type: "object" + input: + size: \ No newline at end of file diff --git a/config/datasource/goldsmiths-without-WF-TwoObject/warehouse_stock.yaml b/config/datasource/goldsmiths-without-WF-TwoObject/warehouse_stock.yaml new file mode 100644 index 0000000..f580762 --- /dev/null +++ b/config/datasource/goldsmiths-without-WF-TwoObject/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "gold" + number: 100 + lastState: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/barA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/barA.yaml new file mode 100644 index 0000000..fd90873 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/barA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barA" +spec: + name: "barA" + type: "bar" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/barW.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/barW.yaml new file mode 100644 index 0000000..fa2d6b8 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/barW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barW" +spec: + name: "barW" + type: "bar" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/boardA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/boardA.yaml new file mode 100644 index 0000000..8a08496 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/boardA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardA" +spec: + name: "boardA" + type: "board" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/boardW.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/boardW.yaml new file mode 100644 index 0000000..0e97666 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/boardW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardW" +spec: + name: "boardW" + type: "board" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e0-order.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e0-order.yaml new file mode 100644 index 0000000..f039375 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e0-order.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [0.5, 0.5] + input: + - object: "order" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "1" + size: + transition: "OutgoingStock" + duration: 0 + - activity: + name: "order for resources" + output: + - object: "resourceOrder" + number: 1 + change: "2" + size: + transition: "OutgoingStockA" + duration: 0 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e1-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e1-outgoing-stock.yaml new file mode 100644 index 0000000..3d219c4 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e1-outgoing-stock.yaml @@ -0,0 +1,54 @@ +kind: datasource +name: "OutgoingStock" +spec: + name: "OutgoingStock" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: genericProbability + distribution: [ 0.99, 0.01 ] + input: + - object: "resourceOrder" + number: 1 + lastState: "1" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barA" + number: 2 + change: "Resource" + size: + length: "4" + width: "" + depth: "" + - object: "boardW" + number: 1 + change: "Resource" + size: + length: "" + width: "30" + depth: "30" + - object: "screw1" + number: 13 + change: "" + size: + - object: "pinW" + number: 13 + change: "" + size: + duration: 5 + transition: "" + - activity: + name: "Failure: Missing resources" + output: + - object: "" + number: 0 + change: "" + size: + duration: 2 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e1a-outgoing-stock.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e1a-outgoing-stock.yaml new file mode 100644 index 0000000..68e4332 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e1a-outgoing-stock.yaml @@ -0,0 +1,54 @@ +kind: datasource +name: "OutgoingStockA" +spec: + name: "OutgoingStockA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "ST" + end: "ST" + workstation: "ST" + selection: genericProbability + distribution: [ 0.99, 0.01 ] + input: + - object: "resourceOrder" + number: 1 + lastState: "2" + size: + eventData: + - activity: + name: "retrieve resources" + output: + - object: "barW" + number: 2 + change: "Resource" + size: + length: "4" + width: "" + depth: "" + - object: "boardA" + number: 1 + change: "Resource" + size: + length: "" + width: "30" + depth: "30" + - object: "screw2" + number: 13 + change: "" + size: + - object: "pinA" + number: 13 + change: "" + size: + duration: 5 + transition: "" + - activity: + name: "Failure: Missing resources" + output: + - object: "" + number: 0 + change: "" + size: + duration: 2 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e2-sawing-bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e2-sawing-bar.yaml new file mode 100644 index 0000000..6371a7c --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e2-sawing-bar.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBarW" +spec: + name: "SawingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "barW" + number: 2 + lastState: "Resource" + size: + length: "4" + width: "" + depth: "" + - object: "handover" + number: 1 + lastState: "BarR" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "barW" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarW" + duration: 4 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barW" + number: 2 + change: "Resource" + size: + length: "4" + width: "" + depth: "" + - object: "handover" + number: 1 + change: "BarR" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "barW" + number: 3 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + - object: "barW" + number: 1 + change: "broken" + size: + length: "1.25" + width: "" + depth: "" + duration: 4 + transition: "DrillingBarW" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e2-sawing-board.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e2-sawing-board.yaml new file mode 100644 index 0000000..9e8ce9a --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e2-sawing-board.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBoardW" +spec: + name: "SawingBoardW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "boardW" + number: 1 + lastState: "Resource" + size: + length: "" + width: "30" + depth: "30" + - object: "handover" + number: 1 + lastState: "BoardR" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "boardW" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardW" + duration: 9 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "boardW" + number: 1 + change: "Resource" + size: + length: "" + width: "30" + depth: "30" + - object: "handover" + number: 1 + change: "BoardR" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "boardW" + number: 4 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + - object: "boardW" + number: 2 + change: "broken" + size: + length: "" + width: "4.32" + depth: "4.24" + duration: 4 + transition: "SandingBoardW" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e2a-sawing-bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e2a-sawing-bar.yaml new file mode 100644 index 0000000..3e896e7 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e2a-sawing-bar.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBarA" +spec: + name: "SawingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "barA" + number: 2 + lastState: "Resource" + size: + length: "4" + width: "" + depth: "" + - object: "handover" + number: 1 + lastState: "BarRA" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "barA" + number: 4 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + transition: "DrillingBarA" + duration: 4 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barA" + number: 2 + change: "Resource" + size: + length: "4" + width: "" + depth: "" + - object: "handover" + number: 1 + change: "BarRA" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "barA" + number: 3 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + - object: "barA" + number: 1 + change: "broken" + size: + length: "1.25" + width: "" + depth: "" + duration: 4 + transition: "DrillingBarA" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e2a-sawing-board.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e2a-sawing-board.yaml new file mode 100644 index 0000000..c0ca67f --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e2a-sawing-board.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBoardA" +spec: + name: "SawingBoardA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "boardA" + number: 1 + lastState: "Resource" + size: + length: "" + width: "30" + depth: "30" + - object: "handover" + number: 1 + lastState: "BoardRA" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "boardA" + number: 6 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + transition: "SandingBoardA" + duration: 9 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "boardA" + number: 1 + change: "Resource" + size: + length: "" + width: "30" + depth: "30" + - object: "handover" + number: 1 + change: "BoardRA" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "boardA" + number: 4 + change: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + - object: "boardA" + number: 2 + change: "broken" + size: + length: "" + width: "4.32" + depth: "4.24" + duration: 4 + transition: "SandingBoardA" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e3-drilling-bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e3-drilling-bar.yaml new file mode 100644 index 0000000..a726fe6 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e3-drilling-bar.yaml @@ -0,0 +1,48 @@ +kind: datasource +name: "DrillingBarW" +spec: + name: "DrillingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.99, 0.01] + input: + - object: "barW" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "barW" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarW" + duration: 3 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barW" + number: 1 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + duration: 20 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e3a-drilling-bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e3a-drilling-bar.yaml new file mode 100644 index 0000000..a4423de --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e3a-drilling-bar.yaml @@ -0,0 +1,48 @@ +kind: datasource +name: "DrillingBarA" +spec: + name: "DrillingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.99, 0.01] + input: + - object: "barA" + number: 1 + lastState: "divided Resource" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "barA" + number: 1 + change: "drilled" + size: + length: "2" + width: "" + depth: "" + transition: "SandingBarA" + duration: 3 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barA" + number: 1 + change: "divided Resource" + size: + length: "2" + width: "" + depth: "" + duration: 20 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e4-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e4-sanding-Bar.yaml new file mode 100644 index 0000000..5b46039 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e4-sanding-Bar.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBarW" +spec: + name: "SandingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "barW" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "Assembly2" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e4-sanding-Board.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e4-sanding-Board.yaml new file mode 100644 index 0000000..e32bb7d --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e4-sanding-Board.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBoardW" +spec: + name: "SandingBoardW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "boardW" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly1" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e4a-sanding-Bar.yaml new file mode 100644 index 0000000..a6d3bee --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e4a-sanding-Bar.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBarA" +spec: + name: "SandingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 1 + lastState: "drilled" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "barA" + number: 1 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + transition: "Assembly1" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e4a-sanding-Board.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e4a-sanding-Board.yaml new file mode 100644 index 0000000..683a707 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e4a-sanding-Board.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBoardA" +spec: + name: "SandingBoardA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "boardA" + number: 1 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + transition: "Assembly2" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e5-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e5-assembly.yaml new file mode 100644 index 0000000..f27c5d2 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e5-assembly.yaml @@ -0,0 +1,105 @@ +kind: datasource +name: "Assembly1" +spec: + name: "Assembly1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.98, 0.01, 0.01 ] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardW" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw1" + number: 13 + lastState: "" + size: + - object: "pinW" + number: 13 + lastState: "" + size: + - object: "handover" + number: 1 + lastState: "Board" + size: + - object: "handover" + number: 1 + lastState: "BarA" + size: + - object: "handover" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf1" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl1" + - activity: + name: "Failure: Overheating" + output: + - object: "barA" + number: 4 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardW" + number: 6 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw1" + number: 13 + change: "" + size: + - object: "pinW" + number: 13 + change: "" + size: + - object: "handover" + number: 1 + change: "Board" + size: + - object: "handover" + number: 1 + change: "BarA" + size: + - object: "handover" + number: 1 + change: "" + size: + transition: "" + duration: 5 + - activity: + name: "Failure: Item broke" + output: + - object: "shelf1" + number: 1 + change: "broke" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e5a-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e5a-assembly.yaml new file mode 100644 index 0000000..c0e1ab4 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e5a-assembly.yaml @@ -0,0 +1,105 @@ +kind: datasource +name: "Assembly2" +spec: + name: "Assembly2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.98, 0.01, 0.01 ] + input: + - object: "barW" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardA" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw2" + number: 13 + lastState: "" + size: + - object: "pinA" + number: 13 + lastState: "" + size: + - object: "handover" + number: 1 + lastState: "BoardA" + size: + - object: "handover" + number: 1 + lastState: "Bar" + size: + - object: "handover" + number: 1 + lastState: "A" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf2" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl2" + - activity: + name: "Failure: Overheating" + output: + - object: "barW" + number: 4 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "boardA" + number: 6 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "screw2" + number: 13 + change: "" + size: + - object: "pinA" + number: 13 + change: "" + size: + - object: "handover" + number: 1 + change: "BoardA" + size: + - object: "handover" + number: 1 + change: "Bar" + size: + - object: "handover" + number: 1 + change: "A" + size: + transition: "" + duration: 5 + - activity: + name: "Failure: Item broke" + output: + - object: "shelf2" + number: 1 + change: "broke" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e6-quality-control.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e6-quality-control.yaml new file mode 100644 index 0000000..dd8217e --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e6-quality-control.yaml @@ -0,0 +1,46 @@ +kind: datasource +name: "QualityControl1" +spec: + name: "QualityControl1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.8, 0.15, 0.05] + input: + - object: "shelf1" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf1" + number: 1 + change: "proofed" + size: + transition: "Shipping1" + duration: 2 + - activity: + name: "Item Corrections" + output: + - object: "shelf1" + number: 1 + change: "proofed" + size: + transition: "Shipping1" + duration: 12 + - activity: + name: "Failure: Quality Insufficient" + output: + - object: "shelf1" + number: 1 + change: "damaged" + size: + transition: "" + duration: 2 + diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e6a-quality-control.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e6a-quality-control.yaml new file mode 100644 index 0000000..c838db3 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e6a-quality-control.yaml @@ -0,0 +1,47 @@ +kind: datasource +name: "QualityControl2" +spec: + name: "QualityControl2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.8, 0.15, 0.05] + input: + - object: "shelf2" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 2 + - activity: + name: "Item Corrections" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 12 + - activity: + name: "Failure: Quality Insufficient" + output: + - object: "shelf2" + number: 1 + change: "damaged" + size: + transition: "" + duration: 2 + + diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e7-shipping.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e7-shipping.yaml new file mode 100644 index 0000000..d3c6dd3 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e7-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping1" +spec: + name: "Shipping1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf1" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf1" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e7a-shipping.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e7a-shipping.yaml new file mode 100644 index 0000000..94c8670 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/e7a-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping2" +spec: + name: "Shipping2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf2" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/handover.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/handover.yaml new file mode 100644 index 0000000..464f9f4 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/handover.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handover" +spec: + name: "handover" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/order.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/order.yaml new file mode 100644 index 0000000..f0ae6f9 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/order.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order" +spec: + name: "order" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/pinA.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/pinA.yaml new file mode 100644 index 0000000..65266d9 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/pinA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinA" +spec: + name: "pinA" + type: "smallComponent" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/pinW.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/pinW.yaml new file mode 100644 index 0000000..196b594 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/pinW.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinW" +spec: + name: "pinW" + type: "smallComponent" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/resourceOrder.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/resourceOrder.yaml new file mode 100644 index 0000000..435f300 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/resourceOrder.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder" +spec: + name: "resourceOrder" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/routing.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/routing.yaml new file mode 100644 index 0000000..f7e82a6 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/routing.yaml @@ -0,0 +1,44 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "retrieve resources" + start: "ST" + end: "W" + duration: 3 + - routeForActivity: "retrieve resources" + start: "ST" + end: "Al" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "ST" + end: "A" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "W" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "W" + end: "A" + duration: 3 + - routeForActivity: "Back to machine" + start: "A" + end: "W" + duration: 3 + - routeForActivity: "Back to stock" + start: "Al" + end: "ST" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "Al" + end: "A" + duration: 3 + - routeForActivity: "Back to machine" + start: "A" + end: "Al" + duration: 3 \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/screw1.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/screw1.yaml new file mode 100644 index 0000000..5f02ab1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/screw1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw1" +spec: + name: "screw1" + type: "smallComponent" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/screw2.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/screw2.yaml new file mode 100644 index 0000000..3219433 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/screw2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw2" +spec: + name: "screw2" + type: "smallComponent" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/shelf1.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/shelf1.yaml new file mode 100644 index 0000000..ea1a1d8 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/shelf1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf1" +spec: + name: "shelf1" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/shelf2.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/shelf2.yaml new file mode 100644 index 0000000..7115caa --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/shelf2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf2" +spec: + name: "shelf2" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t0A-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t0A-stock-to-machine.yaml new file mode 100644 index 0000000..9733134 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t0A-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMA" +spec: + name: "TransportMA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 2 + lastState: "Resource" + size: + length: "4" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MA" + output: + - object: "barA" + number: 2 + change: "Resource" + size: + length: "4" + width: "" + depth: "" + - object: "handover" + number: 1 + change: "BarRA" + size: + transition: "SawingBarA" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t0BA-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t0BA-stock-to-machine.yaml new file mode 100644 index 0000000..2f71056 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t0BA-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1BA" +spec: + name: "TransportM1BA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 1 + lastState: "Resource" + size: + length: "" + width: "30" + depth: "30" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MA" + output: + - object: "boardA" + number: 1 + change: "Resource" + size: + length: "" + width: "30" + depth: "30" + - object: "handover" + number: 1 + change: "BoardRA" + size: + transition: "SawingBoardA" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t0BW-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t0BW-stock-to-machine.yaml new file mode 100644 index 0000000..4af1e75 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t0BW-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1B" +spec: + name: "TransportM1B" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 1 + lastState: "Resource" + size: + length: "" + width: "30" + depth: "30" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MW" + output: + - object: "boardW" + number: 1 + change: "Resource" + size: + length: "" + width: "30" + depth: "30" + - object: "handover" + number: 1 + change: "BoardR" + size: + transition: "SawingBarW" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t0W-stock-to-machine.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t0W-stock-to-machine.yaml new file mode 100644 index 0000000..0879a64 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t0W-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMW" +spec: + name: "TransportMW" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 2 + lastState: "Resource" + size: + length: "4" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MW" + output: + - object: "barW" + number: 2 + change: "Resource" + size: + length: "4" + width: "" + depth: "" + - object: "handover" + number: 1 + change: "BarR" + size: + transition: "SawingBarW" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1-stock-to-assembly.yaml new file mode 100644 index 0000000..5f1efe1 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1-stock-to-assembly.yaml @@ -0,0 +1,42 @@ +kind: datasource +name: "TransportSA" +spec: + name: "TransportSA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw1" + number: 13 + lastState: "" + size: + - object: "pinW" + number: 13 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> assembly" + output: + - object: "screw1" + number: 13 + change: "" + size: + - object: "pinW" + number: 13 + change: "" + size: + - object: "handover" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1A-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1A-machine-to-assembly.yaml new file mode 100644 index 0000000..6b8f3f8 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1A-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMAlA" +spec: + name: "TransportMAlA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "Al" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MA -> assembly" + output: + - object: "barA" + number: 4 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "handover" + number: 1 + change: "BarA" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1A-stock-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1A-stock-to-assembly.yaml new file mode 100644 index 0000000..87cfa2d --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1A-stock-to-assembly.yaml @@ -0,0 +1,42 @@ +kind: datasource +name: "TransportSAAl" +spec: + name: "TransportSAAl" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "ST" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw2" + number: 13 + lastState: "" + size: + - object: "pinA" + number: 13 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> assembly" + output: + - object: "screw2" + number: 13 + change: "" + size: + - object: "pinA" + number: 13 + change: "" + size: + - object: "handover" + number: 1 + change: "A" + size: + transition: "Assembly" + duration: 2 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1BA-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1BA-machine-to-assembly.yaml new file mode 100644 index 0000000..03e8210 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1BA-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMAlAB" +spec: + name: "TransportMAlAB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "Al" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MAl -> assembly" + output: + - object: "boardA" + number: 6 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "handover" + number: 1 + change: "BoardA" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1BW-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1BW-machine-to-assembly.yaml new file mode 100644 index 0000000..84de2b8 --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1BW-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMWAB" +spec: + name: "TransportMWAB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "W" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 6 + lastState: "sanded" + size: + length: "" + width: "5" + depth: "5" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MW -> assembly" + output: + - object: "boardW" + number: 6 + change: "sanded" + size: + length: "" + width: "5" + depth: "5" + - object: "handover" + number: 1 + change: "Board" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1W-machine-to-assembly.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1W-machine-to-assembly.yaml new file mode 100644 index 0000000..5ec115f --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/t1W-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMWA" +spec: + name: "TransportMWA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R" + start: "W" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 4 + lastState: "sanded" + size: + length: "2" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MW -> assembly" + output: + - object: "barW" + number: 4 + change: "sanded" + size: + length: "2" + width: "" + depth: "" + - object: "handover" + number: 1 + change: "Bar" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/warehouse_stock.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/warehouse_stock.yaml new file mode 100644 index 0000000..18e609c --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/warehouse_stock.yaml @@ -0,0 +1,8 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order" + number: 350 + lastState: "" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/workforces.yaml b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/workforces.yaml new file mode 100644 index 0000000..8bc09fb --- /dev/null +++ b/config/datasource/smart-factory-2P-withWF-withDefects-by-demand/workforces.yaml @@ -0,0 +1,13 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "transportRobot" + startLocation: "ST" + number: 3 + - name: "machineWorker" + startLocation: "W" + number: 2 + - name: "machineWorker" + startLocation: "Al" + number: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/barA-resource.yaml b/config/datasource/smart-factory-original-scenario-V2/barA-resource.yaml new file mode 100644 index 0000000..4cd74a5 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/barA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barAResource" +spec: + name: "barAResource" + type: "bar" + size: + length: "500" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/barA.yaml b/config/datasource/smart-factory-original-scenario-V2/barA.yaml new file mode 100644 index 0000000..fd90873 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/barA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barA" +spec: + name: "barA" + type: "bar" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/barW-resource.yaml b/config/datasource/smart-factory-original-scenario-V2/barW-resource.yaml new file mode 100644 index 0000000..0cc2b3f --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/barW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barWResource" +spec: + name: "barWResource" + type: "bar" + size: + length: "500" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/barW.yaml b/config/datasource/smart-factory-original-scenario-V2/barW.yaml new file mode 100644 index 0000000..fa2d6b8 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/barW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "barW" +spec: + name: "barW" + type: "bar" + size: + length: "2" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/boardA-resource.yaml b/config/datasource/smart-factory-original-scenario-V2/boardA-resource.yaml new file mode 100644 index 0000000..34b198b --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/boardA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardAResource" +spec: + name: "boardAResource" + type: "board" + size: + length: "" + width: "500" + depth: "500" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/boardA.yaml b/config/datasource/smart-factory-original-scenario-V2/boardA.yaml new file mode 100644 index 0000000..8a08496 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/boardA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardA" +spec: + name: "boardA" + type: "board" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/boardW-resource.yaml b/config/datasource/smart-factory-original-scenario-V2/boardW-resource.yaml new file mode 100644 index 0000000..487703a --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/boardW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardWResource" +spec: + name: "boardWResource" + type: "board" + size: + length: "" + width: "500" + depth: "500" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/boardW.yaml b/config/datasource/smart-factory-original-scenario-V2/boardW.yaml new file mode 100644 index 0000000..0e97666 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/boardW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "boardW" +spec: + name: "boardW" + type: "board" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/crossA-resource.yaml b/config/datasource/smart-factory-original-scenario-V2/crossA-resource.yaml new file mode 100644 index 0000000..5ad0f43 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/crossA-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "crossAResource" +spec: + name: "crossAResource" + type: "cross" + size: + length: "500" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/crossA.yaml b/config/datasource/smart-factory-original-scenario-V2/crossA.yaml new file mode 100644 index 0000000..c51eca1 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/crossA.yaml @@ -0,0 +1,9 @@ +kind: object +name: "crossA" +spec: + name: "crossA" + type: "cross" + size: + length: "500" + width: "" + depth: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/crossW-resource.yaml b/config/datasource/smart-factory-original-scenario-V2/crossW-resource.yaml new file mode 100644 index 0000000..c6a13d6 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/crossW-resource.yaml @@ -0,0 +1,9 @@ +kind: object +name: "crossWResource" +spec: + name: "crossWResource" + type: "cross" + size: + length: "500" + width: + depth: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/crossW.yaml b/config/datasource/smart-factory-original-scenario-V2/crossW.yaml new file mode 100644 index 0000000..64b2b43 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/crossW.yaml @@ -0,0 +1,9 @@ +kind: object +name: "crossW" +spec: + name: "crossW" + type: "cross" + size: + length: + width: "5" + depth: "5" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/e-buying resources.yaml b/config/datasource/smart-factory-original-scenario-V2/e-buying resources.yaml new file mode 100644 index 0000000..68c1b45 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e-buying resources.yaml @@ -0,0 +1,89 @@ +kind: datasource +name: "ResourceDelivery" +spec: + name: "ResourceDelivery" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "RD" + end: "RD" + workstation: "RD" + selection: genericProbability + distribution: [1.0] + input: + - object: "order1" + number: 1 + lastState: "" + size: + - object: "orderBuyResource" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "order1" + number: 1 + change: "" + size: + - object: "barAResource" + number: 150 + change: "" + size: + length: "500" + width: "" + depth: "" + - object: "barWResource" + number: 150 + change: "" + size: + length: "500" + width: "" + depth: "" + - object: "boardAResource" + number: 150 + change: "" + size: + length: "" + width: "500" + depth: "500" + - object: "boardWResource" + number: 150 + change: "" + size: + length: "" + width: "500" + depth: "500" + - object: "crossAResource" + number: 150 + change: "" + size: + length: "500" + width: "" + depth: "" + - object: "crossWResource" + number: 150 + change: "" + size: + length: "500" + width: "" + depth: "" + - object: "pinA" + number: 150 + change: "" + size: + - object: "pinW" + number: 150 + change: "" + size: + - object: "screw1" + number: 150 + change: "" + size: + - object: "screw2" + number: 150 + change: "" + size: + transition: "" + duration: 10 diff --git a/config/datasource/smart-factory-original-scenario-V2/e0-order.yaml b/config/datasource/smart-factory-original-scenario-V2/e0-order.yaml new file mode 100644 index 0000000..4242fc2 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e0-order.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "OrderPlacement" +spec: + name: "OrderPlacement" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [0.7, 0.3] + input: + - object: "order1" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder1" + number: 1 + change: "" + size: + transition: "" + duration: 0 + - activity: + name: "buying resources" + output: + - object: "order1" + number: 1 + change: "" + size: + - object: "orderBuyResource" + number: 1 + change: "" + size: + transition: "ResourceDelivery" + duration: 20 diff --git a/config/datasource/smart-factory-original-scenario-V2/e0a-order.yaml b/config/datasource/smart-factory-original-scenario-V2/e0a-order.yaml new file mode 100644 index 0000000..b6cf030 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e0a-order.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "OrderPlacementA" +spec: + name: "OrderPlacementA" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "O" + end: "O" + workstation: "O" + selection: genericProbability + distribution: [0.7, 0.3] + input: + - object: "order2" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "order for resources" + output: + - object: "resourceOrder2" + number: 1 + change: "" + size: + transition: "" + duration: 0 + - activity: + name: "buying resources" + output: + - object: "order1" + number: 1 + change: "" + size: + - object: "orderBuyResource" + number: 1 + change: "" + size: + transition: "ResourceDelivery" + duration: 20 diff --git a/config/datasource/smart-factory-original-scenario-V2/e2-sawing-barCross.yaml b/config/datasource/smart-factory-original-scenario-V2/e2-sawing-barCross.yaml new file mode 100644 index 0000000..1845b4f --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e2-sawing-barCross.yaml @@ -0,0 +1,110 @@ +kind: datasource +name: "SawingBarW" +spec: + name: "SawingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "barWResource" + number: 1 + lastState: "" + size: + length: "200" + width: "" + depth: "" + - object: "crossWResource" + number: 1 + lastState: "" + size: + length: "160" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "barW" + number: 4 + change: "divided Resource" + size: + length: "50" + width: "" + depth: "" + - object: "crossW" + number: 6 + change: "divided Resource" + size: + length: "20" + width: "" + depth: "" + transition: "" + duration: 8 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barWResource" + number: 1 + change: "" + size: + length: "200" + width: "" + depth: "" + - object: "crossWResource" + number: 1 + change: "" + size: + length: "160" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "barW" + number: 3 + change: "divided Resource" + size: + length: "50" + width: "" + depth: "" + - object: "crossW" + number: 4 + change: "divided Resource" + size: + length: "20" + width: "" + depth: "" + - object: "barW" + number: 1 + change: "broken" + size: + length: "41.25" + width: "" + depth: "" + - object: "crossW" + number: 2 + change: "broken" + size: + length: "17.5" + width: "" + depth: "" + duration: 8 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/e2-sawing-board.yaml b/config/datasource/smart-factory-original-scenario-V2/e2-sawing-board.yaml new file mode 100644 index 0000000..501b7c5 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e2-sawing-board.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBoardW" +spec: + name: "SawingBoardW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "boardWResource" + number: 1 + lastState: "" + size: + length: "" + width: "200" + depth: "150" + - object: "handoverBoardR" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "boardW" + number: 5 + change: "divided Resource" + size: + length: "" + width: "40" + depth: "30" + transition: "" + duration: 9 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "200" + depth: "150" + - object: "handoverBoardR" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "boardW" + number: 4 + change: "divided Resource" + size: + length: "" + width: "40" + depth: "30" + - object: "boardW" + number: 1 + change: "broken" + size: + length: "" + width: "35.32" + depth: "25.24" + duration: 4 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/e2a-sawing-barCross.yaml b/config/datasource/smart-factory-original-scenario-V2/e2a-sawing-barCross.yaml new file mode 100644 index 0000000..2053ccc --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e2a-sawing-barCross.yaml @@ -0,0 +1,110 @@ +kind: datasource +name: "SawingBarA" +spec: + name: "SawingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "barAResource" + number: 2 + lastState: "" + size: + length: "360" + width: "" + depth: "" + - object: "crossAResource" + number: 3 + lastState: "" + size: + length: "380" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "barA" + number: 4 + change: "divided Resource" + size: + length: "180" + width: "" + depth: "" + - object: "crossA" + number: 6 + change: "divided Resource" + size: + length: "190" + width: "" + depth: "" + transition: "" + duration: 8 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "360" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + change: "" + size: + - object: "crossAResource" + number: 3 + change: "" + size: + length: "380" + width: "" + depth: "" + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "barA" + number: 3 + change: "divided Resource" + size: + length: "180" + width: "" + depth: "" + - object: "barA" + number: 1 + change: "broken" + size: + length: "179.25" + width: "" + depth: "" + - object: "crossA" + number: 5 + change: "divided Resource" + size: + length: "190" + width: "" + depth: "" + - object: "crossA" + number: 1 + change: "broken" + size: + length: "189.25" + width: "" + depth: "" + duration: 8 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/e2a-sawing-board.yaml b/config/datasource/smart-factory-original-scenario-V2/e2a-sawing-board.yaml new file mode 100644 index 0000000..8f49d4f --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e2a-sawing-board.yaml @@ -0,0 +1,75 @@ +kind: datasource +name: "SawingBoardA" +spec: + name: "SawingBoardA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.97, 0.01, 0.02] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "60" + depth: "60" + - object: "handoverBoardRA" + number: 1 + lastState: "" + size: + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sawed" + output: + - object: "boardA" + number: 3 + change: "divided Resource" + size: + length: "" + width: "20" + depth: "20" + transition: "" + duration: 9 + - activity: + name: "Failure: Sawing machine broken" + output: + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "60" + depth: "60" + - object: "handoverBoardRA" + number: 1 + change: "" + size: + duration: 20 + transition: "" + - activity: + name: "Failure: One piece broken" + output: + - object: "boardA" + number: 2 + change: "divided Resource" + size: + length: "" + width: "20" + depth: "20" + - object: "boardA" + number: 1 + change: "broken" + size: + length: "" + width: "19.32" + depth: "14.24" + duration: 4 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/e3-drilling-bar.yaml b/config/datasource/smart-factory-original-scenario-V2/e3-drilling-bar.yaml new file mode 100644 index 0000000..3397729 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e3-drilling-bar.yaml @@ -0,0 +1,48 @@ +kind: datasource +name: "DrillingBarW" +spec: + name: "DrillingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [0.99, 0.01] + input: + - object: "barW" + number: 1 + lastState: "divided Resource" + size: + length: "50" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "barW" + number: 1 + change: "drilled" + size: + length: "50" + width: "" + depth: "" + transition: "" + duration: 3 + - activity: + name: "Failure: Drilling machine broken" + output: + - object: "barW" + number: 1 + change: "divided Resource" + size: + length: "50" + width: "" + depth: "" + duration: 20 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/e3a-drilling-bar.yaml b/config/datasource/smart-factory-original-scenario-V2/e3a-drilling-bar.yaml new file mode 100644 index 0000000..0e109a1 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e3a-drilling-bar.yaml @@ -0,0 +1,48 @@ +kind: datasource +name: "DrillingBarA" +spec: + name: "DrillingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.99, 0.01] + input: + - object: "barA" + number: 1 + lastState: "divided Resource" + size: + length: "180" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "barA" + number: 1 + change: "drilled" + size: + length: "180" + width: "" + depth: "" + transition: "" + duration: 3 + - activity: + name: "Failure: Drilling machine broken" + output: + - object: "barA" + number: 1 + change: "divided Resource" + size: + length: "180" + width: "" + depth: "" + duration: 20 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/e3a-drilling-cross.yaml b/config/datasource/smart-factory-original-scenario-V2/e3a-drilling-cross.yaml new file mode 100644 index 0000000..ed917da --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e3a-drilling-cross.yaml @@ -0,0 +1,48 @@ +kind: datasource +name: "DrillingBarC" +spec: + name: "DrillingBarC" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [0.99, 0.01] + input: + - object: "crossA" + number: 1 + lastState: "divided Resource" + size: + length: "190" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Drilled" + output: + - object: "crossA" + number: 1 + change: "drilled" + size: + length: "190" + width: "" + depth: "" + transition: "" + duration: 3 + - activity: + name: "Failure: Drilling machine broken" + output: + - object: "crossA" + number: 1 + change: "divided Resource" + size: + length: "190" + width: "" + depth: "" + duration: 20 + transition: "" \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/e4-sanding-Bar.yaml b/config/datasource/smart-factory-original-scenario-V2/e4-sanding-Bar.yaml new file mode 100644 index 0000000..8cf5c2c --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e4-sanding-Bar.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBarW" +spec: + name: "SandingBarW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 1 + lastState: "drilled" + size: + length: "50" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "barW" + number: 1 + change: "sanded" + size: + length: "50" + width: "" + depth: "" + transition: "" + duration: 2 diff --git a/config/datasource/smart-factory-original-scenario-V2/e4-sanding-Board.yaml b/config/datasource/smart-factory-original-scenario-V2/e4-sanding-Board.yaml new file mode 100644 index 0000000..8beba5b --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e4-sanding-Board.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBoardW" +spec: + name: "SandingBoardW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "40" + depth: "30" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "boardW" + number: 1 + change: "sanded" + size: + length: "" + width: "40" + depth: "30" + transition: "Assembly1" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/e4-sanding-Cross.yaml b/config/datasource/smart-factory-original-scenario-V2/e4-sanding-Cross.yaml new file mode 100644 index 0000000..aec3593 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e4-sanding-Cross.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingCrossW" +spec: + name: "SandingCrossW" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "W" + end: "W" + workstation: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "crossW" + number: 1 + lastState: "divided Resource" + size: + length: "20" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "crossW" + number: 1 + change: "sanded" + size: + length: "20" + width: "" + depth: "" + transition: "" + duration: 2 diff --git a/config/datasource/smart-factory-original-scenario-V2/e4a-sanding-Bar.yaml b/config/datasource/smart-factory-original-scenario-V2/e4a-sanding-Bar.yaml new file mode 100644 index 0000000..1d6d0b3 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e4a-sanding-Bar.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBarA" +spec: + name: "SandingBarA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 1 + lastState: "drilled" + size: + length: "180" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "barA" + number: 1 + change: "sanded" + size: + length: "180" + width: "" + depth: "" + transition: "" + duration: 2 diff --git a/config/datasource/smart-factory-original-scenario-V2/e4a-sanding-Board.yaml b/config/datasource/smart-factory-original-scenario-V2/e4a-sanding-Board.yaml new file mode 100644 index 0000000..fbf22a2 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e4a-sanding-Board.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingBoardA" +spec: + name: "SandingBoardA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 1 + lastState: "divided Resource" + size: + length: "" + width: "20" + depth: "20" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "boardA" + number: 1 + change: "sanded" + size: + length: "" + width: "20" + depth: "20" + transition: "" + duration: 2 \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/e4a-sanding-Cross.yaml b/config/datasource/smart-factory-original-scenario-V2/e4a-sanding-Cross.yaml new file mode 100644 index 0000000..dfaa658 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e4a-sanding-Cross.yaml @@ -0,0 +1,36 @@ +kind: datasource +name: "SandingCrossA" +spec: + name: "SandingCrossA" + group: "factory" + type: objectCentric + workforce: hasWorkforce + start: "Al" + end: "Al" + workstation: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "crossA" + number: 1 + lastState: "drilled" + size: + length: "190" + width: "" + depth: "" + workforces: + - workforce: "machineWorker" + number: 1 + eventData: + - activity: + name: "Sanded" + output: + - object: "crossA" + number: 1 + change: "sanded" + size: + length: "190" + width: "" + depth: "" + transition: "" + duration: 2 diff --git a/config/datasource/smart-factory-original-scenario-V2/e5-assembly.yaml b/config/datasource/smart-factory-original-scenario-V2/e5-assembly.yaml new file mode 100644 index 0000000..c8c36e2 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e5-assembly.yaml @@ -0,0 +1,82 @@ +kind: datasource +name: "Assembly1" +spec: + name: "Assembly1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.94, 0.03, 0.03 ] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "180" + width: "" + depth: "" + - object: "crossA" + number: 6 + lastState: "sanded" + size: + length: "190" + width: "" + depth: "" + - object: "boardW" + number: 5 + lastState: "sanded" + size: + length: "" + width: "40" + depth: "30" + - object: "screw1" + number: 15 + lastState: "" + size: + - object: "pinW" + number: 20 + lastState: "" + size: + - object: "handoverBoard" + number: 1 + lastState: "" + size: + - object: "handoverBarA" + number: 1 + lastState: "" + size: + - object: "handover" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf1" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl1" + - activity: + name: "Failure: Overheating" + output: + - object: "shelf1" + number: 1 + change: "overheated" + size: + transition: "" + duration: 2 + - activity: + name: "Failure: Item broke" + output: + - object: "shelf1" + number: 1 + change: "broke" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/e5a-assembly.yaml b/config/datasource/smart-factory-original-scenario-V2/e5a-assembly.yaml new file mode 100644 index 0000000..d2f0317 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e5a-assembly.yaml @@ -0,0 +1,82 @@ +kind: datasource +name: "Assembly2" +spec: + name: "Assembly2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.94, 0.03, 0.03 ] + input: + - object: "barW" + number: 4 + lastState: "sanded" + size: + length: "50" + width: "" + depth: "" + - object: "crossW" + number: 4 + lastState: "sanded" + size: + length: "20" + width: "" + depth: "" + - object: "boardA" + number: 3 + lastState: "sanded" + size: + length: "" + width: "20" + depth: "20" + - object: "screw2" + number: 8 + lastState: "" + size: + - object: "pinA" + number: 24 + lastState: "" + size: + - object: "handoverBoardA" + number: 1 + lastState: "" + size: + - object: "handoverBar" + number: 1 + lastState: "" + size: + - object: "handoverA" + number: 1 + lastState: "" + size: + eventData: + - activity: + name: "Assembling completed" + output: + - object: "shelf2" + number: 1 + change: "assembled" + size: + duration: 15 + transition: "QualityControl2" + - activity: + name: "Failure: Overheating" + output: + - object: "shelf2" + number: 1 + change: "overheated" + size: + transition: "" + duration: 2 + - activity: + name: "Failure: Item broke" + output: + - object: "shelf2" + number: 1 + change: "broke" + size: + transition: "" + duration: 1 \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/e6-quality-control.yaml b/config/datasource/smart-factory-original-scenario-V2/e6-quality-control.yaml new file mode 100644 index 0000000..dd8217e --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e6-quality-control.yaml @@ -0,0 +1,46 @@ +kind: datasource +name: "QualityControl1" +spec: + name: "QualityControl1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.8, 0.15, 0.05] + input: + - object: "shelf1" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf1" + number: 1 + change: "proofed" + size: + transition: "Shipping1" + duration: 2 + - activity: + name: "Item Corrections" + output: + - object: "shelf1" + number: 1 + change: "proofed" + size: + transition: "Shipping1" + duration: 12 + - activity: + name: "Failure: Quality Insufficient" + output: + - object: "shelf1" + number: 1 + change: "damaged" + size: + transition: "" + duration: 2 + diff --git a/config/datasource/smart-factory-original-scenario-V2/e6a-quality-control.yaml b/config/datasource/smart-factory-original-scenario-V2/e6a-quality-control.yaml new file mode 100644 index 0000000..c838db3 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e6a-quality-control.yaml @@ -0,0 +1,47 @@ +kind: datasource +name: "QualityControl2" +spec: + name: "QualityControl2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "A" + end: "A" + workstation: "A" + selection: genericProbability + distribution: [ 0.8, 0.15, 0.05] + input: + - object: "shelf2" + number: 1 + lastState: "assembled" + size: + eventData: + - activity: + name: "Quality check passed" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 2 + - activity: + name: "Item Corrections" + output: + - object: "shelf2" + number: 1 + change: "proofed" + size: + transition: "Shipping2" + duration: 12 + - activity: + name: "Failure: Quality Insufficient" + output: + - object: "shelf2" + number: 1 + change: "damaged" + size: + transition: "" + duration: 2 + + diff --git a/config/datasource/smart-factory-original-scenario-V2/e7-shipping.yaml b/config/datasource/smart-factory-original-scenario-V2/e7-shipping.yaml new file mode 100644 index 0000000..d3c6dd3 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e7-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping1" +spec: + name: "Shipping1" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf1" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf1" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/e7a-shipping.yaml b/config/datasource/smart-factory-original-scenario-V2/e7a-shipping.yaml new file mode 100644 index 0000000..94c8670 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/e7a-shipping.yaml @@ -0,0 +1,27 @@ +kind: datasource +name: "Shipping2" +spec: + name: "Shipping2" + group: "factory" + type: objectCentric + workforce: noWorkforce + start: "S" + end: "S" + workstation: "S" + selection: genericProbability + distribution: [ 1.0 ] + input: + - object: "shelf2" + number: 1 + lastState: "proofed" + size: + eventData: + - activity: + name: "Package sent" + output: + - object: "shelf2" + number: 1 + change: "sent" + size: + transition: "" + duration: 5 \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/handover.yaml b/config/datasource/smart-factory-original-scenario-V2/handover.yaml new file mode 100644 index 0000000..464f9f4 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/handover.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handover" +spec: + name: "handover" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/handoverA.yaml b/config/datasource/smart-factory-original-scenario-V2/handoverA.yaml new file mode 100644 index 0000000..93d6148 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/handoverA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverA" +spec: + name: "handoverA" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/handoverBar.yaml b/config/datasource/smart-factory-original-scenario-V2/handoverBar.yaml new file mode 100644 index 0000000..3c86a7f --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/handoverBar.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBar" +spec: + name: "handoverBar" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/handoverBarA.yaml b/config/datasource/smart-factory-original-scenario-V2/handoverBarA.yaml new file mode 100644 index 0000000..3264eb1 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/handoverBarA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarA" +spec: + name: "handoverBarA" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/handoverBarR.yaml b/config/datasource/smart-factory-original-scenario-V2/handoverBarR.yaml new file mode 100644 index 0000000..2caa392 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/handoverBarR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarR" +spec: + name: "handoverBarR" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/handoverBarRA.yaml b/config/datasource/smart-factory-original-scenario-V2/handoverBarRA.yaml new file mode 100644 index 0000000..f8a3414 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/handoverBarRA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBarRA" +spec: + name: "handoverBarRA" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/handoverBoard.yaml b/config/datasource/smart-factory-original-scenario-V2/handoverBoard.yaml new file mode 100644 index 0000000..a0c39c4 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/handoverBoard.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoard" +spec: + name: "handoverBoard" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/handoverBoardA.yaml b/config/datasource/smart-factory-original-scenario-V2/handoverBoardA.yaml new file mode 100644 index 0000000..d964b65 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/handoverBoardA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardA" +spec: + name: "handoverBoardA" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/handoverBoardR.yaml b/config/datasource/smart-factory-original-scenario-V2/handoverBoardR.yaml new file mode 100644 index 0000000..d102fea --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/handoverBoardR.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardR" +spec: + name: "handoverBoardR" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/handoverBoardRA.yaml b/config/datasource/smart-factory-original-scenario-V2/handoverBoardRA.yaml new file mode 100644 index 0000000..83aab47 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/handoverBoardRA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "handoverBoardRA" +spec: + name: "handoverBoardRA" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/order1.yaml b/config/datasource/smart-factory-original-scenario-V2/order1.yaml new file mode 100644 index 0000000..bcaf45f --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/order1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order1" +spec: + name: "order1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/order2.yaml b/config/datasource/smart-factory-original-scenario-V2/order2.yaml new file mode 100644 index 0000000..dbc0dcf --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/order2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "order2" +spec: + name: "order2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/orderBuyResource.yaml b/config/datasource/smart-factory-original-scenario-V2/orderBuyResource.yaml new file mode 100644 index 0000000..6d10ccb --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/orderBuyResource.yaml @@ -0,0 +1,6 @@ +kind: object +name: "orderBuyResource" +spec: + name: "orderBuyResource" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/pinA.yaml b/config/datasource/smart-factory-original-scenario-V2/pinA.yaml new file mode 100644 index 0000000..3aeb0fc --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/pinA.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinA" +spec: + name: "pinA" + type: "pin" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/pinW.yaml b/config/datasource/smart-factory-original-scenario-V2/pinW.yaml new file mode 100644 index 0000000..6aa9c5a --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/pinW.yaml @@ -0,0 +1,6 @@ +kind: object +name: "pinW" +spec: + name: "pinW" + type: "pin" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/resourceOrder1.yaml b/config/datasource/smart-factory-original-scenario-V2/resourceOrder1.yaml new file mode 100644 index 0000000..be67937 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/resourceOrder1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder1" +spec: + name: "resourceOrder1" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/resourceOrder2.yaml b/config/datasource/smart-factory-original-scenario-V2/resourceOrder2.yaml new file mode 100644 index 0000000..7fcf9c4 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/resourceOrder2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "resourceOrder2" +spec: + name: "resourceOrder2" + type: "order" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/routing.yaml b/config/datasource/smart-factory-original-scenario-V2/routing.yaml new file mode 100644 index 0000000..e0d2c31 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/routing.yaml @@ -0,0 +1,96 @@ +kind: route +name: "default" +spec: + routes: + - routeForActivity: "Warehouse AL to wood" + start: "STA" + end: "W" + duration: 10 + - routeForActivity: "Warehouse Wood to wood" + start: "STW" + end: "W" + duration: 1 + - routeForActivity: "Warehouse Small to wood" + start: "STS" + end: "W" + duration: 2 + - routeForActivity: "retrieve resources" + start: "STA" + end: "Al" + duration: 1 + - routeForActivity: "retrieve resources" + start: "STW" + end: "Al" + duration: 10 + - routeForActivity: "retrieve resources" + start: "STS" + end: "Al" + duration: 2 + - routeForActivity: "Sent to assembly station" + start: "STA" + end: "A" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "STW" + end: "A" + duration: 3 + - routeForActivity: "Sent to assembly station" + start: "STS" + end: "A" + duration: 2 + - routeForActivity: "Back to stock" + start: "A" + end: "ST" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "STA" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "STW" + duration: 3 + - routeForActivity: "Back to stock" + start: "A" + end: "STS" + duration: 2 + - routeForActivity: "Back to stock" + start: "W" + end: "STW" + duration: 1 + - routeForActivity: "Back to stock" + start: "W" + end: "STA" + duration: 10 + - routeForActivity: "Back to stock" + start: "W" + end: "STS" + duration: 2 + - routeForActivity: "Back to stock" + start: "Al" + end: "STW" + duration: 10 + - routeForActivity: "Back to stock" + start: "Al" + end: "STA" + duration: 1 + - routeForActivity: "Back to stock" + start: "Al" + end: "STS" + duration: 2 + - routeForActivity: "Sent to assembly station" + start: "W" + end: "A" + duration: 1 + - routeForActivity: "Back to machine" + start: "A" + end: "W" + duration: 1 + - routeForActivity: "Sent to assembly station" + start: "Al" + end: "A" + duration: 1 + - routeForActivity: "Back to machine" + start: "A" + end: "Al" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario-V2/screw1.yaml b/config/datasource/smart-factory-original-scenario-V2/screw1.yaml new file mode 100644 index 0000000..5832a3c --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/screw1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw1" +spec: + name: "screw1" + type: "screw" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/screw2.yaml b/config/datasource/smart-factory-original-scenario-V2/screw2.yaml new file mode 100644 index 0000000..564a295 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/screw2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "screw2" +spec: + name: "screw2" + type: "screw" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/shelf1.yaml b/config/datasource/smart-factory-original-scenario-V2/shelf1.yaml new file mode 100644 index 0000000..ea1a1d8 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/shelf1.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf1" +spec: + name: "shelf1" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/shelf2.yaml b/config/datasource/smart-factory-original-scenario-V2/shelf2.yaml new file mode 100644 index 0000000..7115caa --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/shelf2.yaml @@ -0,0 +1,6 @@ +kind: object +name: "shelf2" +spec: + name: "shelf2" + type: "product" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/t0A-stock-to-machine.yaml b/config/datasource/smart-factory-original-scenario-V2/t0A-stock-to-machine.yaml new file mode 100644 index 0000000..96ecd74 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/t0A-stock-to-machine.yaml @@ -0,0 +1,54 @@ +kind: datasource +name: "TransportMA" +spec: + name: "TransportMA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R1" + start: "STA" + end: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "barAResource" + number: 2 + lastState: "" + size: + length: "360" + width: "" + depth: "" + - object: "crossAResource" + number: 3 + lastState: "" + size: + length: "380" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MA" + output: + - object: "barAResource" + number: 2 + change: "" + size: + length: "360" + width: "" + depth: "" + - object: "crossAResource" + number: 3 + change: "" + size: + length: "380" + width: "" + depth: "" + - object: "handoverBarRA" + number: 1 + change: "" + size: + transition: "SawingBarA" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario-V2/t0BA-stock-to-machine.yaml b/config/datasource/smart-factory-original-scenario-V2/t0BA-stock-to-machine.yaml new file mode 100644 index 0000000..880c05d --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/t0BA-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1BA" +spec: + name: "TransportM1BA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R2" + start: "STA" + end: "Al" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardAResource" + number: 1 + lastState: "" + size: + length: "" + width: "60" + depth: "60" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MA" + output: + - object: "boardAResource" + number: 1 + change: "" + size: + length: "" + width: "60" + depth: "60" + - object: "handoverBoardRA" + number: 1 + change: "" + size: + transition: "SawingBoardA" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario-V2/t0BW-stock-to-machine.yaml b/config/datasource/smart-factory-original-scenario-V2/t0BW-stock-to-machine.yaml new file mode 100644 index 0000000..3e114ef --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/t0BW-stock-to-machine.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportM1B" +spec: + name: "TransportM1B" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R3" + start: "STW" + end: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardWResource" + number: 1 + lastState: "" + size: + length: "" + width: "200" + depth: "150" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MW" + output: + - object: "boardWResource" + number: 1 + change: "" + size: + length: "" + width: "200" + depth: "150" + - object: "handoverBoardR" + number: 1 + change: "" + size: + transition: "SawingBarW" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario-V2/t0W-stock-to-machine.yaml b/config/datasource/smart-factory-original-scenario-V2/t0W-stock-to-machine.yaml new file mode 100644 index 0000000..acdefe3 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/t0W-stock-to-machine.yaml @@ -0,0 +1,54 @@ +kind: datasource +name: "TransportMW" +spec: + name: "TransportMW" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R4" + start: "STW" + end: "W" + selection: genericProbability + distribution: [1.0] + input: + - object: "barWResource" + number: 1 + lastState: "" + size: + length: "200" + width: "" + depth: "" + - object: "crossWResource" + number: 1 + lastState: "" + size: + length: "160" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> MW" + output: + - object: "barWResource" + number: 1 + change: "" + size: + length: "200" + width: "" + depth: "" + - object: "crossWResource" + number: 1 + change: "" + size: + length: "160" + width: "" + depth: "" + - object: "handoverBarR" + number: 1 + change: "" + size: + transition: "SawingBarW" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario-V2/t1-stock-to-assembly.yaml b/config/datasource/smart-factory-original-scenario-V2/t1-stock-to-assembly.yaml new file mode 100644 index 0000000..e9481fa --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/t1-stock-to-assembly.yaml @@ -0,0 +1,42 @@ +kind: datasource +name: "TransportSA" +spec: + name: "TransportSA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R5" + start: "STS" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw1" + number: 15 + lastState: "" + size: + - object: "pinW" + number: 20 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> assembly" + output: + - object: "screw1" + number: 15 + change: "" + size: + - object: "pinW" + number: 20 + change: "" + size: + - object: "handover" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 2 diff --git a/config/datasource/smart-factory-original-scenario-V2/t1A-machine-to-assembly.yaml b/config/datasource/smart-factory-original-scenario-V2/t1A-machine-to-assembly.yaml new file mode 100644 index 0000000..e8afa44 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/t1A-machine-to-assembly.yaml @@ -0,0 +1,54 @@ +kind: datasource +name: "TransportMAlA" +spec: + name: "TransportMAlA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R6" + start: "Al" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barA" + number: 4 + lastState: "sanded" + size: + length: "180" + width: "" + depth: "" + - object: "crossA" + number: 6 + lastState: "sanded" + size: + length: "190" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MA -> assembly" + output: + - object: "barA" + number: 4 + change: "sanded" + size: + length: "180" + width: "" + depth: "" + - object: "crossA" + number: 6 + change: "sanded" + size: + length: "190" + width: "" + depth: "" + - object: "handoverBarA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario-V2/t1A-stock-to-assembly.yaml b/config/datasource/smart-factory-original-scenario-V2/t1A-stock-to-assembly.yaml new file mode 100644 index 0000000..dcfa6b7 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/t1A-stock-to-assembly.yaml @@ -0,0 +1,42 @@ +kind: datasource +name: "TransportSAAl" +spec: + name: "TransportSAAl" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R7" + start: "ST" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "screw2" + number: 8 + lastState: "" + size: + - object: "pinA" + number: 24 + lastState: "" + size: + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: stock -> assembly" + output: + - object: "screw2" + number: 8 + change: "" + size: + - object: "pinA" + number: 24 + change: "" + size: + - object: "handoverA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 2 diff --git a/config/datasource/smart-factory-original-scenario-V2/t1BA-machine-to-assembly.yaml b/config/datasource/smart-factory-original-scenario-V2/t1BA-machine-to-assembly.yaml new file mode 100644 index 0000000..c201519 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/t1BA-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMAlAB" +spec: + name: "TransportMAlAB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R8" + start: "Al" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardA" + number: 3 + lastState: "sanded" + size: + length: "" + width: "20" + depth: "20" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MAl -> assembly" + output: + - object: "boardA" + number: 3 + change: "sanded" + size: + length: "" + width: "20" + depth: "20" + - object: "handoverBoardA" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario-V2/t1BW-machine-to-assembly.yaml b/config/datasource/smart-factory-original-scenario-V2/t1BW-machine-to-assembly.yaml new file mode 100644 index 0000000..94b9366 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/t1BW-machine-to-assembly.yaml @@ -0,0 +1,40 @@ +kind: datasource +name: "TransportMWAB" +spec: + name: "TransportMWAB" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R9" + start: "W" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "boardW" + number: 5 + lastState: "sanded" + size: + length: "" + width: "40" + depth: "30" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MW -> assembly" + output: + - object: "boardW" + number: 5 + change: "sanded" + size: + length: "" + width: "40" + depth: "30" + - object: "handoverBoard" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario-V2/t1W-machine-to-assembly.yaml b/config/datasource/smart-factory-original-scenario-V2/t1W-machine-to-assembly.yaml new file mode 100644 index 0000000..480386a --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/t1W-machine-to-assembly.yaml @@ -0,0 +1,54 @@ +kind: datasource +name: "TransportMWA" +spec: + name: "TransportMWA" + group: "transport" + type: objectCentric + workforce: hasWorkforce + workstation: "R10" + start: "W" + end: "A" + selection: genericProbability + distribution: [1.0] + input: + - object: "barW" + number: 4 + lastState: "sanded" + size: + length: "50" + width: "" + depth: "" + - object: "crossW" + number: 4 + lastState: "sanded" + size: + length: "20" + width: "" + depth: "" + workforces: + - workforce: "transportRobot" + number: 1 + eventData: + - activity: + name: "transport: MW -> assembly" + output: + - object: "barW" + number: 4 + change: "sanded" + size: + length: "50" + width: "" + depth: "" + - object: "crossW" + number: 4 + change: "sanded" + size: + length: "20" + width: "" + depth: "" + - object: "handoverBar" + number: 1 + change: "" + size: + transition: "Assembly" + duration: 1 diff --git a/config/datasource/smart-factory-original-scenario-V2/warehouse_stock.yaml b/config/datasource/smart-factory-original-scenario-V2/warehouse_stock.yaml new file mode 100644 index 0000000..09d1f79 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/warehouse_stock.yaml @@ -0,0 +1,70 @@ +kind: stock +name: "default" +spec: + stocks: + - object: "order1" + number: 1000 + lastState: + size: + - object: "order2" + number: 1000 + lastState: + size: + - object: "barAResource" + number: 150 + lastState: "" + size: + length: "500" + width: "" + depth: "" + - object: "barWResource" + number: 150 + lastState: "" + size: + length: "500" + width: "" + depth: "" + - object: "boardAResource" + number: 150 + lastState: "" + size: + length: "" + width: "500" + depth: "500" + - object: "boardWResource" + number: 150 + lastState: "" + size: + length: "" + width: "500" + depth: "500" + - object: "crossAResource" + number: 150 + lastState: "" + size: + length: "500" + width: "" + depth: "" + - object: "crossWResource" + number: 150 + lastState: "" + size: + length: "500" + width: "" + depth: "" + - object: "pinA" + number: 150 + lastState: "" + size: + - object: "pinW" + number: 150 + lastState: "" + size: + - object: "screw1" + number: 150 + lastState: "" + size: + - object: "screw2" + number: 150 + lastState: "" + size: \ No newline at end of file diff --git a/config/datasource/smart-factory-original-scenario-V2/workforces.yaml b/config/datasource/smart-factory-original-scenario-V2/workforces.yaml new file mode 100644 index 0000000..0397857 --- /dev/null +++ b/config/datasource/smart-factory-original-scenario-V2/workforces.yaml @@ -0,0 +1,13 @@ +kind: workforces +name: "default" +spec: + workforces: + - name: "transportRobot" + startLocation: "A" + number: 8 + - name: "machineWorker" + startLocation: "W" + number: 8 + - name: "machineWorker" + startLocation: "Al" + number: 8 \ No newline at end of file diff --git a/distributed_event_factory/simulation/ocel_sim_test.py b/distributed_event_factory/simulation/ocel_sim_test.py deleted file mode 100644 index 0fd3855..0000000 --- a/distributed_event_factory/simulation/ocel_sim_test.py +++ /dev/null @@ -1,39 +0,0 @@ -from simulation.process_simulation_object_centric import ProcessSimulationObjectCentric -from simulation.simulator_objects.object_storage import ObjectStorage -from simulation.simulator_objects.workprocessstep import WorkProcessStep - -if __name__ == '__main__': - simulator: ProcessSimulationObjectCentric = ProcessSimulationObjectCentric( - object_storage=ObjectStorage(), - workstation_steps=[ - WorkProcessStep( - activity="A", - node="W1", - group_id="W1", - input_objects=[], - output_objects=["O1"], - duration=60, - ), - WorkProcessStep( - activity="B", - node="W2", - group_id="W2", - input_objects=["O1"], - output_objects=["O2"], - duration=20, - ), - WorkProcessStep( - activity="C", - node="W3", - group_id="W3", - input_objects=["O1", "O2"], - output_objects=[], - duration=10, - ) - ], - data_sources=None, - objects=None, - stocks=None - ) - for i in range(10): - print(simulator.simulate()) \ No newline at end of file diff --git a/distributed_event_factory/simulation/process_simulation_object_centric.py b/distributed_event_factory/simulation/process_simulation_object_centric.py index ed87034..70cdf46 100644 --- a/distributed_event_factory/simulation/process_simulation_object_centric.py +++ b/distributed_event_factory/simulation/process_simulation_object_centric.py @@ -44,7 +44,7 @@ def __init__( self.prior_step: str = "" self.parallel_workstation_step_start_time = [] - def simulate(self) -> Event: + def simulate(self) -> (Event, ObjectStorage): if self.parallel_workstation_step_start_time: next_workstation, next_step, self.last_timestamp = self.parallel_workstation_step_start_time[0] self.parallel_workstation_step_start_time = self.parallel_workstation_step_start_time[1:]