ontomde-java 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +10 -0
- data/Manifest.txt +156 -0
- data/README.txt +98 -0
- data/Rakefile +21 -0
- data/bin/ontomde-java +5 -0
- data/generateRdocFile.sh +16 -0
- data/lib/ontomde-java.rb +45 -0
- data/lib/ontomde-java/crank.rb +13 -0
- data/lib/ontomde-java/crank/context.rb +384 -0
- data/lib/ontomde-java/crank/crankJpa.rb +103 -0
- data/lib/ontomde-java/crank/equals.rb +83 -0
- data/lib/ontomde-java/crank/facelets.rb +243 -0
- data/lib/ontomde-java/crank/facesconfig.rb +113 -0
- data/lib/ontomde-java/crank/helper.rb +46 -0
- data/lib/ontomde-java/crank/main.rb +51 -0
- data/lib/ontomde-java/crank/menu.rb +39 -0
- data/lib/ontomde-java/crank/menu2.rb +78 -0
- data/lib/ontomde-java/crank/validation.rb +34 -0
- data/lib/ontomde-java/ejb2.rb +3 -0
- data/lib/ontomde-java/ejb2/main-ejb2.rb +194 -0
- data/lib/ontomde-java/flex.rb +7 -0
- data/lib/ontomde-java/flex/Editor.mxml.as.rb +184 -0
- data/lib/ontomde-java/flex/Editor.mxml.rb +701 -0
- data/lib/ontomde-java/flex/ImportationAS.rb +40 -0
- data/lib/ontomde-java/flex/ValueObjectAS.rb +338 -0
- data/lib/ontomde-java/flex/fileTypes.rb +19 -0
- data/lib/ontomde-java/flex/main.rb +347 -0
- data/lib/ontomde-java/frontend/command.rb +324 -0
- data/lib/ontomde-java/frontend/command.rdoc +583 -0
- data/lib/ontomde-java/frontend/defaultOptions.rb +124 -0
- data/lib/ontomde-java/frontend/options.rb +555 -0
- data/lib/ontomde-java/frontend/steps.rb +287 -0
- data/lib/ontomde-java/java/accessorCode.rb +528 -0
- data/lib/ontomde-java/java/accessorSignature.rb +347 -0
- data/lib/ontomde-java/java/annotationOntoMDE.rb +88 -0
- data/lib/ontomde-java/java/apache.rb +34 -0
- data/lib/ontomde-java/java/build.rb +80 -0
- data/lib/ontomde-java/java/collectionMapping.rb +112 -0
- data/lib/ontomde-java/java/component.rb +446 -0
- data/lib/ontomde-java/java/contextualize.rb +43 -0
- data/lib/ontomde-java/java/enumAssignable.rb +75 -0
- data/lib/ontomde-java/java/enumCompatibilityLayer.rb +195 -0
- data/lib/ontomde-java/java/equals.rb +91 -0
- data/lib/ontomde-java/java/groovy.rb +95 -0
- data/lib/ontomde-java/java/java.rb +1329 -0
- data/lib/ontomde-java/java/java.rdoc +78 -0
- data/lib/ontomde-java/java/javaDatatypeMapping.rb +156 -0
- data/lib/ontomde-java/java/javaHelper.rb +25 -0
- data/lib/ontomde-java/java/java_todo.rdoc +3 -0
- data/lib/ontomde-java/java/javadoc.rb +254 -0
- data/lib/ontomde-java/java/meta.rb +28 -0
- data/lib/ontomde-java/java/operationAsClass.rb +144 -0
- data/lib/ontomde-java/java/security.rb +260 -0
- data/lib/ontomde-java/java/stateMachine.rb +415 -0
- data/lib/ontomde-java/java/tenant.rb +65 -0
- data/lib/ontomde-java/java/xsd.rb +1363 -0
- data/lib/ontomde-java/java/xsdCollectionMapping.rb +112 -0
- data/lib/ontomde-java/java/xsdDatatypeMapping.rb +103 -0
- data/lib/ontomde-java/jpa.rb +17 -0
- data/lib/ontomde-java/jpa/configuration.rb +176 -0
- data/lib/ontomde-java/jpa/finder.rb +102 -0
- data/lib/ontomde-java/jpa/jpa.rb +531 -0
- data/lib/ontomde-java/jpa/jpa.rdoc +20 -0
- data/lib/ontomde-java/jpa/locking.rb +18 -0
- data/lib/ontomde-java/jpa/mapping.rb +314 -0
- data/lib/ontomde-java/jpa/redefined.rb +77 -0
- data/lib/ontomde-java/jpa/simulationAutoImplement.rb +54 -0
- data/lib/ontomde-java/jpdl.rb +9 -0
- data/lib/ontomde-java/jpdl/bpm.pprj +1745 -0
- data/lib/ontomde-java/jpdl/bpm.rdf +140 -0
- data/lib/ontomde-java/jpdl/bpm.rdfs +231 -0
- data/lib/ontomde-java/jpdl/constant.rb +5 -0
- data/lib/ontomde-java/jpdl/graphic.rb +52 -0
- data/lib/ontomde-java/jpdl/jpdl.rb +281 -0
- data/lib/ontomde-java/jpdl/jpdl_deploy.rb +114 -0
- data/lib/ontomde-java/jpdl/main.rb +348 -0
- data/lib/ontomde-java/jpdl/main.rdoc +2 -0
- data/lib/ontomde-java/jpdl/processOperationToClass.rb +316 -0
- data/lib/ontomde-java/kbjava.rb +6 -0
- data/lib/ontomde-java/kbjava/rdfToJava.rb +407 -0
- data/lib/ontomde-java/struts.rb +27 -0
- data/lib/ontomde-java/struts/MessageResources.rb +359 -0
- data/lib/ontomde-java/struts/action.rb +883 -0
- data/lib/ontomde-java/struts/blob.rb +11 -0
- data/lib/ontomde-java/struts/exceptionHandling.rb +167 -0
- data/lib/ontomde-java/struts/footer.rb +128 -0
- data/lib/ontomde-java/struts/form.rb +450 -0
- data/lib/ontomde-java/struts/header.rb +37 -0
- data/lib/ontomde-java/struts/header_link.rb +39 -0
- data/lib/ontomde-java/struts/jsp_edit.rb +870 -0
- data/lib/ontomde-java/struts/jsp_edit_field.rb +1 -0
- data/lib/ontomde-java/struts/jsp_edit_js.rb +124 -0
- data/lib/ontomde-java/struts/jsp_index.rb +136 -0
- data/lib/ontomde-java/struts/localeAction.rb +641 -0
- data/lib/ontomde-java/struts/main.rb +41 -0
- data/lib/ontomde-java/struts/mappingForBean.rb +132 -0
- data/lib/ontomde-java/struts/mappingForJsp.rb +272 -0
- data/lib/ontomde-java/struts/mappingToJavaHierarchy.rb +87 -0
- data/lib/ontomde-java/struts/reloadAction.rb +33 -0
- data/lib/ontomde-java/struts/spring.rb +89 -0
- data/lib/ontomde-java/struts/struts-config.rb +232 -0
- data/lib/ontomde-java/struts/validation.rb +116 -0
- data/lib/ontomde-java/struts/validator.rb +341 -0
- data/lib/ontomde-java/struts/webXml.rb +195 -0
- data/lib/ontomde-java/struts/xmlForm.rb +308 -0
- data/lib/ontomde-java/version.rb +5 -0
- data/profiling.xls +0 -0
- data/test/.classpath +14 -0
- data/test/.project +17 -0
- data/test/.settings/org.eclipse.jdt.core.prefs +23 -0
- data/test/Rakefile +71 -0
- data/test/build.xml +34 -0
- data/test/classpath.rb +15 -0
- data/test/lib/junit-4.1.jar +0 -0
- data/test/load1.rb +3 -0
- data/test/load2.rb +3 -0
- data/test/log4j.properties +46 -0
- data/test/model/.project +11 -0
- data/test/model/BigProject.mdzip +0 -0
- data/test/model/BigProject.mdzip.nt +102866 -0
- data/test/model/ClassDiagram.EntArch.gif +0 -0
- data/test/model/ClassDiagram.emx.gif +0 -0
- data/test/model/ClassDiagram.mdzip.gif +0 -0
- data/test/model/model_ea71.bis.ea.xmi +149 -0
- data/test/model/model_ea71.ea.xmi +4470 -0
- data/test/model/model_ea71.eap +0 -0
- data/test/model/model_ea71_README.txt +8 -0
- data/test/model/multipleInheritance.emx +466 -0
- data/test/model/multipleInheritance.emx.nt +2428 -0
- data/test/model/simple1-530.ofp +0 -0
- data/test/model/simple1-includedAsReference.emx +169 -0
- data/test/model/simple1.emx +3729 -0
- data/test/model/simple1.emx.fragments.nt +81 -0
- data/test/model/simple1.emx.nt +5760 -0
- data/test/model/simple1.mdzip +0 -0
- data/test/model/simple1.mdzip.nt +11500 -0
- data/test/model/simple1.oe530.nt +1986 -0
- data/test/model/simple1.oe600.nt +1627 -0
- data/test/src/RuntimeTest.java +656 -0
- data/test/src/testsLevel1.java +174 -0
- data/test/src/testsLevel2.java +29 -0
- data/test/src/testsLevel3.java +40 -0
- data/test/test-ea7.sh +15 -0
- data/test/test-magicDraw.sh +10 -0
- data/test/test-mi.sh +9 -0
- data/test/test-oe530.sh +10 -0
- data/test/test-oe600.sh +11 -0
- data/test/test-rsm.sh +11 -0
- data/test/test_export_ea71.rb +5 -0
- data/test/test_export_oe530.rb +4 -0
- data/test/test_export_oe600.rb +4 -0
- data/test/test_export_rsm60.rb +4 -0
- data/test/trace +419 -0
- data/test/uml_test.rb +1434 -0
- data/test/uml_test.xls +0 -0
- data/test/unit_test.rb +6 -0
- metadata +224 -0
@@ -0,0 +1,114 @@
|
|
1
|
+
|
2
|
+
module Mrdf_Repository
|
3
|
+
|
4
|
+
BPM_JPDL_DEPLOY_CLASS="xmda.jpdl.Deploy"
|
5
|
+
|
6
|
+
# Generates a JPDL deployer as a JUNIT class
|
7
|
+
# Junit provides easy diagnostic an a convenient GUI
|
8
|
+
def bpm_genJPDLDeploy
|
9
|
+
#TODO A enlever
|
10
|
+
return
|
11
|
+
mrdf=context[:umlModel,self]
|
12
|
+
muml=mrdf.umlx_reserved_model
|
13
|
+
|
14
|
+
deploy=muml.umlx_getOrCreateClass(BPM_JPDL_DEPLOY_CLASS)
|
15
|
+
return unless deploy.java_customCode.empty?
|
16
|
+
|
17
|
+
deploy.umlx_businessMethod=RDF_FALSE
|
18
|
+
deploy.apaCom_addLogger!
|
19
|
+
deploy.umlx_external=RDF_FALSE
|
20
|
+
deploy.java_import_add('org.junit.*')
|
21
|
+
deploy.java_import_add('java.io.PrintWriter');
|
22
|
+
deploy.java_import_add('java.io.StringWriter');
|
23
|
+
|
24
|
+
deploy.db_isTransient=RDF_TRUE
|
25
|
+
deploy.struts_isForm=RDF_FALSE
|
26
|
+
|
27
|
+
|
28
|
+
bpm_allProcess.each { |c|
|
29
|
+
op=deploy.umlx_createAndAddOperation("#{c.rdf_uri}_deploy","deploy_#{c.bpm_processName.to_s.tr('.','_')}")
|
30
|
+
op.java_annotation_add('@org.junit.Test')
|
31
|
+
op.umlx_businessMethod=RDF_FALSE
|
32
|
+
op.java_code=%{
|
33
|
+
#{c.bpm_javaProcessJobsClass_one.java_qualifiedName} c=new #{c.bpm_javaProcessJobsClass_one.java_qualifiedName}();
|
34
|
+
try {
|
35
|
+
c.deploy();
|
36
|
+
} catch (Exception e) {
|
37
|
+
StringWriter s=new StringWriter();
|
38
|
+
PrintWriter p = new PrintWriter(s);
|
39
|
+
e.printStackTrace(p);
|
40
|
+
org.junit.Assert.fail(e.toString()+"\\n\\n"+s.toString());
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}
|
44
|
+
bpm_allProcess.each { |c|
|
45
|
+
op=deploy.umlx_createAndAddOperation("#{c.rdf_uri}_deploy}","ping_#{c.bpm_processName.to_s.tr('.','_')}")
|
46
|
+
op.java_annotation_add('@org.junit.Test')
|
47
|
+
op.umlx_businessMethod=RDF_FALSE
|
48
|
+
op.java_code=%{
|
49
|
+
#{c.bpm_javaProcessJobsClass_one.java_qualifiedName} c=new #{c.bpm_javaProcessJobsClass_one.java_qualifiedName}();
|
50
|
+
try {
|
51
|
+
c.start();
|
52
|
+
} catch (Exception e) {
|
53
|
+
StringWriter s=new StringWriter();
|
54
|
+
PrintWriter p = new PrintWriter(s);
|
55
|
+
e.printStackTrace(p);
|
56
|
+
org.junit.Assert.fail(e.toString()+"\\n\\n"+s.toString());
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
61
|
+
|
62
|
+
deploy.java_customCode= %{
|
63
|
+
/**
|
64
|
+
* @throws java.lang.Exception
|
65
|
+
*/
|
66
|
+
@org.junit.BeforeClass
|
67
|
+
public static void setUpBeforeClass() throws Exception {
|
68
|
+
}
|
69
|
+
/**
|
70
|
+
* @throws java.lang.Exception
|
71
|
+
*/
|
72
|
+
@org.junit.AfterClass
|
73
|
+
public static void tearDownAfterClass() throws Exception {
|
74
|
+
}
|
75
|
+
/**
|
76
|
+
* @throws java.lang.Exception
|
77
|
+
*/
|
78
|
+
@org.junit.Before
|
79
|
+
public void setUp() throws Exception {
|
80
|
+
}
|
81
|
+
/**
|
82
|
+
* @throws java.lang.Exception
|
83
|
+
*/
|
84
|
+
@org.junit.After
|
85
|
+
public void tearDown() throws Exception {
|
86
|
+
//TODO: cleanup db
|
87
|
+
}
|
88
|
+
public static junit.framework.Test suite(){
|
89
|
+
return new junit.framework.JUnit4TestAdapter(#{deploy.java_qualifiedName}.class);
|
90
|
+
}
|
91
|
+
@Test
|
92
|
+
public void check_database_connection() {
|
93
|
+
log.error("TODO: check db connection");
|
94
|
+
}
|
95
|
+
@Test
|
96
|
+
public void install_jbpm_schema() {
|
97
|
+
log.error("TODO: install jbpm schema");
|
98
|
+
|
99
|
+
|
100
|
+
//private JbpmConfiguration jbpmConfiguration = null;
|
101
|
+
//protected void deploy(String processDef) throws Exception {
|
102
|
+
// try {
|
103
|
+
// jbpmContext = jbpmConfiguration.createJbpmContext();
|
104
|
+
// jbpmContext.deployProcessDefinition(processDef);
|
105
|
+
// } finally {
|
106
|
+
// jbpmContext.close();
|
107
|
+
// }
|
108
|
+
//}
|
109
|
+
|
110
|
+
|
111
|
+
}
|
112
|
+
}
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,348 @@
|
|
1
|
+
#:include: main.rdoc
|
2
|
+
|
3
|
+
require "rexml/document"
|
4
|
+
|
5
|
+
module Mrdf_Repository
|
6
|
+
def java_getClassWithQualifiedName(qname)
|
7
|
+
uml_Class_all.each { |f|
|
8
|
+
return f if f.java_qualifiedName.to_s.casecmp(qname)==0
|
9
|
+
}
|
10
|
+
puts "not found #{qname}"
|
11
|
+
#exit 1
|
12
|
+
return nil
|
13
|
+
end
|
14
|
+
|
15
|
+
#loads bpm meta-model from protege/2000 DSL model.
|
16
|
+
#
|
17
|
+
#You can browse bpm meta-model with protege/2000 using
|
18
|
+
#bpm.pprj protege/2000 project in this file directory.
|
19
|
+
def bpm_loadBPM
|
20
|
+
loadMetaModelFromFile("#{File.dirname(__FILE__)}/bpm.rdfs",true)
|
21
|
+
end
|
22
|
+
|
23
|
+
def bpm_transform!
|
24
|
+
#mtk_writeSession("bpm.log") {
|
25
|
+
s=Array.new
|
26
|
+
each { |k,res|
|
27
|
+
next unless res.kind_of?(Mbpm_process)
|
28
|
+
s << res
|
29
|
+
}
|
30
|
+
s.each { |res|
|
31
|
+
res.bpm_transform!
|
32
|
+
}
|
33
|
+
#bpm_dumpJPDL
|
34
|
+
bpm_genJPDLDeploy
|
35
|
+
end
|
36
|
+
|
37
|
+
#adds ping node to all process in model
|
38
|
+
#(feature used for process deployement test)
|
39
|
+
def bpm_addPingNode!
|
40
|
+
bpm_allProcess.each { |c|
|
41
|
+
c.bpm_addPingNode!
|
42
|
+
}
|
43
|
+
end
|
44
|
+
|
45
|
+
def bpm_allProcess(ret=Array.new)
|
46
|
+
self.each { |k,c|
|
47
|
+
ret<< c if c.kind_of?(Mbpm_process)
|
48
|
+
}
|
49
|
+
return ret
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
module Muml_ClassProcess
|
54
|
+
#Surcharge pour les objets de type Process cette méthode
|
55
|
+
#afin de ne pas avoir l'id généré
|
56
|
+
def jpa_deriveFromPersistent?
|
57
|
+
return true;
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
module Mbpm_process
|
63
|
+
rdf_safe_attr_reader_many :bpm_javaProcessJobsClass
|
64
|
+
|
65
|
+
# returns a qualified name for this process
|
66
|
+
#(return processName itself because processName is supposed to be a qualifiedName)
|
67
|
+
def bpm_qualifiedName
|
68
|
+
return bpm_processName.to_s
|
69
|
+
end
|
70
|
+
|
71
|
+
def bpm_getProcessClass(muml)
|
72
|
+
bpmClass = BPM::BpmClass
|
73
|
+
bpmClass += "<#{self.bpm_processReturnTypeOrNullReturn}>"
|
74
|
+
ret=muml.umlx_getOrCreateClass(bpmClass)
|
75
|
+
ret.java_isGeneric=RDF_TRUE
|
76
|
+
#ret.db_isTransient=RDF_FALSE
|
77
|
+
ret.db_isTransient=RDF_FALSE
|
78
|
+
puts "ProcessClass = #{bpmClass}"
|
79
|
+
return ret
|
80
|
+
end
|
81
|
+
|
82
|
+
def bpm_transform!
|
83
|
+
mrdf=context[:umlModel,self.rdf_Repository]
|
84
|
+
muml=mrdf.umlx_reserved_model
|
85
|
+
j=mrdf.java_getClassWithQualifiedName(bpm_qualifiedName)
|
86
|
+
j=muml.umlx_getOrCreateClass("#{bpm_qualifiedName}",::Muml_Namespace::UMLX_SEARCH_EVERY_MODEL) if j.nil?
|
87
|
+
#TODO Gérer la récupération dans la signature de la méthode du type et la génération de deux méthodes
|
88
|
+
#Evite la génération de l'ID
|
89
|
+
j.extend(Muml_ClassProcess);
|
90
|
+
j.db_isTransient=RDF_FALSE
|
91
|
+
self.bpm_javaProcessJobsClass=j # store direct reference
|
92
|
+
j.umlx_external="false"
|
93
|
+
|
94
|
+
j.umlx_createAndAddGeneralization( bpm_getProcessClass(muml))
|
95
|
+
|
96
|
+
|
97
|
+
bpm_processNode.each {|n|
|
98
|
+
next if n.kind_of?(Mbpm_passive_Node)
|
99
|
+
if n.kind_of?(Mbpm_source_Node)
|
100
|
+
n.bpm_createEnumerationForTransitions!(j)
|
101
|
+
end
|
102
|
+
#n.bpm_createConnectorForNodeAction!
|
103
|
+
n.bpm_addJavaProcessOperation(j)
|
104
|
+
}
|
105
|
+
|
106
|
+
m=j.umlx_createAndAddOperation("#{j.rdf_uri}_processDefinition","getProcessDefinition")
|
107
|
+
m.java_annotation_add("@Override")
|
108
|
+
p=m.umlx_createAndAddReturnParameter("#{j.rdf_uri}_ret","return")
|
109
|
+
p.uml_type=j.umlx_dataType_string
|
110
|
+
m.java_code=%{return ""\n#{mtk_stss{bpm_writeJPDL}.gsub(/"/,'\\"').gsub(/^(.*)$/,' +"\1"')};}
|
111
|
+
|
112
|
+
# external process name
|
113
|
+
m=j.umlx_createAndAddOperation("#{j.rdf_uri}_externalProcessName","getExternalProcessName")
|
114
|
+
p=m.umlx_createAndAddReturnParameter("#{j.rdf_uri}_ret","return")
|
115
|
+
p.uml_type=j.umlx_dataType_string
|
116
|
+
m.java_code=%{return "#{bpm_qualifiedName}";}
|
117
|
+
|
118
|
+
|
119
|
+
me=j.umlx_createAndAddOperation("#{j.rdf_uri}_onEnd","xmdaOnEnd")
|
120
|
+
me.java_annotation_add("@Override")
|
121
|
+
p=me.umlx_createAndAddReturnParameter("#{me.rdf_uri}_ret","return")
|
122
|
+
|
123
|
+
p.uml_type=j.umlx_getOrCreateClass("#{bpm_processReturnTypeOrNullReturn}")
|
124
|
+
me.java_code=%{return null;}
|
125
|
+
|
126
|
+
# p.uml_type=j.umlx_getOrCreateClass("java.lang.Class")
|
127
|
+
|
128
|
+
# external process id
|
129
|
+
# moved to base class
|
130
|
+
#p=j.umlx_createAndAddProperty("#{j.rdf_uri}_externalBPMid","BpmExternalId")
|
131
|
+
#m.uml_type=j.umlx_dataType_long
|
132
|
+
|
133
|
+
end
|
134
|
+
|
135
|
+
#pingTest node is a node added to
|
136
|
+
#ping the process for testing purposses
|
137
|
+
#and deployement test purposes
|
138
|
+
def bpm_addPingNode!
|
139
|
+
return unless context[:bpm_addPingNode,true]
|
140
|
+
s=bpm_getOrCreateStartNode
|
141
|
+
e=bpm_getOrCreateEndNode
|
142
|
+
d=bpm_createAndAddSynchronousDecisionNode("_pingMode")
|
143
|
+
t=s.bpm_leavingTransition_one
|
144
|
+
|
145
|
+
#insert node d between s and first node after s
|
146
|
+
d.bpm_addTransition!("productionMode",t.bpm_destinationNode_one)
|
147
|
+
d.bpm_addTransition!("testMode",e)
|
148
|
+
t.bpm_destinationNode=d
|
149
|
+
end
|
150
|
+
|
151
|
+
#create
|
152
|
+
def bpm_createAndAddSynchronousDecisionNode(name)
|
153
|
+
ret=Cbpm_synchronousDecisionNode.new(self.rdf_Repository,"#{self.rdf_uri}_#{name}")
|
154
|
+
ret.bpm_nodeName=name
|
155
|
+
self.bpm_processNode_add(ret)
|
156
|
+
return ret
|
157
|
+
end
|
158
|
+
|
159
|
+
#returns process start node
|
160
|
+
#creates one if necessary
|
161
|
+
def bpm_getOrCreateStartNode
|
162
|
+
bpm_processNode.each {|n|
|
163
|
+
return n if n.kind_of?(Mbpm_startNode)
|
164
|
+
}
|
165
|
+
ret=Cbpm_startNode.new(self.rdf_Repository,"#{self.rdf_uri}_startNode")
|
166
|
+
ret.bpm_nodeName="startNode"
|
167
|
+
self.bpm_processNode_add(ret)
|
168
|
+
return ret
|
169
|
+
end
|
170
|
+
#returns process start node
|
171
|
+
#creates one if necessary
|
172
|
+
def bpm_getOrCreateEndNode
|
173
|
+
bpm_processNode.each {|n|
|
174
|
+
return n if n.kind_of?(Mbpm_endNode)
|
175
|
+
}
|
176
|
+
ret=Cbpm_startNode.new(self.rdf_Repository,"#{self.rdf_uri}_endNode")
|
177
|
+
ret.bpm_nodeName="endNode"
|
178
|
+
self.bpm_processNode_add(ret)
|
179
|
+
return ret
|
180
|
+
end
|
181
|
+
|
182
|
+
def bpm_graphGen_dot
|
183
|
+
mtk_writeSession("bpm.dot") {
|
184
|
+
write("digraph {\n")
|
185
|
+
bpm_processNode.each {|n|
|
186
|
+
n.bpm_graphGen_dot
|
187
|
+
}
|
188
|
+
write ("} // end of file\n")
|
189
|
+
}
|
190
|
+
end
|
191
|
+
end
|
192
|
+
module Mbpm_named_Node
|
193
|
+
# returns a qualified name for this node
|
194
|
+
def bpm_qualifiedName
|
195
|
+
return "#{bpm_processNode_inv_one.bpm_qualifiedName}.#{bpm_nodeName}"
|
196
|
+
end
|
197
|
+
|
198
|
+
def hasMultipleTransitions?
|
199
|
+
return false
|
200
|
+
end
|
201
|
+
|
202
|
+
#adds a method in java process for this node
|
203
|
+
def bpm_addJavaProcessOperation(j)
|
204
|
+
o=nil
|
205
|
+
j.uml_ownedOperation.each { |op|
|
206
|
+
o=op if op.java_Name.to_s.casecmp(op.java_safeName(self.bpm_nodeName.to_s))==0
|
207
|
+
}
|
208
|
+
o=j.umlx_createAndAddOperation(self.rdf_uri+"meth",self.bpm_nodeName) if o.nil?
|
209
|
+
o.uml_name=self.bpm_nodeName #case fix
|
210
|
+
if self.kind_of?(Mbpm_source_Node) && hasMultipleTransitions?
|
211
|
+
r=o.umlx_createAndAddReturnParameter(o.rdf_uri+"_return")
|
212
|
+
r.uml_type=self.bpm_javaTransitionNameEnum_one
|
213
|
+
o.java_code=<<END
|
214
|
+
//TODO: replace this test code by real implementation
|
215
|
+
log.debug("test method called #{o.uml_name}");
|
216
|
+
return #{self.bpm_javaTransitionNameEnum_one.java_qualifiedName}.values()[0];
|
217
|
+
END
|
218
|
+
else
|
219
|
+
o.java_code=<<END
|
220
|
+
//TODO: replace this test code by real implementation
|
221
|
+
log.debug("test method called #{o.uml_name}");
|
222
|
+
END
|
223
|
+
end
|
224
|
+
if self.kind_of?(Mbpm_asynchronousNode)
|
225
|
+
#Ajout du paramètre callback
|
226
|
+
p=o.umlx_createAndAddParameter(o.rdf_uri+"_param", "_callback")
|
227
|
+
mrdf=context[:umlModel,self.rdf_Repository]
|
228
|
+
muml=mrdf.umlx_reserved_model
|
229
|
+
i=muml.umlx_getOrCreateInterface(BPM::CallbackClass)
|
230
|
+
i.umlx_external="true"
|
231
|
+
p.uml_type=i
|
232
|
+
end
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
module Mbpm_source_Node
|
237
|
+
rdf_safe_attr_reader_many :bpm_javaTransitionNameEnum
|
238
|
+
|
239
|
+
#Indique si ce noeud a plusieurs sorties et donc si on génère un Enum pour son type de retour
|
240
|
+
def hasMultipleTransitions?
|
241
|
+
return false if bpm_leavingTransition.nil?
|
242
|
+
nb = 0
|
243
|
+
bpm_leavingTransition.each { |transition|
|
244
|
+
nb += 1 if !transition.kind_of?(Mbpm_timeOutTransition)
|
245
|
+
}
|
246
|
+
return nb > 1
|
247
|
+
end
|
248
|
+
|
249
|
+
# creates an uml enumeration listing
|
250
|
+
# every node leaving this transition
|
251
|
+
# This is usefull for decision node.
|
252
|
+
def bpm_createEnumerationForTransitions!(processClass)
|
253
|
+
mrdf=context[:umlModel,self.rdf_Repository]
|
254
|
+
muml=mrdf.umlx_reserved_model
|
255
|
+
p=processClass.umlx_owner_one
|
256
|
+
return if !hasMultipleTransitions?
|
257
|
+
|
258
|
+
p=p.umlx_getOrCreatePackage(p.context[:bpm_javaSubPackage],p)
|
259
|
+
p=p.umlx_getOrCreatePackage(processClass.uml_name.to_s)
|
260
|
+
|
261
|
+
i=p.umlx_getOrCreateEnumeration("#{bpm_nodeName}_BpmTransitions",p)
|
262
|
+
i.umlx_external="false"
|
263
|
+
self.bpm_javaTransitionNameEnum=i
|
264
|
+
bpm_leavingTransition.each { |t|
|
265
|
+
i.umlx_createAndAddLiteral(t.bpm_transitionName.to_s)
|
266
|
+
}
|
267
|
+
end
|
268
|
+
end
|
269
|
+
module Mbpm_decision_Node
|
270
|
+
def not_used_bpm_createConnectorForNodeAction!
|
271
|
+
mrdf=context[:umlModel,self.rdf_Repository]
|
272
|
+
#muml=mrdf.umlx_reserved_model
|
273
|
+
j=muml.umlx_getOrCreateClass("#{bpm_qualifiedName} Connector")
|
274
|
+
j.umlx_external="false"
|
275
|
+
|
276
|
+
|
277
|
+
m=j.umlx_createAndAddOperation("#{self.rdf_uri}_connectorMethod","execute")
|
278
|
+
i=muml.umlx_getOrCreateInterface("jpdl.anInterface_tbd")
|
279
|
+
i.umlx_external="true"
|
280
|
+
j.umlx_createAndAddImplementation(i)
|
281
|
+
|
282
|
+
end
|
283
|
+
end
|
284
|
+
module Mbpm_node
|
285
|
+
def bpm_graphGen_dot
|
286
|
+
return # todo
|
287
|
+
write %{#{self.dotId} [#{bpm_dotStyle}]\n}
|
288
|
+
bpm_leavingTransition.each { |t|
|
289
|
+
e=t.bpm_enteringTransition_inv_one
|
290
|
+
write %{#{self.dotId} -> #{e.dotId} \n}
|
291
|
+
} if kind_of?(Mbpm_source_Node)
|
292
|
+
|
293
|
+
end
|
294
|
+
|
295
|
+
end
|
296
|
+
|
297
|
+
|
298
|
+
module Mbpm_startNode
|
299
|
+
def bpm_nodeName
|
300
|
+
return "start"
|
301
|
+
end
|
302
|
+
end
|
303
|
+
|
304
|
+
module Mbpm_endNode
|
305
|
+
def bpm_nodeName
|
306
|
+
return "end"
|
307
|
+
end
|
308
|
+
end
|
309
|
+
|
310
|
+
module Mbpm_source_Node
|
311
|
+
def bpm_addTransition!(transitionName,targetNode)
|
312
|
+
t=Cbpm_transition.new(self.rdf_Repository,"#{self.rdf_uri}_#{transitionName}")
|
313
|
+
self.bpm_leavingTransition_add(t)
|
314
|
+
t.bpm_destinationNode=targetNode
|
315
|
+
t.bpm_transitionName=transitionName
|
316
|
+
end
|
317
|
+
end
|
318
|
+
|
319
|
+
|
320
|
+
|
321
|
+
|
322
|
+
class DatatypeMappingCallback < DatatypeMapping
|
323
|
+
include Singleton
|
324
|
+
|
325
|
+
#default string length
|
326
|
+
@maxStringLength=10
|
327
|
+
|
328
|
+
MATCHING_UML_NAME=["XmdaCallbackHandler"]
|
329
|
+
def appliesTo?(datatype)
|
330
|
+
return true if MATCHING_UML_NAME.include?(datatype.uml_name_one)
|
331
|
+
#return true if MATCHING_JAVA_NAME.include?(datatype.java_qualifiedName)
|
332
|
+
return false
|
333
|
+
end
|
334
|
+
|
335
|
+
def java_getType
|
336
|
+
return "xmda.bpm.api.XmdaCallbackHandler"
|
337
|
+
end
|
338
|
+
|
339
|
+
def java_getJavaToString(jsrc)
|
340
|
+
return "null"
|
341
|
+
end
|
342
|
+
def java_getJavaParse(jsrc)
|
343
|
+
return "null"
|
344
|
+
end
|
345
|
+
|
346
|
+
end
|
347
|
+
DatatypeMappingCallback.instance #register
|
348
|
+
|