Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change general parameter element to specific ISA-95 object names to enable "Corresponds to" relationship for SegmentParameter in OperationsSchedule.xsd and JobOrderParameter in WorkSchedule.xsd #61

Open
CharlieG021163 opened this issue Sep 20, 2019 · 5 comments
Assignees
Labels
ERDi Issues that need to be fixed in ERDi version Medium MESA Issues that need to be fixed in MISA Version

Comments

@CharlieG021163
Copy link
Collaborator

CharlieG021163 commented Sep 20, 2019

Background
In ISA-95, The Segment Parameter object in Segment Requirement (950002) and Job Order Parameter object in Job Order (950004) have a cross-model "Corresponds to" relationship to the BOTH Parameter Specification object in Operations Segment and Process Segment Parameter object in Process Segment.

B2MML uses a ParameterType in the Common.xsd for
a general "Parameter" element used in
OperationsSegmentType, ProcessSegmentType, and WorkDefintionType
as well as ParmeterType is used for
SegmentParameter in SegmentRequirementType and JobOrderParameter in JobOrderType.

The parameter specification and parameter segment specification objects in 950002 are the specification objects that the parameter requirement objects in operations schedule (segment requirement/parameter requirement) and work schedule (work request/job order requirement) are defined by.
The "Parameter" element cannot be referenced explicitly as the Parameter Specification object (Operation Segment) OR Process Segment Parameter object (Process Segment) by WorkDefinitionType, SegmentRequirementType, and JobOrderType .
The IDType in the ParameterType is not explicit enough to define how to apply the general Parameter to a specification vs. a requirement object context.
The ParameterType in Common.xsd is used as the type for all parameter elements which creates circular reference due to the use of the general Parameter element.

These two specification objects require explicit elements in the ParameterType to not create a circular reference of requirement to requirement or a specification to a specification.
B2MML use of "ParameterType" for both the specification and requirement objects which allows the user to incorrectly reference the context of the object. I have seen many project teams confuse the general "parameter" element and ParameterType as simply an attribute of the parent object and NOT in the context of the referenced master data specification for requirement object.

ParameterType is confusing specification vs. requirement objects. Making the specification types explicit makes its general use much easier to understand.

Supporting Documents
ISA-950002 JWG5 CDV01 version (2019 12)
Clause 5.8.3 Process segment parameter (Process Segment)
Clause 6.1.6 Parameter specification (Operations Definition /Operations Segment)
Clause 6.2.5 Segment parameter (Operations Schedule /Segment Requirement)
Clause 6.7 Parameter specification (Work Definition)
Clause 7.7 Job order parameter (Work Schedule / Job Order)

Impacted Types and Solution
B2MML-Common.xsd

  • ParameterType
    950002
  • Parameter element in ProcessSegmentType (ProcessSegment.xsd)
  • Parameter element in OperationsSegmentType (OperationsDefintion.xsd)
  • SegmentParameter element in SegmentRequirementType (OperationsSchedule.xsd)
    950004
  • Parameter element in WorkDefinitionType (WorkDefintion.xsd)
  • JobOrderParameter element in JobOrderType (WorkSchedule.xsd) (no change required)
  1. ProcessSegment.xsd: complexType name = "ProcessSegmentType",
    CHANGE: element name = "Parameter"
    TO: "ProcessSegmentParameter"
  2. OperationsDefintions.xsd: complexType name = "OperationsSegmentType",
    CHANGE: element name = "Parameter"
    TO: "ParameterSpecification"
  3. WorkDefintions.xsd: complexType name = "WorkDefinitionType",
    CHANGE: element name = "Parameter"
    TO: "ParameterSpecification".
  4. Common.xsd: complexType name = "ParameterType"
    ADD ParameterSpecificationID element and ProcessSegmentParameterID element
CharlieG021163 added a commit that referenced this issue Sep 20, 2019
ERDi, MESA: #61  <xsd:complexType name = "ProcessSegmentType">
CHANGE: element name = "Parameter"
TO: "ProcessSegmentParameter
CharlieG021163 added a commit that referenced this issue Sep 20, 2019
ERDi, MESA: #61, complexType name = "ParameterType"
ADD: element name = "ParameterSpecificationID"  type = "IdentifierType"  minOccurs = "0" maxOccurs = "unbounded"/>
ADD: element name = "ProcessSegmentParameterID"  type = "IdentifierType"  minOccurs = "0" maxOccurs = "unbounded"/>
CharlieG021163 referenced this issue Sep 20, 2019
ERDi, MESA:  complexType name = "OperationsSegmentType",
CHANGE: element name = "Parameter"
TO: "ParameterSpecification"
This CHANGE aligns with WorkDefinitionType which already has ParameterSpecification element which is the same object in the OperationsDefintionType so same specification element is named two different names in B2MML.
@racheliurui
Copy link
Collaborator

Agree with proposed change 1 and 2.

For proposed change 3, I couldn't understand why?
If it's used to specifically identify the ID type, then add a element something like IDType to represent the ID is a ParameterSpecificationID or ProcessSegmentParameterID is good enough and easy to reuse the type when we have other types need to use ParameterType.

<xsd:element name="IDType" type="String"/>

And the ID Type can be ParameterSpecificationID or ProcessSegmentParameterID.

@CharlieG021163
Copy link
Collaborator Author

CharlieG021163 commented Sep 29, 2019

  1. I am not sure I understand your suggestion on change 3. IDType is not explicit enough to know how to apply the general Parameter type to a specification vs. a requirement object context.
    The parameter specification and parameter segment specification are the specification objects that the parameter requirement objects in operations schedule (segment requirement/parameter requirement) and work schedule (work request/job order requirement) are defined by.
  2. I believe that these two specification objects should be explicit in the ParameterType. B2MML use of "ParameterType" for both the specification and requirement objects which makes the user not understand the context of the object. I have seen many project teams confuse the parameter element and ParameterType as simply an attribute of the parent object and NOT in the context of a requirement actual object.
    In current B2MML since a general ParameterType is used in OperationsSegmentType and ProcessSegmentType, SegmentParameter (SegmentRequirementType) and JobOrderParameter (JobOrderType), it cannot reference the explicit Parameter Specification (Operation Segment) or Process Segment Parameter (Process Segment) as a specification to a requirement.
    ParameterType is confusing specification vs. requirement objects. Making the specification object explicit in the type makes its general use much easier to understand.

@CharlieG021163 CharlieG021163 added ERDi Issues that need to be fixed in ERDi version Medium MESA Issues that need to be fixed in MISA Version labels Oct 8, 2019
@CharlieG021163 CharlieG021163 added this to the Discussed & Commented milestone Oct 8, 2019
@racheliurui
Copy link
Collaborator

Agreed

CharlieG021163 referenced this issue Oct 17, 2019
ERDi, MESA: group name = "WorkDefinitionType"
CHANGE: element name = "Parameter" to "ParameterSpecification" to align with updated Part 4 Work Definition model
DELETE: element name = "OperationsDefinitionID",  "OperationsSegmentID", and "ProcessSegmentID" to align with the updated Part 4 Work Definition model relationships
DELETE: element name = "WorkflowSpecification"

ERDi, MESA: complexType name = "WorkMasterType">
ADD: element name = "OperationsDefinitionID",  "OperationsSegmentID", and "ProcessSegmentID" to align with the updated Part 4 Work Definition model relationships
ADD: element name = "WorkflowSpecification"       type = "WorkflowSpecificationType"    minOccurs = "0"/>  (0..1: CHANGE from minOccurs = "0" maxOccurs = "unbounded"/>)
ADD: element name = "DefinitionType"
CHANGE: element name = "WorkMaster" TO "WorkMasterChild" to align with Part 4 Work Master relationship table.
CHANGE: element name = "IncludesPropertiesOf" TO "WorkMasterParentID" type = "IdentifierType"  minOccurs = "0"/>  (0..1: CHANGE from minOccurs = "0" maxOccurs = "unbounded"/>) to align with Part 4 Work Master relationship table.

ERDi, MESA: complexType name = "WorkDirectiveType">
CHANGE: element name = "WorkDirective" TO "WorkDirectiveChild" to align with Part 4 Work Master relationship table.
ADD: element name = "WorkDirectiveState"        
DELETE OR CHANGE:  element name = "JobOrderID",     This element is the source of the Corresponds To unidirectional relationship, not the target, so Work Master and Work Directive do not correspond to the source and should not list the relationship source in schema.  If MESA keeps these element, recommend change to JobOrderSourceID or similar, However, MESA B2MML implementation does includes source elements across the schema,  ERDi must make this design decision or following ISA-95 in only addressing the target in a relationship between objects.
@CharlieG021163
Copy link
Collaborator Author

Updated Original Comment. Ready for MESA Submission

@Dennis-Brandl
Copy link

I agree to the change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ERDi Issues that need to be fixed in ERDi version Medium MESA Issues that need to be fixed in MISA Version
Projects
None yet
Development

No branches or pull requests

6 participants