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();