Skip to content

ceskaexpedice/process-platform

Repository files navigation

Build

process-platform

Worker Startup
│
├── Discover plugins via SPI
├── For each plugin:
│   ├── Load profiles from /import.json
│   ├── For each profile, prepare registration info
│   └── Send registration to Manager (REST)
│
Manager
├── Stores plugin profiles (pluginId + profileType + config)
├── Offers UI/API for users to:
│   ├── View/edit profiles (e.g. jvmparams)
│   └── Schedule Process based on selected profile
│
Worker
└── Periodically polls manager for tasks
├── Manager sends ProcessRequestDTO with:
│   ├── pluginId
│   ├── profileType
│   ├── jvmParams
│   └── user payload (e.g., input path)
└── Worker starts PluginStarter with proper config
{
"type": "import-cgi",
"mainClass": "org.example.Import",
"jvmparams": "-Xmx1G",
"payloadSpec": {
"importRootDir": { "type": "string", "required": true },
"addCollection": { "type": "boolean", "required": false }
}
}
/worker
|
| > plugins/import/ a.jar., b.jar, c.jar
processes/ build.gradle
apply 'application'

configurations {
process
}

dependencies {
process 'org.krameirus🅰️1.0'
process 'org.krameirus🅱️1.0'
process 'org.kramerius:c:1.0'
    api: 'process-platform:1.0'
}

task preparePlugins  {
// copy to plugins directory

}

configuration.properties
label=import

plugins {
id 'application'
id 'com.google.cloud.tools.jib' version '3.4.0'
}

application {
mainClass = 'your.main.Class' // nahraď skutečnou hlavní třídou
}

configurations {
process
}

dependencies {
process 'org.krameirus:import:1.0'
process 'org.krameirus:indexace:1.0'

    process 'org.krameirus:processlog:1.0'

    implementation 'process-platform:1.0'
}

// Kopírování pluginů do distribuce
task copyPlugins(type: Copy) {
description = 'Copies all process dependencies to the distribution plugins directory'
group = 'distribution'

    from configurations.process
    into "$buildDir/install/${project.name}/plugins"
}


// Vlastní task, který kombinuje installDist + copyPlugins
task prepareWorker {
description = 'Prepares full application distribution with plugins'
group = 'build'

    dependsOn 'installDist', 'copyPlugins'
}

//

generovatpdf(pro pavel.stastny) - -3

import(uuid:xxx) - spustil vasek jirousek
import(uuid:yyy) - spustila hrzinovana (jana)
import(uuid:ooo)
---------------

reindex(uuid:xxx) - import(uuid:xxx)
reindex(uuid:ppp)
reindex(uuid:zzz)


MAnager bude vedet pavel.stastny = a,b,c

worker_1

dej_mi_praci(import,indexace,processlog)

mam pro tebe praci import(uuid:xxx)
pracuju na uuid:xxxx,  musim reindexovat uuid:xxx,uuid:ppp,uuid:zzz

dej_mi_praci(import,indexace,processlog, plugins... )

dej_mi_praci(ai_models)

-----------------------------------------------------------------------------------------------
plugins {
id 'application'
id 'com.google.cloud.tools.jib' version '3.4.0'
}

application {
mainClass = 'your.main.Class' // nahraď skutečnou hlavní třídou
}

configurations {
process
}

dependencies {
process 'org.krameirus:a:1.0'
process 'org.krameirus:b:1.0'
process 'org.kramerius:c:1.0'

    implementation 'process-platform:1.0'
}

// Kopírování pluginů do distribuce
task copyPlugins(type: Copy) {
description = 'Copies all process dependencies to the distribution plugins directory'
group = 'distribution'

    from configurations.process
    into "$buildDir/install/${project.name}/plugins"
}

// Vlastní task, který kombinuje installDist + copyPlugins
task prepareWorker {
description = 'Prepares full application distribution with plugins'
group = 'build'

    dependsOn 'installDist', 'copyPlugins'
}

./gradlew prepareWorker → vytvoří celou distribuci včetně pluginů.

Pluginy skončí ve složce: build/install/<project>/plugins

Z toho pak můžeš stavět image (např. pomocí Jib nebo Dockerfile).
----------------------------------------------------------------------------------
manager bude mit prehled o vsem..  Takze bude schopen ridit workery, poda vsechny informace bez ohledu na to, kde se to spoustelo..
worker - nekde zmizel- musim import preplanovat...

worker bude - nemusel mit pristup do db to api bude primarne urceno pro manager.., bude poskytovat data o fyzicky bezicich proceses (ne z db), java -cp ....., bude poskytovat informace vytizeni (casem) a bude mit endpoint ~/health (zjisteni zdravi),, bude mit endpoint pro logy

jeste dalsi pozmnaka.. debug bude mozny pres zverejneni portu ven. (Docker compose) jenom by me zajimalo, zda umoznuje zverejnit port i kdyz jeste v kontejneru otevreny... ale to by asi mel, to by nefungovalo spoustu veci

Contejner c.1

/import.json 
  [
  {
    "type":"import-cgi"
    "mainClass":"Import",
    "jvmparams":xxxxxx
  },
  {
    "type":"import-cgi-nonsense"
    "mainClass":"Import",
    "jvmparams":xxxxxx
  }

  ]


Runner 

/----- plugins import-- default.json //classpath{"type":"import","mainClass":"Import"}, index-- default.json, neco -- default.json, ,

setlicense - plugin a on umi dva TYPY procesu -- default.json -- bude obsahovat dve definice-- prvni s konstatnim parametrem ADD - typ procesu se jmenuje add-license-- druha s konstatnim parametrem REMOVE - typ procesu se jmenuje remove-license,

            {
              [
                {
                    "type":"add-license",
                    "mainClass":"SetLicense",
                    "params":["ADD"]
                },
                {
                    "type":"remove-license",
                    "mainClass":"SetLicense",
                    "params":["REMOVE"]
                },
                {
                    "type":"add-license-jvmparams",
                    "mainClass":"SetLicense"
                    "jvmparams":"-Duser.home=neco"

                }
              ]

pluginbezdefinice -- runner mu priplacne default.json kde typ == pluginbezdefinice

,

    /next?types=import,neco,add-license,remove-license,pluginbezdefinice
    /plan?type=import
    ---------------------------------------------------------------------

    /plan?type=import_cgi
    /plan?type=add-license_cgi


    /next?types=import_cgi



    Contjner c.2 - musi byt v konfiguraci
    Runner

/----- plugins import-- default.json, ,

Runner probehne adresar plugins a snazi se najit vsechny pluginy/procesy, Po startu da vedet process-manageru jake pluginy ma k dispozici2.1a - posle pouze typ procesu, tedy import, index, neco 2.1b - posle celou definici - default definici. Kde bude jvmparametrs a konstatni parametry, Manager si zaregistruje typ (pokud ho nema) a muzeme planovat. 3.1a - zaregistruje si jenom typ3.1b - zaregistruje si celou default definici. - Umozni celou definici predelat, ,

Martin Duda a chce vlastni proces, ktery si bude spoustet sam ale ma difinici typu import

--------------------- build plugins /sdnnt worker:{ id:"sdnnt", "definition":src/main/resources/neco.json }


/import worker { "id":"curator" "definitions":src/main/resources/import.json }

/indexace

/sdnnt-sync

worker { id:"curator" "definitions":src/main/resources/sdnnt-sync.json }

public-pdf

worker { id:"public" "definitions":src/main/resources/public-pdf.json }

build/workers/curator

import,

build/workers/public

public-pdf

,

// processes jib { // plugins z cesty build/workers // docker kramerius-curator-worker-verze // docker kramerius-public-worker-verze

}

gradlew clean build workers jib

core - docker,

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •