Saltar a contenido

Summary

Congratulations on completing the Hello Plugins training.


What you learned

If you completed Parts 1-2, you now know how to discover, configure, and use existing plugins to extend your Nextflow pipelines. This knowledge will help you leverage the growing ecosystem of community plugins.

If you completed Parts 3-7, you've also learned how to create your own plugins, implementing custom functions, trace observers, and more. Plugin development opens up powerful possibilities for:

  • Sharing reusable functions across your organization
  • Integrating with external services and APIs
  • Custom monitoring and reporting
  • Supporting new execution platforms

Plugin development checklist

  • Java 21+ installed
  • Create project with nextflow plugin create <name> <org>
  • Implement extension class with @Function methods
  • Optionally add TraceObserver implementations for workflow events
  • Write unit tests
  • Build with make assemble
  • Install with make install
  • Enable in nextflow.config with plugins { id 'plugin-id' }
  • Import functions with include { fn } from 'plugin/plugin-id'

Key code patterns

Function definition:

@Function
String myFunction(String input, String optional = 'default') {
    return input.transform()
}

Plugin configuration:

nextflowPlugin {
    provider = 'my-org'
    className = 'my.org.MyPlugin'
    extensionPoints = ['my.org.MyExtension']
}

Using in workflows:

include { myFunction } from 'plugin/my-plugin'

workflow {
    channel.of('a', 'b', 'c')
        .map { item -> myFunction(item) }
        .view()
}

Extension point summary

Type Annotation Purpose
Function @Function Callable from workflows

Additional resources

Official documentation:

Plugin discovery:

Examples and references:


Whether you're using existing plugins or building your own, you now have the tools to extend Nextflow beyond its core capabilities.