diff options
Diffstat (limited to 'Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SGraphInconsistencyDetector.xtend')
-rw-r--r-- | Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SGraphInconsistencyDetector.xtend | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SGraphInconsistencyDetector.xtend b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SGraphInconsistencyDetector.xtend index 3a7c5041..230bb692 100644 --- a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SGraphInconsistencyDetector.xtend +++ b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SGraphInconsistencyDetector.xtend | |||
@@ -11,8 +11,11 @@ class SGraphInconsistencyDetector extends ModelGenerationMethodBasedGlobalConstr | |||
11 | var PartialInterpretation partialInterpretation | 11 | var PartialInterpretation partialInterpretation |
12 | var ViatraQueryMatcher<?> noEntry | 12 | var ViatraQueryMatcher<?> noEntry |
13 | var ViatraQueryMatcher<?> entryHasNoOutgoing | 13 | var ViatraQueryMatcher<?> entryHasNoOutgoing |
14 | var ViatraQueryMatcher<?> choiceHasNoOutgiong | ||
15 | var ViatraQueryMatcher<?> choiceHasNoIncoming | ||
16 | //var ViatraQueryMatcher<?> noSynch | ||
14 | var ViatraQueryMatcher<?> synchronizationHasNoOutgoing | 17 | var ViatraQueryMatcher<?> synchronizationHasNoOutgoing |
15 | var ViatraQueryMatcher<?> noSynch | 18 | |
16 | var ViatraQueryMatcher<?> synchronizedSiblingRegions | 19 | var ViatraQueryMatcher<?> synchronizedSiblingRegions |
17 | var ViatraQueryMatcher<?> noStateInRegion | 20 | var ViatraQueryMatcher<?> noStateInRegion |
18 | 21 | ||
@@ -36,33 +39,48 @@ class SGraphInconsistencyDetector extends ModelGenerationMethodBasedGlobalConstr | |||
36 | it.fullyQualifiedName.equals("unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_partialsnapshot_mavo_yakindu_noOutgoingTransitionFromEntry") | 39 | it.fullyQualifiedName.equals("unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_partialsnapshot_mavo_yakindu_noOutgoingTransitionFromEntry") |
37 | ].head.getMatcher(context.queryEngine) | 40 | ].head.getMatcher(context.queryEngine) |
38 | 41 | ||
39 | this.synchronizationHasNoOutgoing = method.unfinishedWF.filter[ | 42 | this.noStateInRegion = method.unfinishedWF.filter[ |
40 | it.fullyQualifiedName.equals("unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_partialsnapshot_mavo_yakindu_hasNoOutgoing") | 43 | it.fullyQualifiedName.equals("unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_partialsnapshot_mavo_yakindu_noStateInRegion") |
41 | ].head.getMatcher(context.queryEngine) | 44 | ].head.getMatcher(context.queryEngine) |
42 | 45 | ||
43 | this.noSynch = method.unfinishedWF.filter[ | 46 | this.choiceHasNoOutgiong = method.unfinishedWF.filter[ |
44 | it.fullyQualifiedName.equals("unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_partialsnapshot_mavo_yakindu_noSynch") | 47 | it.fullyQualifiedName.equals("unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_partialsnapshot_mavo_yakindu_choiceHasNoOutgoing") |
45 | ].head.getMatcher(context.queryEngine) | 48 | ].head.getMatcher(context.queryEngine) |
46 | 49 | ||
50 | // this.choiceHasNoIncoming = method.unfinishedWF.filter[ | ||
51 | // it.fullyQualifiedName.equals("unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_partialsnapshot_mavo_yakindu_choiceHasNoIncoming") | ||
52 | // ].head.getMatcher(context.queryEngine) | ||
53 | } catch(Exception e) { } | ||
54 | try{ | ||
55 | // this.noSynch = method.unfinishedWF.filter[ | ||
56 | // it.fullyQualifiedName.equals("unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_partialsnapshot_mavo_yakindu_noSynch") | ||
57 | // ].head.getMatcher(context.queryEngine) | ||
58 | // | ||
47 | this.synchronizedSiblingRegions = method.unfinishedWF.filter[ | 59 | this.synchronizedSiblingRegions = method.unfinishedWF.filter[ |
48 | it.fullyQualifiedName.equals("unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_partialsnapshot_mavo_yakindu_SynchronizedRegionDoesNotHaveMultipleRegions") | 60 | it.fullyQualifiedName.equals("unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_partialsnapshot_mavo_yakindu_SynchronizedRegionDoesNotHaveMultipleRegions") |
49 | ].head.getMatcher(context.queryEngine) | 61 | ].head.getMatcher(context.queryEngine) |
50 | 62 | ||
51 | this.noStateInRegion = method.unfinishedWF.filter[ | 63 | this.synchronizationHasNoOutgoing = method.unfinishedWF.filter[ |
52 | it.fullyQualifiedName.equals("unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_partialsnapshot_mavo_yakindu_noStateInRegion") | 64 | it.fullyQualifiedName.equals("unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_partialsnapshot_mavo_yakindu_synchHasNoOutgoing") |
53 | ].head.getMatcher(context.queryEngine) | 65 | ].head.getMatcher(context.queryEngine) |
54 | } catch(Exception e) { } | 66 | } catch(Exception e) { } |
55 | } | 67 | } |
56 | 68 | ||
57 | override checkGlobalConstraint(ThreadContext context) { | 69 | override checkGlobalConstraint(ThreadContext context) { |
58 | if(noEntry !== null) { | 70 | if(noEntry !== null) { |
59 | val requiredNewObjects = | 71 | var requiredNewObjects = |
60 | noEntry.countMatches*2 + | 72 | noEntry.countMatches*2 + |
61 | entryHasNoOutgoing.countMatches + | 73 | entryHasNoOutgoing.countMatches + |
62 | synchronizationHasNoOutgoing.countMatches + | 74 | choiceHasNoOutgiong.countMatches+ |
63 | noSynch.countMatches*2 + | 75 | //choiceHasNoIncoming.countMatches+ |
64 | synchronizedSiblingRegions.countMatches*4 | ||
65 | noStateInRegion.countMatches | 76 | noStateInRegion.countMatches |
77 | if(synchronizationHasNoOutgoing!= null) { | ||
78 | requiredNewObjects += | ||
79 | //noSynch.countMatches*2 + | ||
80 | synchronizationHasNoOutgoing.countMatches + | ||
81 | synchronizedSiblingRegions.countMatches*4 | ||
82 | } | ||
83 | |||
66 | val availableNewObjects = partialInterpretation.maxNewElements | 84 | val availableNewObjects = partialInterpretation.maxNewElements |
67 | val res = availableNewObjects >= requiredNewObjects | 85 | val res = availableNewObjects >= requiredNewObjects |
68 | //println('''[«availableNewObjects» >= «requiredNewObjects»] = «res»''') | 86 | //println('''[«availableNewObjects» >= «requiredNewObjects»] = «res»''') |