Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
PNML Splitter
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
DiNeROS
DiNeROS 1
PNML Splitter
Commits
1f365455
Commit
1f365455
authored
3 years ago
by
Sebastian Ebert
Browse files
Options
Downloads
Patches
Plain Diff
refactoring on the transformation processes
parent
4e295d54
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/main/java/de/tudresden/inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java
+60
-69
60 additions, 69 deletions
...inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java
with
60 additions
and
69 deletions
src/main/java/de/tudresden/inf/st/postprocessing/GlobalToLocalNetsPostProcessor.java
+
60
−
69
View file @
1f365455
...
@@ -6,6 +6,7 @@ import de.tudresden.inf.st.export.PnmlExporter;
...
@@ -6,6 +6,7 @@ import de.tudresden.inf.st.export.PnmlExporter;
import
de.tudresden.inf.st.pnml.PnmlParser
;
import
de.tudresden.inf.st.pnml.PnmlParser
;
import
de.tudresden.inf.st.pnml.jastadd.model.*
;
import
de.tudresden.inf.st.pnml.jastadd.model.*
;
import
fr.lip6.move.pnml.framework.utils.exception.InvalidIDException
;
import
fr.lip6.move.pnml.framework.utils.exception.InvalidIDException
;
import
org.jetbrains.annotations.NotNull
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.w3c.dom.Document
;
import
org.w3c.dom.Document
;
...
@@ -146,14 +147,9 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
...
@@ -146,14 +147,9 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
String
inLocation
=
p
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getLocation
();
String
inLocation
=
p
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getLocation
();
String
inSubNet
=
p
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getSubNet
();
String
inSubNet
=
p
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getSubNet
();
InputSignalTransition
sourceIst
=
new
InputSignalTransition
();
InputSignalTransition
sourceIst
=
createRosInputTransition
(
ist
,
serviceCount
,
sufix
);
sourceIst
.
setName
(
new
Name
().
setText
(
ist
.
getName
().
getText
()
+
sufix
+
serviceCount
));
sourceIst
.
setId
(
ist
.
getId
()
+
sufix
+
serviceCount
);
ServiceTransitionInformation
tInfoSource
=
new
ServiceTransitionInformation
();
ServiceTransitionInformation
tInfoSource
=
copyServiceTransitionInformation
(
ist
,
inLocation
,
inSubNet
);
tInfoSource
.
setSubNet
(
inSubNet
);
tInfoSource
.
setLocation
(
inLocation
);
tInfoSource
.
setServiceName
(
ist
.
getStaticTransitionInformation
().
asServiceTransitionInformation
().
getServiceName
());
// attributized infos need to be written back to XML
// attributized infos need to be written back to XML
JastAddList
<
ToolInfo
>
inputToolInfoJastAddList
=
new
JastAddList
<>();
JastAddList
<
ToolInfo
>
inputToolInfoJastAddList
=
new
JastAddList
<>();
...
@@ -163,26 +159,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
...
@@ -163,26 +159,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
sourceIst
.
setToolspecificList
(
inputToolInfoJastAddList
);
sourceIst
.
setToolspecificList
(
inputToolInfoJastAddList
);
sourceIst
.
setMutualTransitionInformation
(
tInfoSource
);
sourceIst
.
setMutualTransitionInformation
(
tInfoSource
);
reconnectSourceTransitionSignalsAndArcs
(
transition
,
ist
,
p
,
sourceIst
);
// Reconnect Input Signals
for
(
InputSignalBinding
isb
:
ist
.
getStaticInputSignalBindingList
())
{
InputSignalBinding
newIsb
=
new
InputSignalBinding
();
newIsb
.
setInputSignalValue
(
isb
.
getInputSignalValue
());
newIsb
.
setTransitionID
(
isb
.
getTransitionID
());
newIsb
.
setId
(
isb
.
getId
());
newIsb
.
setInputSignalID
(
isb
.
getInputSignalID
());
sourceIst
.
addMutualInputSignalBinding
(
newIsb
);
}
// Get all incoming arcs and connect them to new output transition
for
(
Arc
arc
:
p
.
asOutputSignalPlace
().
getOutArcList
().
toArray
(
new
Arc
[
0
]))
{
if
(
arc
.
getTarget
().
getId
().
equals
(
transition
.
getId
()))
{
arc
.
setTarget
(
sourceIst
);
}
}
// Add new transitions to net
// Add new transitions to net
transitionsToAdd
.
add
(
sourceIst
);
transitionsToAdd
.
add
(
sourceIst
);
...
@@ -212,22 +189,16 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
...
@@ -212,22 +189,16 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
String
outLocation
=
p
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getLocation
();
String
outLocation
=
p
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getLocation
();
String
outSubNet
=
p
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getSubNet
();
String
outSubNet
=
p
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getSubNet
();
InputSignalTransition
requestServerIst
=
new
InputSignalTransition
();
InputSignalTransition
requestServerIst
=
createRosInputTransition
(
ist
,
serviceCount
,
sufix
);
requestServerIst
.
setName
(
new
Name
().
setText
(
ist
.
getName
().
getText
()
+
sufix
+
serviceCount
));
requestServerIst
.
setId
(
ist
.
getId
()
+
sufix
+
serviceCount
);
ServiceTransitionInformation
tInfoTarget
=
new
ServiceTransitionInformation
();
ServiceTransitionInformation
tInfoTarget
=
copyServiceTransitionInformation
(
ist
,
outLocation
,
outSubNet
);
tInfoTarget
.
setSubNet
(
outSubNet
);
tInfoTarget
.
setLocation
(
outLocation
);
tInfoTarget
.
setServiceName
(
ist
.
getStaticTransitionInformation
().
asServiceTransitionInformation
().
getServiceName
());
// attribut
ized
infos need to be written back to XML
// attribut
e
infos need to be written back to XML
JastAddList
<
ToolInfo
>
outputToolInfoJastAddList
=
new
JastAddList
<>();
JastAddList
<
ToolInfo
>
outputToolInfoJastAddList
=
new
JastAddList
<>();
tInfoTarget
.
setType
(
targetType
);
tInfoTarget
.
setType
(
targetType
);
outputToolInfoJastAddList
.
add
(
buildServiceToolSpecifics
(
targetType
,
outLocation
,
outSubNet
,
tInfoTarget
.
getServiceName
(),
null
));
outputToolInfoJastAddList
.
add
(
buildServiceToolSpecifics
(
targetType
,
outLocation
,
outSubNet
,
tInfoTarget
.
getServiceName
(),
null
));
requestServerIst
.
setToolspecificList
(
outputToolInfoJastAddList
);
requestServerIst
.
setToolspecificList
(
outputToolInfoJastAddList
);
requestServerIst
.
setMutualTransitionInformation
(
tInfoTarget
);
requestServerIst
.
setMutualTransitionInformation
(
tInfoTarget
);
...
@@ -309,9 +280,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
...
@@ -309,9 +280,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
String
outLocation
=
p
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getLocation
();
String
outLocation
=
p
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getLocation
();
String
outSubNet
=
p
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getSubNet
();
String
outSubNet
=
p
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getSubNet
();
InputSignalTransition
subscriberIst
=
new
InputSignalTransition
();
InputSignalTransition
subscriberIst
=
createRosInputTransition
(
channelIst
,
subscriberCount
,
"-subscriber-"
);
subscriberIst
.
setName
(
new
Name
().
setText
(
channelIst
.
getName
().
getText
()
+
"-subscriber-"
+
subscriberCount
));
subscriberIst
.
setId
(
channelIst
.
getId
()
+
"-subscriber-"
+
subscriberCount
);
TopicTransitionInformation
tInfoTarget
=
new
TopicTransitionInformation
();
TopicTransitionInformation
tInfoTarget
=
new
TopicTransitionInformation
();
tInfoTarget
.
setSubNet
(
outSubNet
);
tInfoTarget
.
setSubNet
(
outSubNet
);
...
@@ -373,9 +342,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
...
@@ -373,9 +342,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
String
inLocation
=
p
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getLocation
();
String
inLocation
=
p
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getLocation
();
String
inSubNet
=
p
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getSubNet
();
String
inSubNet
=
p
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getSubNet
();
InputSignalTransition
publisherIst
=
new
InputSignalTransition
();
InputSignalTransition
publisherIst
=
createRosInputTransition
(
channelIst
,
publisherCount
,
"-publisher-"
);
publisherIst
.
setName
(
new
Name
().
setText
(
channelIst
.
getName
().
getText
()
+
"-publisher-"
+
publisherCount
));
publisherIst
.
setId
(
channelIst
.
getId
()
+
"-publisher-"
+
publisherCount
);
TopicTransitionInformation
tInfoSource
=
new
TopicTransitionInformation
();
TopicTransitionInformation
tInfoSource
=
new
TopicTransitionInformation
();
tInfoSource
.
setSubNet
(
inSubNet
);
tInfoSource
.
setSubNet
(
inSubNet
);
...
@@ -401,24 +368,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
...
@@ -401,24 +368,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
publisherIst
.
setMutualTransitionInformation
(
tInfoSource
);
publisherIst
.
setMutualTransitionInformation
(
tInfoSource
);
// Reconnect Input Signals
// Reconnect Input Signals
for
(
InputSignalBinding
isb
:
channelIst
.
getStaticInputSignalBindingList
())
{
reconnectSourceTransitionSignalsAndArcs
(
transition
,
channelIst
,
p
,
publisherIst
);
InputSignalBinding
newIsb
=
new
InputSignalBinding
();
newIsb
.
setInputSignalValue
(
isb
.
getInputSignalValue
());
newIsb
.
setTransitionID
(
isb
.
getTransitionID
());
newIsb
.
setId
(
isb
.
getId
());
newIsb
.
setInputSignalID
(
isb
.
getInputSignalID
());
publisherIst
.
addMutualInputSignalBinding
(
newIsb
);
}
// Get all incoming arcs and connect them to new output transition
for
(
Arc
arc
:
p
.
asOutputSignalPlace
().
getOutArcList
().
toArray
(
new
Arc
[
0
]))
{
if
(
arc
.
getTarget
().
getId
().
equals
(
transition
.
getId
()))
{
arc
.
setTarget
(
publisherIst
);
}
}
// Add new transitions to net
// Add new transitions to net
transitionsToAdd
.
add
(
publisherIst
);
transitionsToAdd
.
add
(
publisherIst
);
...
@@ -441,23 +391,22 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
...
@@ -441,23 +391,22 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
private
static
PetriNet
createdSeparatedNetByLocation
(
PetriNet
petriNet
,
String
location
)
{
private
static
PetriNet
createdSeparatedNetByLocation
(
PetriNet
petriNet
,
String
location
)
{
PetriNet
separatedNet
=
petriNet
;
Set
<
String
>
removedTransitionIds
=
new
HashSet
<>();
Set
<
String
>
removedTransitionIds
=
new
HashSet
<>();
Set
<
String
>
removePlaceIds
=
new
HashSet
<>();
Set
<
String
>
removePlaceIds
=
new
HashSet
<>();
for
(
Place
place
:
separated
Net
.
allPlaces
())
{
for
(
Place
place
:
petri
Net
.
allPlaces
())
{
if
(!
place
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getSubNet
().
equals
(
location
))
{
if
(!
place
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getSubNet
().
equals
(
location
))
{
removePlaceIds
.
add
(
place
.
getId
());
removePlaceIds
.
add
(
place
.
getId
());
}
}
}
}
for
(
Transition
transition
:
separated
Net
.
allTransitions
())
{
for
(
Transition
transition
:
petri
Net
.
allTransitions
())
{
if
(!
transition
.
asInputSignalTransition
().
getStaticTransitionInformation
().
getSubNet
().
equals
(
location
))
{
if
(!
transition
.
asInputSignalTransition
().
getStaticTransitionInformation
().
getSubNet
().
equals
(
location
))
{
removedTransitionIds
.
add
(
transition
.
getId
());
removedTransitionIds
.
add
(
transition
.
getId
());
}
}
}
}
for
(
Arc
arc
:
separated
Net
.
allArcs
())
{
for
(
Arc
arc
:
petri
Net
.
allArcs
())
{
if
(
removedTransitionIds
.
contains
(
arc
.
getSource
().
getId
())
||
removedTransitionIds
.
contains
(
arc
.
getTarget
().
getId
())
if
(
removedTransitionIds
.
contains
(
arc
.
getSource
().
getId
())
||
removedTransitionIds
.
contains
(
arc
.
getTarget
().
getId
())
||
removePlaceIds
.
contains
(
arc
.
getSource
().
getId
())
||
removePlaceIds
.
contains
(
arc
.
getTarget
().
getId
()))
{
||
removePlaceIds
.
contains
(
arc
.
getSource
().
getId
())
||
removePlaceIds
.
contains
(
arc
.
getTarget
().
getId
()))
{
logger
.
info
(
"removing arc "
+
arc
.
getId
()
+
" from net"
);
logger
.
info
(
"removing arc "
+
arc
.
getId
()
+
" from net"
);
...
@@ -465,14 +414,14 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
...
@@ -465,14 +414,14 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
}
}
}
}
for
(
Place
place
:
separated
Net
.
allPlaces
())
{
for
(
Place
place
:
petri
Net
.
allPlaces
())
{
if
(!
place
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getSubNet
().
equals
(
location
))
{
if
(!
place
.
asOutputSignalPlace
().
getStaticPlaceInformation
().
getSubNet
().
equals
(
location
))
{
logger
.
info
(
"removing place "
+
place
.
getId
()
+
" from net"
);
logger
.
info
(
"removing place "
+
place
.
getId
()
+
" from net"
);
place
.
removeSelf
();
place
.
removeSelf
();
}
}
}
}
for
(
Transition
transition
:
separated
Net
.
allTransitions
())
{
for
(
Transition
transition
:
petri
Net
.
allTransitions
())
{
if
(
transition
.
asInputSignalTransition
().
getStaticTransitionInformation
().
isTopicTransitionInformation
()){
if
(
transition
.
asInputSignalTransition
().
getStaticTransitionInformation
().
isTopicTransitionInformation
()){
if
(!
transition
.
asInputSignalTransition
().
getStaticTransitionInformation
().
asTopicTransitionInformation
().
getSubNet
().
equals
(
location
))
{
if
(!
transition
.
asInputSignalTransition
().
getStaticTransitionInformation
().
asTopicTransitionInformation
().
getSubNet
().
equals
(
location
))
{
...
@@ -489,10 +438,10 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
...
@@ -489,10 +438,10 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
}
}
}
}
separated
Net
.
flushTreeCache
();
petri
Net
.
flushTreeCache
();
separated
Net
.
flushAttrAndCollectionCache
();
petri
Net
.
flushAttrAndCollectionCache
();
return
separated
Net
;
return
petri
Net
;
}
}
private
static
ToolInfo
buildTopicToolSpecifics
(
String
type
,
String
location
,
String
subnet
,
String
topic
,
int
inputLimit
,
int
outputLimit
,
JastAddList
<
InputSignalBinding
>
inputSignalBindings
)
{
private
static
ToolInfo
buildTopicToolSpecifics
(
String
type
,
String
location
,
String
subnet
,
String
topic
,
int
inputLimit
,
int
outputLimit
,
JastAddList
<
InputSignalBinding
>
inputSignalBindings
)
{
...
@@ -603,4 +552,46 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
...
@@ -603,4 +552,46 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> {
return
null
;
return
null
;
}
}
private
static
void
reconnectInputSignals
(
InputSignalTransition
sourceIst
,
InputSignalBinding
isb
)
{
InputSignalBinding
newIsb
=
new
InputSignalBinding
();
newIsb
.
setInputSignalValue
(
isb
.
getInputSignalValue
());
newIsb
.
setTransitionID
(
isb
.
getTransitionID
());
newIsb
.
setId
(
isb
.
getId
());
newIsb
.
setInputSignalID
(
isb
.
getInputSignalID
());
sourceIst
.
addMutualInputSignalBinding
(
newIsb
);
}
@NotNull
private
static
InputSignalTransition
createRosInputTransition
(
InputSignalTransition
ist
,
int
serviceCount
,
String
sufix
)
{
InputSignalTransition
sourceIst
=
new
InputSignalTransition
();
sourceIst
.
setName
(
new
Name
().
setText
(
ist
.
getName
().
getText
()
+
sufix
+
serviceCount
));
sourceIst
.
setId
(
ist
.
getId
()
+
sufix
+
serviceCount
);
return
sourceIst
;
}
@NotNull
private
static
ServiceTransitionInformation
copyServiceTransitionInformation
(
InputSignalTransition
ist
,
String
inLocation
,
String
inSubNet
)
{
ServiceTransitionInformation
tInfoSource
=
new
ServiceTransitionInformation
();
tInfoSource
.
setSubNet
(
inSubNet
);
tInfoSource
.
setLocation
(
inLocation
);
tInfoSource
.
setServiceName
(
ist
.
getStaticTransitionInformation
().
asServiceTransitionInformation
().
getServiceName
());
return
tInfoSource
;
}
private
static
void
reconnectSourceTransitionSignalsAndArcs
(
Transition
transition
,
InputSignalTransition
ist
,
Place
p
,
InputSignalTransition
sourceIst
)
{
// Reconnect Input Signals
for
(
InputSignalBinding
isb
:
ist
.
getStaticInputSignalBindingList
())
{
reconnectInputSignals
(
sourceIst
,
isb
);
}
// Get all incoming arcs and connect them to new output transition
for
(
Arc
arc
:
p
.
asOutputSignalPlace
().
getOutArcList
().
toArray
(
new
Arc
[
0
]))
{
if
(
arc
.
getTarget
().
getId
().
equals
(
transition
.
getId
()))
{
arc
.
setTarget
(
sourceIst
);
}
}
}
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment