Π ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ:
- core framework Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ (DSL);
- picture-pipelines ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ;
ΠΠΎΠ½Π²Π΅ΠΉΠ΅Ρ (workflow) ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² (pipe) ΠΈ ΡΠ·Π»ΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ (node).
Π’ΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ°Π½Π°Π» (pipe) - ΡΡΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ:
- Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°;
- Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΡΠ΅Π°Π³ΠΈΡΡΡΡΠ΅Π³ΠΎ Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°;
Π£Π·Π΅Π» ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ (node) - ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠ°Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ.
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ (ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ) ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° - ΡΡΠΎ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ ΡΠ·Π»ΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ². ΠΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΡΠΎΠΈΡ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π»ΡΠ±ΡΡ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ·Π»ΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ ΠΊΠ°Π½Π°Π»ΠΎΠ².
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ·Π»Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ - ΡΡΠΎ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠ΅ΡΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ·Π»Π΅.
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° - ΡΡΠΎ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Ρ ΡΠ°Π½ΡΡΠΈΡ ΡΡ Π² ΠΊΠ°Π½Π°Π»Π΅.
ΠΠΎΠ½Π²Π΅ΠΉΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΡ :
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ | ΠΠ΅ΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ DSL Π΅Π³ΠΎ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅. |
Π ΡΠ°Π±ΠΎΡΠ΅ | Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π°ΡΡΡΠΏΠ°ΡΡΠ΅Π΅ ΠΏΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΠ΄Π΅Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ΅ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ·Π»ΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ². |
Π Π·Π°Π²ΠΈΡΠ°Π½ΠΈΠΈ | Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π°ΡΡΡΠΏΠ°ΡΡΠ΅Π΅, ΠΊΠΎΠ³Π΄Π° Π·Π° ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΠΌ N ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° ΠΎΠ½ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. |
ΠΠ°Π²Π΅ΡΡΠ΅Π½ | ΠΠ΅ΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° ΠΏΡΠΈ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π΅Π³ΠΎ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ. |
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
Π£Π·Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈΠΌΠ΅ΡΡ Π½Π°Π±ΠΎΡΡ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² | Π ΡΠ°ΠΌΠΊΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎ 3 Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² |
ΠΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° ΡΠ·Π»ΠΎΠ² ΠΈ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΏΠΎΠ΄Π΄Π°Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ | ΠΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π°ΡΡΡΠΈΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΡΠ·Π»ΠΎΠ² Π½Π° ΡΡΠ°ΠΏΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° |
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ΅ ΠΈΡΠΏΠΎΠ»Π½ΠΎΠ½Π΅Π½ΠΈΠ΅ ΡΠ·Π»ΠΎΠ² | ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ·Π»ΠΎΠ² Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ»Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² |
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
---|---|
ΠΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΎΠ² | Π ΡΠ°ΠΌΠΊΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎ 3 Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² |
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΈΠΊΠ»ΠΎΠ² Π² Π³ΡΠ°ΡΠ΅ | ΠΡΠ²ΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Β ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° |
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π°Π²ΠΈΡΠ°Π½ΠΈΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° | ΠΡΠ±ΡΠΎΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠΉΡΡ Π² ΡΠ°Π±ΠΎΡΠ΅, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠ°Π½ΠΈΡ |
ΠΠΎΡΠ½Π΅Π²ΠΎΠ΅ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ ΠΊΠΎΠ½Π²Π΅Π΅ΡΠ° ΠΈ ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Π΅ΠΉ
Workflow(
dispatcher: CoroutineDispatcher,
countStackContext: Int,
enableSecurityDeadLock: Bool,
enabledWarringCyclePipe: Bool,
updateContext: (Workflow.Context)-> Unit) {
// Π‘Π±ΠΎΡΠΊΠ° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ WorkflowBuilder
}
ΠΠ°Π·Π²Π°Π½ΠΈΡ | Π’ΠΈΠΏ | ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ |
---|---|---|---|
dispatcher | CoroutineDispatcher |
CoroutineDispatcher.Default | ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² - ΠΊΠΎΡΡΡΠΈΠ½, Π² ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠ·Π»Ρ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°. |
countStackContext | Int |
10 | ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Ρ ΡΠ°Π½ΡΡΠΈΠ΅ΡΡ Π² ΡΡΠ΅ΠΊΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ. |
enableSecurityDeadLock | Bool |
false | ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π½Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π·Π°Π²ΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°. ΠΡΠΈ Π²ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. |
enabledWarringCyclePipe | Bool |
false | ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠΈ Π²ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΡΠΈΠΊΠ»ΠΎΠ² Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·Π»Π°ΠΌΠΈ, Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΡ . |
updateContext | (Workflow.Context)-> Unit |
{} | Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°. |
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΎΠ² (SharedWorkflow
) ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ
ΠΊΠΎΡΠΎΡΡΡ
ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, Π° Π²ΠΎΠ·ΡΠ°ΡΠ°Π΅ΠΌΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ SharedWorkflow
fun mySharedWorkflow(input: Pipe<Int>, output: Pipe<Int>, firstParam: Int): SharedWorkflow =
SharedWorkflow {
node(
name = "ΠΡΠΈΠΌΠ΅Ρ",
input = input,
output = output
) { comsumer, producer ->
// logic
}
}
node(
name = "ΠΠ΅ΡΠ²Π°Ρ Π½ΠΎΠ΄Π°",
input = Pair(pipe1, pipe2),
output = Pair(pipe3, pipe4)
) { consumerPipe1, cosumerPipe2, producerPipe3, producerPipe4 ->
// Define the action logic here
println("Executing action for node 'ΠΠ΅ΡΠ²Π°Ρ Π½ΠΎΠ΄Π°'")
// e.g., Use producers and consumers as needed
}
ΠΠ°Π·Π²Π°Π½ΠΈΡ | Π’ΠΈΠΏ | ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ |
---|---|---|---|
name | String |
ΠΠ΅Ρ | ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ·Π»Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π² Π»ΠΎΠ³Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ |
input | Pipe<T> | Pair<T,Q> | Triple<T,Q,S> |
ΠΠ΅Ρ | ΠΡ ΠΎΠ΄ΡΡΠΈΠ΅ Π² ΡΠ·Π΅Π» ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ |
output | Pipe<T> | Pair<T,Q> | Triple<T,Q,S> |
ΠΠ΅Ρ | ΠΡΡ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΈΠ· ΡΠ·Π»Π° ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠ°Π½Π°Π»Ρ |
ΠΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ (ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ) ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΊΠ°Π½Π°Π»ΠΎΠΌ.
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ |
---|---|
start | ΠΠΎΠ½Π²Π΅ΠΉΠ΅Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π ΡΠ°Π±ΠΎΡΠ΅ |
pause | ΠΠΎΠ½Π²Π΅ΠΉΠ΅Ρ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ·Π»ΠΎΠ² |
stop | ΠΠΎΠ½Π²Π΅ΠΉΠ΅Ρ ΠΏΠ΅ΡΡ
ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΠ°Π²Π΅ΡΡΠ΅Π½ , ΠΎΡΠΈΡΠ°Π΅ΡΡΡ ΠΊΠΎΡΠ΅ΠΊΡΡ ΡΠ·Π»ΠΎΠ² ΠΈ ΠΊΠ°Π½Π°Π»ΠΎΠ², ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ Π²ΡΠ΅ ΠΊΠΎΡΡΡΠΈΠ½Ρ |
Π’ΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ°Π½Π°Π».
ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΊΠ»Π°ΡΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½ΠΎΠ²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΊΠ°Π½Π°Π»Π΅.
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ |
---|---|
plus |
Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Consumer Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ°Π·Ρ ΠΈΠ· Π΄Π²ΡΡ
ΠΊΠ°Π½Π°Π»ΠΎΠ² |
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ |
---|---|
action |
Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π²ΡΠ΅Ρ Π·Π°Π½ΡΠ΅Π½ΠΈΠΉ |
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ |
---|---|
Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π½ΠΈΡ |
ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΊΠ»Π°ΡΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΊΠ°Π½Π°Π».
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ |
---|---|
plus |
Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Producer Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ°Π·Ρ ΠΈΠ· Π΄Π²ΡΡ
ΠΊΠ°Π½Π°Π»ΠΎΠ² |
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ | ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ |
---|---|
value |
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ΅ Π² ΠΊΠ°Π½Π°Π» |
Pipes ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Koltin Channel.
Kotlin Channel ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π° BlockingQueue. ΠΠ΄Π½ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅ΠΉ put ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΠ°Ρ send, Π° Π²ΠΌΠ΅ΡΡΠΎ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅ΠΉ take ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΠ°Ρ receive.
Pipeline - ΡΡΠΎ ΡΠ°Π±Π»ΠΎΠ½, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ΄Π½Π° ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΠ·Π΄Π°Π΅Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ, ΠΏΠΎΡΠΎΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π° Π΄ΡΡΠ³Π°Ρ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠ»ΠΈ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡ ΡΡΠΎΡ ΠΏΠΎΡΠΎΠΊ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Kotlin ΠΈΠ»ΠΈ ΠΊΠΎΡΡΡΠΈΠ½Ρ.
ΠΠΎΡΡΡΠΈΠ½Π° β ΡΡΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΡΡΠΈΠ½Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΊΠΎΡΡΡΠΈΠ½Π°ΠΌ ΠΎΡΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡΠΎΠΊΠ΅. Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΊΠΎΡΡΡΠΈΠ½Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅. Π ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΡΡΡΠΈΠ½Ρ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½Π΅ΠΉ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ, ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΠ΄Π°Π»ΡΡΡΡΡ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π΅ΠΌΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ.
ΠΡΠ·ΠΎΠ² suspend-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. Π§Π΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅.
ΠΠ°ΠΆΠ΄Π°Ρ nodes Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΡΡΡΠΈΠ½Π΅ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΊΠΎΡΡΡΠΈΠ½Ρ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° editimage
ΠΠ»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΡΠΎΠ·Π΄Π°Π½Ρ 6 node