🧩 Internal Structure of a Method

This page explores how a Method is represented internally in CCP, from its metadata to execution scripts and lifecycle.


🧭 What Is a Method?

In CCP, a Method is a reusable computational unit:

  • It can be an algorithm, a script, a model, or a processing function

  • It can be written in any language (Python, R, Java, Shell, etc.)

  • It runs in an isolated container

  • It receives inputs and produces outputs


📘 Method Definition Format

Methods are described in a method.json file that follows the OGC API - Processes specification.
This file includes:

  • Metadata (title, author, context)

  • Input parameters

  • Declared outputs

  • Deploy/execute/undeploy scripts

  • Compatible infrastructures


🧱 Method JSON Example (Java + Maven)

{
  "title": "JDK-8 Example Maven",
  "id": "408d9dc5-ee37-4123-9f07-4294f13bce19",
  "version": "0.0.1",
  "description": "Runs a Maven-built Java app from GitHub",
  "inputs": {
    "ccpimage": {
      "schema": { "type": "string", "default": "nubisware/ccp-jdk8-jammy:latest" }
    },
    "repository": {
      "schema": { "type": "string", "default": "https://github.com/dcore94/jdk-maven-example" }
    },
    "mainclass": {
      "schema": { "type": "string", "default": "example.HelloWorld" }
    }
  },
  "outputs": {
    "filejson": {
      "schema": { "type": "string", "contentMediaType": "application/json" }
    }
  },
  "additionalParameters": {
    "parameters": [
      {
        "name": "deploy-script",
        "value": [
          "git clone {{ repository }} execution",
          "cd execution",
          "mvn clean package"
        ]
      },
      {
        "name": "execute-script",
        "value": [
          "cd execution",
          "java -cp target/*.jar {{ mainclass }}",
          "cp /tmp/output.json /ccp_data/"
        ]
      }
    ]
  },
  "links": [
    {
      "rel": "compatibleWith",
      "href": "infrastructures/nubisware-docker-swarm-nfs"
    }
  ]
}

🔄 Execution Lifecycle

The figure below shows the phases of a method execution:

User → CCP → Launch → Deploy → Execute → Fetch → Destroy

Each phase corresponds to:

  • Launch: Prepares container using ccpimage

  • Deploy: Runs deploy-script (e.g. clone repo, install deps)

  • Execute: Runs the main algorithm

  • Fetch: Captures outputs

  • Destroy: Cleans up environment

If an error occurs in any phase, execution transitions to FAILED.


🧬 Execution Context and Variables

During execution, CCP provides several context values.

🧩 Inputs as Placeholders

Inputs are referenced in scripts via:

--input {{input_file}} --threshold {{threshold}}

These values are replaced at runtime with the actual user input.

🌐 Execution Variables

Variable Meaning
ccpimage Docker image for runtime
ccptaskid Index of replica (1-based)
ccptaskname Unique execution identifier
ccpnote Optional user note for tracking
ccpmaxtime Max execution time (in seconds)
ccpreplicas Number of parallel instances

🔐 Secure Variables

Env Variable Usage
ccprefreshtoken Token for API authentication
ccpclientid OAuth client
ccpcontext Execution context / VRE