yWorkflow Documentation

How to generate code using Gradle

Create a gradle configuration

val codeGenerator by configurations.creating

Add dependency to the gradle configuration

dependencies {
  codeGenerator("com.yworkflow:yworkflow-generator")

  implementation("other:dependencies:1.0")
}

Create a gradle task

val generatedSourcesDir = layout.buildDirectory.dir("generated/sources/java")

tasks.register<JavaExec>("generateCode") {
    classpath = codeGenerator
    mainClass.set("com.yworkflow.generator.Main")

    args(
        "--output", generatedSourcesDir.get().asFile.absolutePath,
        "--input", file("src/test/resources/leave_request.yml").absolutePath,
        "--package", "com.yworkflow.instance.generated",
        "--class", "LeaveRequest"
    )
}

sourceSets.main {
    java.srcDir(generatedSourcesDir)
}

tasks.named("compileJava") {
    dependsOn("generateCode")
}

Use generated code

Initialize workflow definition wrapper

var leaveRequestWorkflowDefinition = LeaveRequestWorkflowDefinition.init(workflowEngine); (1)

Create workflow instance

var inputs = mutableAttributes()
        .withString("from", "2024-01-01")
        .withString("to", "2024-01-07")
        .toImmutable();

var leaveRequest = leaveRequestWorkflowDefinition.create(inputs);

assertThat(leaveRequest.asDraftLeaveRequest().isPresent()).isTrue();