|
a/src/main/java/net/timbusproject/extractors/modules/tavernaextractor/TavernaExtractor.java |
|
b/src/main/java/net/timbusproject/extractors/modules/tavernaextractor/TavernaExtractor.java |
|
... |
|
... |
169 |
|
169 |
|
170 |
private List<IArchimateElement> nodeElements;
|
170 |
private List<IArchimateElement> nodeElements;
|
171 |
//private static Logger LOGGER = LogManager.getLogger("TavernaExtractor");
|
171 |
//private static Logger LOGGER = LogManager.getLogger("TavernaExtractor");
|
172 |
private LicenseCheck licenseCheck = new LicenseCheck();
|
172 |
private LicenseCheck licenseCheck = new LicenseCheck();
|
173 |
private IArtifact workflowFile;
|
173 |
private IArtifact workflowFile;
|
174 |
private IArtifact taverna;
|
174 |
private ISystemSoftware taverna;
|
175 |
private IApplicationComponent workflowApplicationComponent = null;
|
175 |
private IApplicationComponent workflowApplicationComponent = null;
|
176 |
private IApplicationFunction callScriptApplicationFunction = null;
|
176 |
private IApplicationFunction callScriptApplicationFunction = null;
|
177 |
private IApplicationFunction callWebServiceApplicationFunction = null;
|
177 |
private IApplicationFunction callWebServiceApplicationFunction = null;
|
178 |
private IApplicationFunction callToolInvocationFunction = null;
|
178 |
private IApplicationFunction callToolInvocationFunction = null;
|
179 |
|
179 |
|
|
... |
|
... |
374 |
|
374 |
|
375 |
infrastructure.getElements().add(desktop);
|
375 |
infrastructure.getElements().add(desktop);
|
376 |
|
376 |
|
377 |
// // BEGIN PATTERN v2.0 UPDATE
|
377 |
// // BEGIN PATTERN v2.0 UPDATE
|
378 |
// --- BEGIN Taverna ---
|
378 |
// --- BEGIN Taverna ---
|
379 |
taverna = (IArtifact) ArchiUtils.initElement(factory.createArtifact(), "Taverna 2.4", infrastructureFolder,
|
379 |
taverna = (ISystemSoftware) ArchiUtils.initElement(factory.createSystemSoftware(), "Taverna 2.4", infrastructureFolder,
|
380 |
nodeElements);
|
380 |
nodeElements);
|
381 |
IConstraint GNULicense = ArchiUtils.initElement(factory.createConstraint(),
|
381 |
IConstraint GNULicense = ArchiUtils.initElement(factory.createConstraint(),
|
382 |
"GNU Lesser General Public License (LGPL) 2.1", motivationFolder, infrastructure);
|
382 |
"GNU Lesser General Public License (LGPL) 2.1", motivationFolder, infrastructure);
|
383 |
ArchiUtils.initRelation(factory.createRealisationRelationship(), taverna, GNULicense, relationsFolder,
|
383 |
ArchiUtils.initRelation(factory.createRealisationRelationship(), taverna, GNULicense, relationsFolder,
|
384 |
relations);
|
384 |
relations);
|
|
|
385 |
ArchiUtils.initRelation(factory.createCompositionRelationship(), desktop, taverna, relationsFolder,
|
|
|
386 |
relations);
|
385 |
|
387 |
|
386 |
// Workflow file
|
388 |
// Workflow file
|
387 |
workflowFile = (IArtifact) ArchiUtils.initElement(factory.createArtifact(), "Worfklow File",
|
389 |
workflowFile = (IArtifact) ArchiUtils.initElement(factory.createArtifact(), "Worfklow File",
|
388 |
infrastructureFolder, nodeElements);
|
390 |
infrastructureFolder, nodeElements);
|
|
|
391 |
ArchiUtils.initAccessRelation(factory.createAccessRelationship(), taverna,
|
|
|
392 |
workflowFile, applicationFolder, relations, IAccessRelationship.READ_ACCESS);
|
|
|
393 |
|
389 |
ArchiUtils.initRelation(factory.createAssociationRelationship(), workflowFile, taverna, relationsFolder,
|
394 |
ArchiUtils.initRelation(factory.createCompositionRelationship(), desktop, workflowFile, relationsFolder,
|
390 |
relations);
|
395 |
relations);
|
391 |
|
396 |
|
392 |
workflowFile.getProperties().add(createDepProperties(TavernaExtractor.getInputFileName().toString()));
|
397 |
workflowFile.getProperties().add(createDepProperties(TavernaExtractor.getInputFileName().toString()));
|
393 |
|
398 |
|
394 |
// Orchestration Service
|
399 |
// Orchestration Service
|
|
... |
|
... |
406 |
}
|
411 |
}
|
407 |
|
412 |
|
408 |
// link relevant dependencies from taverna home to context model
|
413 |
// link relevant dependencies from taverna home to context model
|
409 |
IArtifact repoBundle = (IArtifact) ArchiUtils.initElement(factory.createArtifact(), "Repo Bundle", infrastructureFolder, nodeElements);
|
414 |
IArtifact repoBundle = (IArtifact) ArchiUtils.initElement(factory.createArtifact(), "Repo Bundle", infrastructureFolder, nodeElements);
|
410 |
ArchiUtils.initRelation(factory.createAssociationRelationship(), taverna, repoBundle,
|
415 |
ArchiUtils.initRelation(factory.createAssociationRelationship(), taverna, repoBundle,
|
|
|
416 |
relationsFolder, relations);
|
|
|
417 |
|
|
|
418 |
ArchiUtils.initRelation(factory.createCompositionRelationship(), desktop, repoBundle,
|
411 |
relationsFolder, relations);
|
419 |
relationsFolder, relations);
|
412 |
|
420 |
|
413 |
if(TavernaExtractor.getTavernaHomeRepo().toFile().isDirectory()){
|
421 |
if(TavernaExtractor.getTavernaHomeRepo().toFile().isDirectory()){
|
414 |
|
422 |
|
415 |
final List<File> jarFiles = new ArrayList<>();
|
423 |
final List<File> jarFiles = new ArrayList<>();
|
|
... |
|
... |
462 |
// --- END Events ---
|
470 |
// --- END Events ---
|
463 |
|
471 |
|
464 |
// --- BEGIN Java Runtime Environment ---
|
472 |
// --- BEGIN Java Runtime Environment ---
|
465 |
ISystemSoftware java = (ISystemSoftware) ArchiUtils.initElement(factory.createSystemSoftware(), "JRE "
|
473 |
ISystemSoftware java = (ISystemSoftware) ArchiUtils.initElement(factory.createSystemSoftware(), "JRE "
|
466 |
+ JAVA_VERSION + " (" + JAVA_VENDOR + ")", infrastructureFolder, nodeElements);
|
474 |
+ JAVA_VERSION + " (" + JAVA_VENDOR + ")", infrastructureFolder, nodeElements);
|
|
|
475 |
|
467 |
// FIXME: this must not always be an ORACLE license
|
476 |
// FIXME: this must not always be an ORACLE license
|
468 |
IConstraint oracleLicense = ArchiUtils.initElement(factory.createConstraint(), "Oracle Binary Code License",
|
477 |
IConstraint oracleLicense = ArchiUtils.initElement(factory.createConstraint(), "Oracle Binary Code License",
|
469 |
motivationFolder, infrastructure);
|
478 |
motivationFolder, infrastructure);
|
470 |
ArchiUtils.initRelation(factory.createRealisationRelationship(), java, oracleLicense, relationsFolder,
|
479 |
ArchiUtils.initRelation(factory.createRealisationRelationship(), java, oracleLicense, relationsFolder,
|
471 |
relations);
|
480 |
relations);
|
472 |
ArchiUtils.initRelation(factory.createUsedByRelationship(), java, taverna, relationsFolder, relations);
|
481 |
ArchiUtils.initRelation(factory.createUsedByRelationship(), java, taverna, relationsFolder, relations);
|
|
|
482 |
ArchiUtils.initRelation(factory.createCompositionRelationship(), desktop, java, relationsFolder, relations);
|
473 |
|
483 |
|
474 |
// --- BEGIN OS ---
|
484 |
// --- BEGIN OS ---
|
475 |
ISystemSoftware operatingSystem = (ISystemSoftware) ArchiUtils.initElement(factory.createSystemSoftware(),
|
485 |
ISystemSoftware operatingSystem = (ISystemSoftware) ArchiUtils.initElement(factory.createSystemSoftware(),
|
476 |
OS_SYSTEM_INFO, infrastructureFolder, nodeElements);
|
486 |
OS_SYSTEM_INFO, infrastructureFolder, nodeElements);
|
477 |
ArchiUtils.initRelationNodeElement(factory.createUsedByRelationship(), operatingSystem, java, relationsFolder,
|
487 |
ArchiUtils.initRelationNodeElement(factory.createUsedByRelationship(), operatingSystem, java, relationsFolder,
|
478 |
nodeElements);
|
488 |
nodeElements);
|
|
|
489 |
ArchiUtils.initRelation(factory.createCompositionRelationship(), desktop, operatingSystem, relationsFolder, relations);
|
479 |
// --- END CREATING DEFAULT ELEMENTS ---
|
490 |
// --- END CREATING DEFAULT ELEMENTS ---
|
480 |
|
491 |
|
481 |
LOGGER.debug("Process Input ports");
|
492 |
LOGGER.debug("Process Input ports");
|
482 |
for (DataflowInputPort inputPort : dataflow.getInputPorts()) {
|
493 |
for (DataflowInputPort inputPort : dataflow.getInputPorts()) {
|
483 |
IBusinessObject port_business = ArchiUtils.initElement(factory.createBusinessObject(), inputPort.getName(),
|
494 |
IBusinessObject port_business = ArchiUtils.initElement(factory.createBusinessObject(), inputPort.getName(),
|
|
... |
|
... |
491 |
|
502 |
|
492 |
ArchiUtils.initRelation(factory.createRealisationRelationship(), port_data, port_business, relationsFolder,
|
503 |
ArchiUtils.initRelation(factory.createRealisationRelationship(), port_data, port_business, relationsFolder,
|
493 |
relations);
|
504 |
relations);
|
494 |
ArchiUtils.initRelation(factory.createRealisationRelationship(), port_infrastructure, port_data,
|
505 |
ArchiUtils.initRelation(factory.createRealisationRelationship(), port_infrastructure, port_data,
|
495 |
relationsFolder, relations);
|
506 |
relationsFolder, relations);
|
|
|
507 |
|
|
|
508 |
ArchiUtils.initRelation(factory.createCompositionRelationship(), desktop, port_infrastructure,
|
|
|
509 |
relationsFolder, relations);
|
496 |
}
|
510 |
}
|
497 |
LOGGER.debug("Process Output ports");
|
511 |
LOGGER.debug("Process Output ports");
|
498 |
for (DataflowOutputPort outputPort : dataflow.getOutputPorts()) {
|
512 |
for (DataflowOutputPort outputPort : dataflow.getOutputPorts()) {
|
499 |
IBusinessObject port_business = ArchiUtils.initElement(factory.createBusinessObject(),
|
513 |
IBusinessObject port_business = ArchiUtils.initElement(factory.createBusinessObject(),
|
500 |
outputPort.getName(), businessFolder, outputPorts);
|
514 |
outputPort.getName(), businessFolder, outputPorts);
|
|
... |
|
... |
507 |
|
521 |
|
508 |
ArchiUtils.initRelation(factory.createRealisationRelationship(), port_data, port_business, relationsFolder,
|
522 |
ArchiUtils.initRelation(factory.createRealisationRelationship(), port_data, port_business, relationsFolder,
|
509 |
relations);
|
523 |
relations);
|
510 |
ArchiUtils.initRelation(factory.createRealisationRelationship(), port_infrastructure, port_data,
|
524 |
ArchiUtils.initRelation(factory.createRealisationRelationship(), port_infrastructure, port_data,
|
511 |
relationsFolder, relations);
|
525 |
relationsFolder, relations);
|
|
|
526 |
|
|
|
527 |
ArchiUtils.initRelation(factory.createCompositionRelationship(), desktop, port_infrastructure,
|
|
|
528 |
relationsFolder, relations);
|
512 |
}
|
529 |
}
|
513 |
|
530 |
|
514 |
processorProcessMap = new HashMap<Processor, IBusinessProcess>();
|
531 |
processorProcessMap = new HashMap<Processor, IBusinessProcess>();
|
515 |
processorValueMap = new HashMap<Processor, IBusinessObject>();
|
532 |
processorValueMap = new HashMap<Processor, IBusinessObject>();
|
516 |
|
533 |
|
|
... |
|
... |
888 |
infrastructureFolder, nodeElements);
|
905 |
infrastructureFolder, nodeElements);
|
889 |
|
906 |
|
890 |
ArchiUtils.initRelation(factory.createRealisationRelationship(), toolAsArtifact, appService,
|
907 |
ArchiUtils.initRelation(factory.createRealisationRelationship(), toolAsArtifact, appService,
|
891 |
relationsFolder, relations);
|
908 |
relationsFolder, relations);
|
892 |
|
909 |
|
|
|
910 |
ArchiUtils.initRelation(factory.createCompositionRelationship(), desktop, toolAsArtifact,
|
|
|
911 |
relationsFolder, relations);
|
|
|
912 |
|
893 |
IProperty commandProperty = factory.createProperty();
|
913 |
IProperty commandProperty = factory.createProperty();
|
894 |
commandProperty.setKey("Command");
|
914 |
commandProperty.setKey("Command");
|
895 |
commandProperty.setValue(externalInvocation.getConfiguration().getUseCaseDescription().getCommand());
|
915 |
commandProperty.setValue(externalInvocation.getConfiguration().getUseCaseDescription().getCommand());
|
896 |
toolAsArtifact.getProperties().add(commandProperty);
|
916 |
toolAsArtifact.getProperties().add(commandProperty);
|
897 |
}
|
917 |
}
|
|
... |
|
... |
993 |
|
1013 |
|
994 |
IArtifact beanshellScriptDep = (IArtifact) ArchiUtils.initElement(factory.createArtifact(), item,
|
1014 |
IArtifact beanshellScriptDep = (IArtifact) ArchiUtils.initElement(factory.createArtifact(), item,
|
995 |
infrastructureFolder, nodeElements);
|
1015 |
infrastructureFolder, nodeElements);
|
996 |
|
1016 |
|
997 |
ArchiUtils.initRelationNodeElement(factory.createAssociationRelationship(), script, beanshellScriptDep,
|
1017 |
ArchiUtils.initRelationNodeElement(factory.createAssociationRelationship(), script, beanshellScriptDep,
|
|
|
1018 |
relationsFolder, nodeElements);
|
|
|
1019 |
|
|
|
1020 |
ArchiUtils.initRelationNodeElement(factory.createCompositionRelationship(), beanshellScriptDep,desktop,
|
998 |
relationsFolder, nodeElements);
|
1021 |
relationsFolder, nodeElements);
|
999 |
|
1022 |
|
1000 |
// Do the license checking
|
1023 |
// Do the license checking
|
1001 |
String fileName = TavernaExtractor.getTavernaHomeLib() + File.separator + item;
|
1024 |
String fileName = TavernaExtractor.getTavernaHomeLib() + File.separator + item;
|
1002 |
|
1025 |
|
|
... |
|
... |
1642 |
}
|
1665 |
}
|
1643 |
}
|
1666 |
}
|
1644 |
|
1667 |
|
1645 |
private List<Processor> findStartingProcessors(Dataflow dataflow) {
|
1668 |
private List<Processor> findStartingProcessors(Dataflow dataflow) {
|
1646 |
|
1669 |
|
|
|
1670 |
LOGGER.debug("find starting processors");
|
|
|
1671 |
|
1647 |
List<OutputPort> outputPorts = new ArrayList<OutputPort>();
|
1672 |
List<OutputPort> outputPorts = new ArrayList<OutputPort>();
|
1648 |
for (Processor processor : dataflow.getProcessors()) {
|
1673 |
for (Processor processor : dataflow.getProcessors()) {
|
1649 |
for (OutputPort outputPort : processor.getOutputPorts()) {
|
1674 |
for (OutputPort outputPort : processor.getOutputPorts()) {
|
1650 |
outputPorts.add(outputPort);
|
1675 |
outputPorts.add(outputPort);
|
1651 |
}
|
1676 |
}
|
|
... |
|
... |
1663 |
if (hasNoPrecedentProcessor(processor, outputPorts)) {
|
1688 |
if (hasNoPrecedentProcessor(processor, outputPorts)) {
|
1664 |
LOGGER.debug("Processor '" + processor.getLocalName() + "' has no precendent processors.");
|
1689 |
LOGGER.debug("Processor '" + processor.getLocalName() + "' has no precendent processors.");
|
1665 |
startingProcessors.add(processor);
|
1690 |
startingProcessors.add(processor);
|
1666 |
}
|
1691 |
}
|
1667 |
}
|
1692 |
}
|
|
|
1693 |
|
|
|
1694 |
LOGGER.debug(startingProcessors.size()+" starting processors found");
|
|
|
1695 |
|
1668 |
return startingProcessors;
|
1696 |
return startingProcessors;
|
1669 |
}
|
1697 |
}
|
1670 |
|
1698 |
|
1671 |
private List<Processor> findEndProcessors(Dataflow dataflow) {
|
1699 |
private List<Processor> findEndProcessors(Dataflow dataflow) {
|
1672 |
|
1700 |
|