Cromwell 开源项目使用教程
1. 项目的目录结构及介绍
Cromwell 项目的目录结构如下:
cromwell/
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── README.md
├── RELEASE_PROCESS.md
├── RELEASE_NOTES.md
├── build.sbt
├── core
│ ├── src
│ │ ├── main
│ │ └── test
├── database
│ ├── src
│ │ ├── main
│ │ └── test
├── docker-compose.yml
├── docs
│ ├── img
│ ├── src
│ │ ├── main
│ │ └── test
├── engine
│ ├── src
│ │ ├── main
│ │ └── test
├── project
│ ├── build.properties
│ ├── plugins.sbt
├── scripts
│ ├── docker-compose
│ ├── jenkins
│ ├── release
│ ├── test
├── server
│ ├── src
│ │ ├── main
│ │ └── test
├── services
│ ├── src
│ │ ├── main
│ │ └── test
├── womtool
│ ├── src
│ │ ├── main
│ │ └── test
主要目录介绍
core/
: 核心模块,包含 Cromwell 的核心功能代码。database/
: 数据库模块,包含与数据库交互的代码。docs/
: 文档模块,包含项目的文档和图片。engine/
: 引擎模块,包含工作流引擎的代码。project/
: 项目配置模块,包含 SBT 构建工具的配置文件。scripts/
: 脚本模块,包含各种自动化脚本。server/
: 服务器模块,包含 HTTP 服务器的代码。services/
: 服务模块,包含各种服务的代码。womtool/
: WOM 工具模块,包含 WOM 文件的解析工具。
2. 项目的启动文件介绍
Cromwell 项目的启动文件主要位于 server/src/main/scala/cromwell/CromwellEntryPoint.scala
。这个文件包含了启动 Cromwell 服务器的入口点。
package cromwell
import akka.actor.ActorSystem
import cromwell.core.actor.BootActorSystem
import cromwell.server.CromwellServer
object CromwellEntryPoint {
def main(args: Array[String]): Unit = {
val system = ActorSystem("CromwellServer")
val server = new CromwellServer(system)
server.run()
}
}
启动流程
- 创建 Akka ActorSystem。
- 初始化 CromwellServer 实例。
- 调用
server.run()
方法启动服务器。
3. 项目的配置文件介绍
Cromwell 项目的配置文件主要位于 server/src/main/resources/application.conf
。这个文件包含了 Cromwell 服务器的各种配置选项。
cromwell {
services {
MetadataService {
config {
metadata-output = "metadata.json"
}
}
EngineService {
config {
workflow-options = "workflow_options.json"
}
}
}
database {
profile = "slick.jdbc.HsqldbProfile$"
db {
url = "jdbc:hsqldb:mem:cromwell"
user = "SA"
password = ""
driver = "org.hsqldb.jdbcDriver"
}
}
}
主要配置项
services
: 服务配置,包含 MetadataService 和 EngineService 的配置。database
: 数据库配置,包含数据库连接的 URL、用户名、密码和驱动类。
通过这些配置项,可以定制 Cromwell 服务器的行为和数据库连接。