Pipeline Publisher
Pipeline publisher is somewhat different from other publishers. The algorithm used to create and publish pipelines is described as follows:
Get all piperuns that are represented on this drawing
Eliminate all piperuns with NULL values for any of the key attributes
Form a sort key for each piperun by concatenating all of the key attribute values
Sort the piperuns
For each group of piperuns with the same sort key
Query the database for a pipeline with matching key attributes
If a pipeline was found then
Remember this pipeline
Else
Create a new pipeline item
Set the key attribute values on the pipeline
Endif
Create an instance of a pipeline object in the document container
Add the required interfaces
Set the UID = <Signature> & <ModelItemPrefix> & <Pipeline SPID>
Set pipeline properties from pipeline attributes driven by the map
Create a PBSItemCollection relationship from pipeline to unit
(Use the unit of the first piperun.)
Next
Piperun Publisher
The piperun publisher publishes the PipingConnector relationship. A piperun belongs to a pipeline when it has non-NULL values for each of the key attributes. If a piperun belongs to a pipeline, the relationship to the pipeline is published along with the piperun. The following logic is executed on the piperun publisher:
If all key attributes have non-NULL values then
Query the database for the Pipeline with matching key attributes
If found then
Create a PipingConnectors relationship from piperun to pipeline
endif
Endif