nodeTemplates!![id] = NodeTemplateBuilder(id, type, description).apply(block).build()
}
+ fun nodeTemplate(nodeTemplate: NodeTemplate) {
+ if (nodeTemplates == null)
+ nodeTemplates = hashMapOf()
+ nodeTemplates!![nodeTemplate.id!!] = nodeTemplate
+ }
+
fun nodeTemplateOperation(nodeTemplateName: String, type: String, interfaceName: String, description: String,
operationBlock: OperationAssignmentBuilder.() -> Unit) {
if (nodeTemplates == null)
workflows!![id] = WorkflowBuilder(id, description).apply(block).build()
}
+ fun workflow(workflow: Workflow) {
+ if (workflows == null)
+ workflows = hashMapOf()
+ workflows!![workflow.id!!] = workflow
+ }
+
//TODO("populate inputs, outputs")
fun workflowNodeTemplate(actionName: String,
nodeTemplateType: String, description: String, block: NodeTemplateBuilder.() -> Unit) {
private val type: String,
private val description: String? = "") {
private var nodeTemplate: NodeTemplate = NodeTemplate()
+ private var properties: MutableMap<String, JsonNode>? = null
private var interfaces: MutableMap<String, InterfaceAssignment>? = null
private var artifacts: MutableMap<String, ArtifactDefinition>? = null
private var capabilities: MutableMap<String, CapabilityAssignment>? = null
private var requirements: MutableMap<String, RequirementAssignment>? = null
+ fun properties(block: PropertiesAssignmentBuilder.() -> Unit) {
+ if (properties == null)
+ properties = hashMapOf()
+ properties = PropertiesAssignmentBuilder().apply(block).build()
+ }
+
fun operation(interfaceName: String, description: String? = "",
block: OperationAssignmentBuilder.() -> Unit) {
if (interfaces == null)
artifacts!![id] = ArtifactDefinitionBuilder(id, type, file).apply(block).build()
}
+ fun artifacts(artifacts: MutableMap<String, ArtifactDefinition>?) {
+ this.artifacts = artifacts
+ }
+
fun capability(id: String, block: CapabilityAssignmentBuilder.() -> Unit) {
if (capabilities == null)
capabilities = hashMapOf()
capabilities!![id] = CapabilityAssignmentBuilder(id).apply(block).build()
}
+ fun capabilities(capabilities: MutableMap<String, CapabilityAssignment>?) {
+ this.capabilities = capabilities
+ }
+
fun requirement(id: String, capability: String, node: String, relationship: String) {
if (requirements == null)
requirements = hashMapOf()
requirements!![id] = RequirementAssignmentBuilder(id, capability, node, relationship).build()
}
+ fun requirements(requirements: MutableMap<String, RequirementAssignment>?) {
+ this.requirements = requirements
+ }
+
fun build(): NodeTemplate {
nodeTemplate.id = id
nodeTemplate.type = type
nodeTemplate.description = description
+ nodeTemplate.properties = properties
nodeTemplate.interfaces = interfaces
nodeTemplate.artifacts = artifacts
nodeTemplate.capabilities = capabilities
class ArtifactDefinitionBuilder(private val id: String, private val type: String, private val file: String) {
private var artifactDefinition: ArtifactDefinition = ArtifactDefinition()
- // TODO()
+ private var properties: MutableMap<String, JsonNode>? = null
+
+ fun repository(repository: String) {
+ artifactDefinition.repository = repository
+ }
+
+ fun deployPath(deployPath: String) {
+ artifactDefinition.deployPath = deployPath
+ }
+
+ fun properties(block: PropertiesAssignmentBuilder.() -> Unit) {
+ if (properties == null)
+ properties = hashMapOf()
+ properties = PropertiesAssignmentBuilder().apply(block).build()
+ }
fun build(): ArtifactDefinition {
artifactDefinition.id = id
artifactDefinition.type = type
artifactDefinition.file = file
+ artifactDefinition.properties = properties
return artifactDefinition
}
}
private var operationAssignment: OperationAssignment = OperationAssignment()
+ fun implementation(implementation: Implementation?) {
+ operationAssignment.implementation = implementation
+ }
+
fun implementation(timeout: Int, operationHost: String? = BluePrintConstants.PROPERTY_SELF) {
val implementation = Implementation().apply {
this.operationHost = operationHost!!
operationAssignment.implementation = implementation
}
+ fun inputs(inputs: MutableMap<String, JsonNode>?) {
+ operationAssignment.inputs = inputs
+ }
+
fun inputs(block: PropertiesAssignmentBuilder.() -> Unit) {
operationAssignment.inputs = PropertiesAssignmentBuilder().apply(block).build()
}
+ fun outputs(outputs: MutableMap<String, JsonNode>?) {
+ operationAssignment.outputs = outputs
+ }
+
fun outputs(block: PropertiesAssignmentBuilder.() -> Unit) {
operationAssignment.outputs = PropertiesAssignmentBuilder().apply(block).build()
}