diff --git a/io.catenax.shared.bill_of_process/1.0.0/BillOfProcessSharedAspect.ttl b/io.catenax.shared.bill_of_process/1.0.0/BillOfProcessSharedAspect.ttl new file mode 100644 index 00000000..b05d11b7 --- /dev/null +++ b/io.catenax.shared.bill_of_process/1.0.0/BillOfProcessSharedAspect.ttl @@ -0,0 +1,264 @@ +########################################################################################## +# Copyright (c) 2023-2024 Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V. (represented by Fraunhofer IOSB & Fraunhofer IWU & Fraunhofer IPA) +# Copyright (c) 2023-2024 Siemens AG +# Copyright (c) 2023-2024 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This work is made available under the terms of the +# Creative Commons Attribution 4.0 International (CC-BY-4.0) license, +# which is available at +# https://creativecommons.org/licenses/by/4.0/legalcode. +# +# SPDX-License-Identifier: CC-BY-4.0 +########################################################################################## +@prefix samm: . +@prefix samm-c: . +@prefix samm-e: . +@prefix unit: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix : . +@prefix ext-capability: . +@prefix ext-header: . + +:BillOfProcessSharedAspect a samm:Aspect; + samm:preferredName "Bill of Process shared Aspect"@en; + samm:description "Shared aspect for the bill of process data model"@en; + samm:properties ( :billOfProcessModel ); + samm:operations ( ); + samm:events ( ). + +:billOfProcessModel a samm:Property; + samm:preferredName "Bill of Process Model"@en; + samm:description "Property containing the the bill of process model"@en; + samm:characteristic :BillOfProcessCharacteristic. + +:BillOfProcessCharacteristic a samm:Characteristic; + samm:preferredName "Bill of Process Characteristic"@en; + samm:description "Characteristic containing a bill of process"@en; + samm:dataType :BillOfProcess. + +:BillOfProcess a samm:Entity; + samm:preferredName "Bill of Process"@en; + samm:description "Entity to describe processes in an industrial context"@en; + samm:properties ( :process :productVersion :productName :billOfProcessIdentification ext-header:version ). + +:process a samm:Property; + samm:preferredName "Process"@en; + samm:description "List that contains all manufacturing steps of a product, whereat each manufacturing step refers to exactly one capability. This list contains all process steps that are required to manufacture the product, specified with the bill of process "@en; + samm:characteristic :ProcessStepsList. + +:productVersion a samm:Property; + samm:preferredName "Product Version"@en; + samm:description "Version of the product whose manufacturing steps are specified with the bill of process. It can for example specify a concrete variant of a product"@en; + samm:characteristic :StringCharacteristic; + samm:exampleValue "bar_chair_1.0.0". + +:productName a samm:Property; + samm:preferredName "Product Name"@en; + samm:description "Name of the product whose production steps are specified within the bill of process"@en; + samm:characteristic :StringCharacteristic; + samm:exampleValue "Bar Chair". + +:billOfProcessIdentification a samm:Property; + samm:preferredName "Bill of Process Identifier"@en; + samm:description "Unique identifier for a bill of process that can be used to reference instances of the bill of process"@en; + samm:characteristic :BillOfProcessIdCharacteristic; + samm:exampleValue "www.1234-bar-chair-billOfProcess.de". + +:ProcessStepsList a samm-c:List; + samm:preferredName "Process Steps List"@en; + samm:description "Unordered list that contains all process steps to manufacture a product. The relation between these process steps are created through the precedence relation property"@en; + samm:dataType :ProcessStep. + +:StringCharacteristic a samm:Characteristic; + samm:preferredName "String Characteristic"@en; + samm:description "Characteristic to express string values"@en; + samm:dataType xsd:string. + +:BillOfProcessIdCharacteristic a samm:Characteristic; + samm:preferredName "Bill Of Process Id Characteristic"@en; + samm:description "Characteristic for Bill of process Identifiers"@en; + samm:dataType xsd:string. + +:ProcessStep a samm:Entity; + samm:preferredName "Process Step"@en; + samm:description "Entity to characterize single process steps"@en; + samm:properties ( :processStepIdentifier [ samm:property :inputParameters; samm:optional true ] [ samm:property :outputParameters; samm:optional true ] [ samm:property :precedenceRelation; samm:optional true ] [ samm:property :childProcessSteps; samm:optional true ] :processStepType ext-capability:capabilityId ). + +:processStepIdentifier a samm:Property; + samm:preferredName "Process Step Identifier"@en; + samm:description "Unique identifier for a concrete process step"@en; + samm:characteristic :ProcessStepIdentifierList; + samm:exampleValue "1234-transport". + +:inputParameters a samm:Property; + samm:preferredName "Input Parameters"@en; + samm:description "Optional list of parameters that are required to execute the corresponding process step"@en; + samm:characteristic :ParameterList. + +:outputParameters a samm:Property; + samm:preferredName "Output Parameters"@en; + samm:description "Optional list of parameters that are returned from the process step and can be used as inputParameters for subsequent steps"@en; + samm:characteristic :ParameterList. + +:precedenceRelation a samm:Property; + samm:preferredName "Precedence Relation"@en; + samm:description "List of alternative process steps from which the manufacturer has to select exactly one step to be executed. In case of no alternative process step, the list features only one element. In case of the last element, the property is not used, since the process step has no successor"@en; + samm:characteristic :PrecedenceRelationCharacteristic. + +:childProcessSteps a samm:Property; + samm:preferredName "Child Process Steps"@en; + samm:description "List of child processes that need to be executed to complete the parent process step. It enables the expression of hierarchies between capabilities, e.g. a transport capability needs to execute at least a pick, a move and a place capability"@en; + samm:characteristic :ProcessStepIdentifierList; + samm:exampleValue "pick". + +:processStepType a samm:Property; + samm:preferredName "Process Step Type"@en; + samm:description "Distinguishes process steps based on whether there are the first or last process step to be executed, or if they are a subprocess step, which subdivides a higher-level process step into smaller process steps"@en; + samm:characteristic :ProcessStepTypeCharacteristic; + samm:exampleValue "IsSubProcessElement". + +:ProcessStepIdentifierList a samm-c:List; + samm:preferredName "Process Step Identifier List"@en; + samm:description "List of process step identifiers to reference to other process steps that are part of the bill of process"@en; + samm:dataType xsd:string. + +:ParameterList a samm-c:List; + samm:preferredName "Parameter List"@en; + samm:description "A list of parameters"@en; + samm:dataType :Parameter. + +:PrecedenceRelationCharacteristic a samm-c:List; + samm:preferredName "Precedence Relation Characteristic"@en; + samm:description "List to express alternative process sequences "@en; + samm:dataType :PrecedenceElements. + +:ProcessStepTypeCharacteristic a samm-c:Enumeration; + samm:preferredName "Process Step Type Characteristic"@en; + samm:description "Distinguishes 4 cases of process steps: the first and the last process step, a process step that is in between the first and the last, or a subprocess step "@en; + samm:dataType xsd:string; + samm-c:values ( "IsFirstElement" "IsLastElement" "IsProcessElement" "IsSubprocessElement" ). + +:Parameter a samm:Entity; + samm:preferredName "Parameter"@en; + samm:description "Generic entity to characterize parameters. It distinguished four cases: a parameter without a value, a parameter with a value, a parameter with a value range and a parameter with tolerances "@en; + samm:properties ( :name [ samm:property :value; samm:optional true ] :semanticReference :parameterKey [ samm:property :valueRangeList; samm:optional true ] [ samm:property :tolerances; samm:optional true ] ). + +:PrecedenceElements a samm:Entity; + samm:preferredName "Precedence Elements"@en; + samm:description "List of process steps that must be executed in parallel"@en; + samm:properties ( :precedenceElements ). + +:name a samm:Property ; + samm:preferredName "Name"@en; + samm:description "Name of the parameter"@en; + samm:characteristic :StringCharacteristic; + samm:exampleValue "dimensionality". + +:value a samm:Property; + samm:preferredName "Value"@en; + samm:description "Value of the parameter"@en; + samm:characteristic :StringCharacteristic; + samm:exampleValue "{\\\"height\\\" : \\\"5\\\", \\\"length\\\" : \\\"3\\\", \\\"width\\\" : \\\"7\\\"}". + +:semanticReference a samm:Property; + samm:preferredName "Semantic Reference"@en; + samm:description "Reference to a semantic namespace in which the type of the parameter is defined"@en; + samm:characteristic :SemanticListCharacteristic; + samm:exampleValue "0173-1#02-BAD875#008". + +:parameterKey a samm:Property; + samm:preferredName "Parameter Key"@en; + samm:description "Enumeration that is used to distinguish whether the parameter has no value, has a value, has a value range or has a value with tolerances"@en; + samm:characteristic :ParameterKeyCharacteristic; + samm:exampleValue "HasValue". + +:valueRangeList a samm:Property; + samm:preferredName "Value Range List"@en; + samm:description "List with value ranges for a parameter"@en; + samm:characteristic :ValueRangeList. + +:tolerances a samm:Property; + samm:preferredName "Tolerances"@en; + samm:description "Tolerances for a parameter "@en; + samm:characteristic :TolerancesCharacteristic. + +:precedenceElements a samm:Property; + samm:preferredName "Precedence Elements"@en; + samm:description "List process steps that must be executed in parallel"@en; + samm:characteristic :PrecedenceElementList. + +:SemanticListCharacteristic a samm-c:List; + samm:preferredName "Semantic List Characteristic"@en; + samm:description "A list containing all semantic references for a parameter"@en; + samm:dataType xsd:string. + +:ParameterKeyCharacteristic a samm-c:Enumeration; + samm:preferredName "Parameter Key Characteristic"@en; + samm:description "Enumeration that predefines values for the parameter key"@en; + samm:dataType xsd:string; + samm-c:values ( "HasValue" "HasNoValue" "HasValueRange" "HasTolerances" ). + +:ValueRangeList a samm-c:List; + samm:preferredName "Value Range List"@en; + samm:description "List with value ranges for a parameter"@en; + samm:dataType :ValueRange. + +:TolerancesCharacteristic a samm-c:List; + samm:preferredName "Tolerances Characteristic"@en; + samm:description "List with tolerances for a parameter's value"@en; + samm:dataType :TolerancesEntity. + +:PrecedenceElementList a samm-c:List; + samm:preferredName "Precedence Element List"@en; + samm:description "Set of process steps which have to be executed in parallel"@en; + samm:dataType :PrecedenceElement. + +:ValueRange a samm:Entity; + samm:preferredName "Value Range"@en; + samm:description "Entity for each value range item"@en; + samm:properties ( :lowerValue :upperValue [ samm:property :name; samm:optional true ] ). + +:TolerancesEntity a samm:Entity; + samm:preferredName "Tolerances Entity"@en; + samm:description "Entity to express the tolerances of a parameter"@en; + samm:properties ( :lowerLimit :upperLimit [ samm:property :name; samm:optional true ] ). + +:PrecedenceElement a samm:Entity; + samm:preferredName "Precedence Element"@en; + samm:description "Entity to link the current process step to its successors"@en; + samm:properties ( :successor ). + +:lowerValue a samm:Property; + samm:preferredName "Lower Value"@en; + samm:description "Lower border of a value range item"@en; + samm:characteristic :StringCharacteristic; + samm:exampleValue "5". + +:upperValue a samm:Property; + samm:preferredName "Upper Value"@en; + samm:description "Upper border for a value range item"@en; + samm:characteristic :StringCharacteristic; + samm:exampleValue "10". + +:lowerLimit a samm:Property; + samm:preferredName "Lower Limit"@en; + samm:description "The lower direct limit of the tolerance"@en; + samm:characteristic :StringCharacteristic; + samm:exampleValue "4.9". + +:upperLimit a samm:Property; + samm:preferredName "Upper Limit"@en; + samm:description "Upper direct limit of the tolerance"@en; + samm:characteristic :StringCharacteristic; + samm:exampleValue "5.1". + +:successor a samm:Property; + samm:preferredName "Successor"@en; + samm:description "List of subsequent process step which can be executed in any order "@en; + samm:characteristic :ProcessStepIdentifierList; + samm:exampleValue "TransportStepId". \ No newline at end of file diff --git a/io.catenax.shared.bill_of_process/1.0.0/README.md b/io.catenax.shared.bill_of_process/1.0.0/README.md new file mode 100644 index 00000000..70c776b1 --- /dev/null +++ b/io.catenax.shared.bill_of_process/1.0.0/README.md @@ -0,0 +1,772 @@ +# Bill of Process Shared Aspect Model + +The bill of process aspect model is a data model which can be utilized to exchange information about a product's manufacturing process between partners. +The purpose of this model is to specify an extended precedence graph that features the parameter flow between single process steps. +Since it is not part of an individual Catena-X standard, additional information about its application is provided with this README.md file. +The model itself is defined as a shared aspect to be included into other aspect models and will be used in the Catena-X Standard Request for Quotation. +Besides, the bill of process aspect model is referenced within the production tracking data model of the Shop Floor Information Service, +and within the Manufacturing Capability data model. + +This README.md provides additional information about the entities, properties and characteristics of the bill of process aspect model: + + +## Bill of Process + +The bill of process data model defines a set of mandatory properties to provide information about the product to be produced. + +

+ +

+ +At the top level, the BillOfProcess entity provides a property version that represents the version of the data model, a unique identifier for the bill of process, and a name for the product +whose manufacturing process is specified. In addition, a productVersion can be +specified to distinguish between different product variants, such as the same product in different colors. The BillOfProcess entity also +contains a property process that contains a list with all process steps. These steps may be provided in any given order, +since the relation between them is handled internally within the ProcessStep entity. However, each processStep instance that is part of the +precedence graph has to be modeled explicitly. In consequence, it is not possible to define and reuse generic process steps, +e.g. a transport process step, that occurs on multiple positions +of the precedence graph. Instead, an individual process step has to be modeled for each transport step within the precedence graph. + +## Process Step + +Process steps are listed within the process property of the bill of process entity. Each process step provides a unique identifier and refers to +a manufacturing capability that must be performed on a product to accomplish the corresponding process step. +This capabilityReference must point to an instance of the Manufacturing Capability aspect model that is defined in the +namespace io.catenax.manufacturing_capability. In addition, each process step can feature an optional set of input and output parameters. +The corresponding entity for parameters and how to use them is explained in the section [Parameter](#Parameter). + + +

+ +

+ +The optional property precedenceRelation allows the specification of dependencies to subsequent process steps. More details on how +to span the precedence graph from the single process steps can be found in the section [Precedence Relation](#Precedence-Relation). +In addition, a process step can feature a set of childProcessSteps, to break it down into smaller process steps. +For example, a process step transport can be specified with the childProcessSteps pick, +move and place. These process steps are referenced by their associated processStepIdentifiers. + +``` +#example relation between a processStep and its childProcessSteps +{ + "process" : + [ + { + "childProcessSteps" : [ "pick", "move", "place" ], + "capabilityReference" : "transport", + "processStepIdentifier" : [ "1234-transport" ], + "processStepType" : "IsFirstElement" + }, + { + "capabilityReference" : "pick", + "processStepIdentifier" : [ "pick" ], + "processStepType" : "isSubProcessElement", + "precedenceRelation" : [ { + "precedenceElements" : [ { + "successor" : [ "move" ] + } ] + } ] + }, + { + "capabilityReference" : "move", + "processStepIdentifier" : [ "move" ], + "processStepType" : "isSubProcessElement", + "precedenceRelation" : [ { + "precedenceElements" : [ { + "successor" : [ "place" ] + } ] + } ] + }, + { + "capabilityReference" : "place", + "processStepIdentifier" : [ "place" ], + "processStepType" : "isSubProcessElement" + } + ] +} +``` + + +The processStepType classifies each process step into one of four classes and is intended to simplify the +spanning of the precedence graph: + +### Case 1: isFirstElement + +The first process steps of the precedence graph are labeled with the processStepType instance isFirstElement. + +### Case 2: isLastElement + +The last process steps of the precedence graph are labeled with the processStepType instance isLastElement. + +### Case 3: isProcessElement + +Ordinary process steps of the precedence graph, which are not at the first or last position, are labeled with the processStepType +instance isProcessElement. + +### Case 4: isSubProcessElement + +Process steps that do not occur directly in the precedence graph, but are referenced to through the property childProcessSteps, are +labeled with the processStepType instance isSubProcessElement. In contrast to process steps that are +concrete elements of the precedence graph, process steps labeled with isSubProcessElement can be defined in a generic manner, +allowing them to be associated with multiple parent process steps. In addition, defined input and output parameters for +childProcessSteps must match the input and output parameters of the parent process step. An example of a generic set of +childProcessSteps with a parameter flow is illustrated below. + +``` +#extension of the example relation between a processStep and its childProcessSteps + +{ + "process": [ + { + "childProcessSteps": [ + "pick", + "move", + "place" + ], + "capabilityReference": "transport", + "processStepIdentifier": [ + "1234-transport" + ], + "processStepType": "IsFirstElement", + "precedenceRelation": [ + { + "precedenceElements": [ + { + "successor": [ + "5678-transport" + ] + } + ] + } + ], + "inputParameter": [ + { + "name": "weight", + "parameterKey": "HasNoValue", + "semanticReference": [ + "0173-1#02-BAD875#008" + ] + } + ], + "outputParameter": [ + { + "name": "weight", + "parameterKey": "HasNoValue", + "semanticReference": [ + "0173-1#02-BAD875#008" + ] + } + ] + }, + { + "childProcessSteps": [ + "pick", + "move", + "place" + ], + "capabilityReference": "transport", + "processStepIdentifier": [ + "5678-transport" + ], + "processStepType": "IsLastElement", + "inputParameter": [ + { + "name": "weight", + "parameterKey": "HasNoValue", + "semanticReference": [ + "0173-1#02-BAD875#008" + ] + } + ] + }, + { + "capabilityReference": "pick", + "processStepIdentifier": [ + "pick" + ], + "processStepType": "isSubProcessElement", + "precedenceRelation": [ + { + "precedenceElements": [ + { + "successor": [ + "move" + ] + } + ] + } + ], + "inputParameter": [ + { + "name": "weight", + "parameterKey": "HasNoValue", + "semanticReference": [ + "0173-1#02-BAD875#008" + ] + } + ], + "outputParameter": [ + { + "name": "weight", + "parameterKey": "HasNoValue", + "semanticReference": [ + "0173-1#02-BAD875#008" + ] + } + ] + }, + { + "capabilityReference": "move", + "processStepIdentifier": [ + "move" + ], + "processStepType": "isSubProcessElement", + "precedenceRelation": [ + { + "precedenceElements": [ + { + "successor": [ + "place" + ] + } + ] + } + ], + "inputParameter": [ + { + "name": "weight", + "parameterKey": "HasNoValue", + "semanticReference": [ + "0173-1#02-BAD875#008" + ] + } + ], + "outputParameter": [ + { + "name": "weight", + "parameterKey": "HasNoValue", + "semanticReference": [ + "0173-1#02-BAD875#008" + ] + } + ] + }, + { + "capabilityReference": "place", + "processStepIdentifier": [ + "place" + ], + "processStepType": "isSubProcessElement", + "inputParameter": [ + { + "name": "weight", + "parameterKey": "HasNoValue", + "semanticReference": [ + "0173-1#02-BAD875#008" + ] + } + ], + "outputParameter": [ + { + "name": "weight", + "parameterKey": "HasNoValue", + "semanticReference": [ + "0173-1#02-BAD875#008" + ] + } + ] + } + ] +} +``` + +## Precedence Relation + +Precedence relations are specified to link the process steps and thus, create the precedence graph of the process. +In this context, precedence relations of a process step always point to its direct successors. However, since precedence +relations can contain conditions, such as alternatives between successors, a set of successors or successors that must +be executed in parallel, the property precedenceRelation consists of three nested lists, that are utilized for each of +these three cases. + +

+ +

+ +### Case: Arbitrary Order + +In this scenario, step 1 has successors 2 and 3 which can be executed in an arbitrary order. Regardless of their execution order, +the process continues with step 4, so that the resulting process sequences are either 1 -> 2 -> 3-> 4 or 1 -> 3 -> 2 -> 4. + +

+ +

+ +Since the direct successor of both, 2 and 3, is undetermined, both subsequences 2 -> 3-> 4 and 3 -> 2 -> 4 are possible. In consequence, +both process steps reference to the next process step that is unambiguously determined, step 4 in this example. + +``` +# example arbitrary order +{ + "process": [ + { + "processStepIdentifier": [ + "1" + ], + "processStepType": "isFirstElement", + # steps 2 and 3 can be executed in an arbitrary order + "precedenceRelation": [ + { + "precedenceElements": [ + { + "successor": [ + "2", + "3" + ] + } + ] + } + ] + }, + { + "processStepIdentifier": [ + "2" + ], + "processStepType": "isProcessElement", + "precedenceRelation": [ + { + "precedenceElements": [ + { + "successor": [ + "4" + ] + } + ] + } + ] + }, + { + "processStepIdentifier": [ + "3" + ], + "processStepType": "isProcessElement", + "precedenceRelation": [ + { + "precedenceElements": [ + { + "successor": [ + "4" + ] + } + ] + } + ] + }, + { + "processStepIdentifier": [ + "4" + ], + "processStepType": "isLastElement" + } + ] +} +``` + +### Case: Parallelism + +In this scenario, step 1 has the successors 2 and 3 that must be executed in parallel. The process continues +with step 4, so that the resulting process sequence is 1 -> 2,3 -> 4. + +

+ +

+ +Since step 2 and step 3 must be completed before starting step 4, both refer to step 4 as their successor. +``` +# example parallel process steps +{ + "process": [ + { + "processStepIdentifier": [ + "1" + ], + "processStepType": "isFirstElement", + #steps 2 and 3 have to be executed in parallel + "precedenceRelation": [ + { + "precedenceElements": [ + { + "successor": [ + "2" + ] + }, + { + "successor": [ + "3" + ] + } + ] + } + ] + }, + { + "processStepIdentifier": [ + "2" + ], + "processStepType": "isProcessElement", + "precedenceRelation": [ + { + "precedenceElements": [ + { + "successor": [ + "4" + ] + } + ] + } + ] + }, + { + "processStepIdentifier": [ + "3" + ], + "processStepType": "isProcessElement", + "precedenceRelation": [ + { + "precedenceElements": [ + { + "successor": [ + "4" + ] + } + ] + } + ] + }, + { + "processStepIdentifier": [ + "4" + ], + "processStepType": "isLastElement" + } + ] +} +``` + + + + +### Case: Alternative Process Sequences +The last scenario describes alternative process sequences, where the user can decide which sequence to choose from a set. +In this example, the resulting process alternatives are 1 -> 2 -> 4 or 1 -> 3 -> 5. + +

+ +

+ +In such a scenario, it is possible to either merge the separated sequences at some point, or define separate last process sequences. + + +``` +# example alternative sequences +{ + "process": [ + { + "processStepIdentifier": [ + "1" + ], + "processStepType": "isFirstElement", + #user decides between process sequence 2 -> 4 or 3 -> 5 + "precedenceRelation": [ + { + "precedenceElements": [ + { + "successor": [ + "2" + ] + } + ] + }, + { + "precedenceElements": [ + { + "successor": [ + "3" + ] + } + ] + } + ] + }, + { + "processStepIdentifier": [ + "2" + ], + "processStepType": "isProcessElement", + "precedenceRelation": [ + { + "precedenceElements": [ + { + "successor": [ + "4" + ] + } + ] + } + ] + }, + { + "processStepIdentifier": [ + "3" + ], + "processStepType": "isProcessElement", + "precedenceRelation": [ + { + "precedenceElements": [ + { + "successor": [ + "5" + ] + } + ] + } + ] + }, + { + "processStepIdentifier": [ + "4" + ], + "processStepType": "isLastElement" + }, + { + "processStepIdentifier": [ + "5" + ], + "processStepType": "isLastElement" + } + ] +} +``` + +## Parameter + +The parameter entity is used to specify input or output parameters for a process step. Each parameter has to provide a name. +To enable a common understanding of the exchanged parameter each parameter entity +has a semanticReference that contains a list with at least one element. Such a list element refers to a globally defined semantic +that characterizes this parameter, e.g. a definition in the EClass Standard. +This semanticReference provides a meaning to the parameter, so that the partners, who exchange the bill of process data model, +are able to interpret them. Since there may be multiple semantics that +define the underlying parameter, a user can reference multiple semantics within the list. + +The bill of process data model provides four possibilities to specify parameters. +The expression of the parameter is based on the value of the property parameterKey. Depending on the case, the optional +properties of the Parameter entity become mandatory. + +

+ +

+ +### Case 1: HasNoValue +In this case, all optional properties of the parameter become obsolete and the parameter entity only features a name and a +semanticReference. This case is especially important to enable a parameter flow between process steps. In such a scenario, +parameters can be defined as output parameters in a preceding process step and can then be used as input parameter for the +subsequent process step. In addition, this case enables process steps to +provide parameters, whose values are not pre-defined, but are a result of a process step execution. + +``` +# example multidimensional parameter Volume/fill quantity +{ + "outputParameter": { + "name": "volume", + "semanticReference": [ + "0173-1#02-AAZ883#001" + ], + "parameterKey": "HasNoValue" + } +} + + +# example one dimensional parameter netWeight +{ + "outputParameter": { + "name": "weight", + "semanticReference": [ + "0173-1#02-BAD875#008" + ], + "parameterKey": "HasNoValue" + } +} +``` + +### Case 2: HasValue +This case describes a predefined parameter within the bill of process data model. Since parameters are subjects of change during process steps, +only inputParameters for process steps should be defined with a concrete value. In this case, the optional value property of the parameter entity becomes mandatory. +The remaining optional properties should not be used. The concrete value of a parameter should be provided as a JSON string, +so that multidimensional parameters can be specified within one parameter entity. In case of a one dimensional parameter, its value can be directly provided as a string. + +``` +# example multidimensional parameter Volume/fill quantity +{ + "inputParameter": [ + { + "name": "volume", + "semanticReference": [ + "0173-1#02-AAZ883#001" + ], + "parameterKey": "HasValue", + "value": "{\"height\" : \"5\", \"length\" : \"3\", \"width\" : \"7\"}" + } + ] +} + + +# example one dimensional parameter netWeight +{ + "inputParameter": [ + { + "name": "weight", + "semanticReference": [ + "0173-1#02-BAD875#008" + ], + "parameterKey": "HasValue", + "value": "10" + } + ] +} +``` + +### Case 3: HasValueRange + +This case extends the HasValue case by providing the possibility to assign not only a single value to a parameter, +but a range of possible values. Since a single parameter instance can describe a multidimensional parameter, +the value range entity features an optional name property. This optional name property then becomes mandatory and +specifies the name of the field within the multidimensional parameter. + +``` +# example multidimensional parameter Volume/fill quantity + +{ + "inputParameter": [ + { + "name": "volume", + "semanticReference": [ + "0173-1#02-AAZ883#001" + ], + "parameterKey": "HasValueRange", + "valueRangeList": [ + { + "name": "height", + "lowerValue": "3", + "upperValue": "10" + }, + { + "name": "length", + "lowerValue": "6", + "upperValue": "8" + }, + { + "name": "width", + "lowerValue": "6", + "upperValue": "9" + }, + { + "name": "height", + "lowerValue": "12", + "upperValue": "36" + }, + { + "name": "length", + "lowerValue": "15", + "upperValue": "17" + }, + { + "name": "width", + "lowerValue": "16", + "upperValue": "19" + } + ] + } + ] +} + + +# example one dimensional parameter netWeight +{ + "inputParameter": [ + { + "name": "weight", + "semanticReference": [ + "0173-1#02-BAD875#008" + ], + "parameterKey": "HasValueRange", + "valueRangeList": [ + { + "lowerValue": "3", + "upperValue": "6" + }, + { + "lowerValue": "12", + "upperValue": "16" + } + ] + } + ] +} +``` + +### Case 4: HasTolerances + +This case is similar to the HasValueRange case, but instead of allowing to specify several value ranges +for a parameter, it only enables to define a single tolerance for a parameter value, or a single tolerance for each field of +a multidimensional parameter. For the latter, the optional property name of the TolerancesEntity becomes mandatory. + +``` +# example multidimensional parameter Volume/fill quantity +{ + "inputParameter": [ + { + "name": "volume", + "semanticReference": [ + "0173-1#02-AAZ883#001" + ], + "parameterKey": "HasTolerances", + "tolerances": [ + { + "name": "height", + "lowerLimit": "4.9", + "upperLimit": "5.1" + }, + { + "name": "length", + "lowerLimit": "2.8", + "upperLimit": "3.2" + }, + { + "name": "width", + "lowerLimit": "6.9", + "upperLimit": "7.1" + } + ] + } + ] +} + + +# example one dimensional parameter netWeight +{ + "inputParameter": [ + { + "name": "weight", + "semanticReference": [ + "0173-1#02-BAD875#008" + ], + "parameterKey": "HasTolerances", + "tolerances": [ + { + "lowerLimit": "4.9", + "upperLimit": "5.1" + } + ] + } + ] +} +``` diff --git a/io.catenax.shared.bill_of_process/1.0.0/images/img.png b/io.catenax.shared.bill_of_process/1.0.0/images/img.png new file mode 100644 index 00000000..e7278cc4 Binary files /dev/null and b/io.catenax.shared.bill_of_process/1.0.0/images/img.png differ diff --git a/io.catenax.shared.bill_of_process/1.0.0/images/img_1.png b/io.catenax.shared.bill_of_process/1.0.0/images/img_1.png new file mode 100644 index 00000000..6a84480a Binary files /dev/null and b/io.catenax.shared.bill_of_process/1.0.0/images/img_1.png differ diff --git a/io.catenax.shared.bill_of_process/1.0.0/images/img_2.png b/io.catenax.shared.bill_of_process/1.0.0/images/img_2.png new file mode 100644 index 00000000..9d07094e Binary files /dev/null and b/io.catenax.shared.bill_of_process/1.0.0/images/img_2.png differ diff --git a/io.catenax.shared.bill_of_process/1.0.0/images/img_3.png b/io.catenax.shared.bill_of_process/1.0.0/images/img_3.png new file mode 100644 index 00000000..e3259e42 Binary files /dev/null and b/io.catenax.shared.bill_of_process/1.0.0/images/img_3.png differ diff --git a/io.catenax.shared.bill_of_process/1.0.0/images/img_4.png b/io.catenax.shared.bill_of_process/1.0.0/images/img_4.png new file mode 100644 index 00000000..a2302bfe Binary files /dev/null and b/io.catenax.shared.bill_of_process/1.0.0/images/img_4.png differ diff --git a/io.catenax.shared.bill_of_process/1.0.0/images/img_5.png b/io.catenax.shared.bill_of_process/1.0.0/images/img_5.png new file mode 100644 index 00000000..2ae658cb Binary files /dev/null and b/io.catenax.shared.bill_of_process/1.0.0/images/img_5.png differ diff --git a/io.catenax.shared.bill_of_process/1.0.0/images/img_6.png b/io.catenax.shared.bill_of_process/1.0.0/images/img_6.png new file mode 100644 index 00000000..600318ca Binary files /dev/null and b/io.catenax.shared.bill_of_process/1.0.0/images/img_6.png differ diff --git a/io.catenax.shared.bill_of_process/1.0.0/metadata.json b/io.catenax.shared.bill_of_process/1.0.0/metadata.json new file mode 100644 index 00000000..84245e4e --- /dev/null +++ b/io.catenax.shared.bill_of_process/1.0.0/metadata.json @@ -0,0 +1 @@ +{ "status" : "release" } diff --git a/io.catenax.shared.bill_of_process/RELEASE_NOTES.md b/io.catenax.shared.bill_of_process/RELEASE_NOTES.md new file mode 100644 index 00000000..a50cb3e5 --- /dev/null +++ b/io.catenax.shared.bill_of_process/RELEASE_NOTES.md @@ -0,0 +1,7 @@ +# Changelog + +All notable changes to this model will be documented in this file. + +## [1.0.0] 29.01.2024 + +- initial version of the aspect model for BillOfProcess \ No newline at end of file