digraph CODEOBJECT_GENERATOR { // ??????????? ???????-???????????? FUNC_1 [module=case_gen_funcs, entry_func=function_1] FUNC_2 [module=case_gen_funcs, entry_func=function_2] FUNC_3 [module=case_gen_funcs, entry_func=function_3] SAVE_TO_DB [module=case_gen_funcs, entry_func=save_to_db] SAVE_TO_FILE [module=case_gen_funcs, entry_func=save_to_file] REPEAT [module=case_gen_funcs, entry_func=repeat] EXIT [module=case_gen_funcs, entry_func=exit] CREATE_DUMP [module=case_gen_funcs, entry_func=create_dump] // ??????????? ???????-?????????? PREDICATE_X [module=predicate_funcs, entry_func=predicate_x] PREDICATE_Y [module=predicate_funcs, entry_func=predicate_y] SELECTOR [module=predicate_funcs, entry_func=selector] // ??????????? ??????? ???????? (????????) EDGE_1 [predicate=PREDICATE_X, function=FUNC_1] EDGE_2 [predicate=PREDICATE_Y, function=FUNC_2] EDGE_3 [predicate=PREDICATE_X, function=FUNC_3] EDGE_4 [predicate=PREDICATE_Y, function=SAVE_TO_DB] EDGE_5 [predicate=PREDICATE_X, function=SAVE_TO_FILE] EDGE_6 [predicate=PREDICATE_Y, function=REPEAT] EDGE_7 [predicate=PREDICATE_X, function=EXIT] EDGE_8 [function=EXIT] EDGE_9 [predicate=CHECK_DUMP, function=EXIT] EDGE_10 [function=CREATE_DUMP] // ? ???? ??????? ????????? ????????????????? CONTENT_SUBSTITUTED [parallelism=threading] // ??????????? ???????? ?????? __BEGIN__ -> INPUT_READY INPUT_READY -> TEPMLATE_COPIED [morphism=EDGE_1] TEPMLATE_COPIED -> NAMES_SUBSTITUTED [morphism=EDGE_2] NAMES_SUBSTITUTED -> CONTENT_SUBSTITUTED [morphism=EDGE_3] CONTENT_SUBSTITUTED => DUMP_CREATED [morphism=EDGE_10] CONTENT_SUBSTITUTED -> RESULT_SAVED [morphism=EDGE_4] CONTENT_SUBSTITUTED -> RESULT_SAVED [morphism=EDGE_5] // ? ??????????? ?? ?????? ?????????? SELECTOR ?????????????? ??????? ?? ??????? ??? ??????? ????? RESULT_SAVED -> INPUT_READY, __END__ [selector=SELECTOR, morphism=(EDGE_6, EDGE_7)] RESULT_SAVED, DUMP_CREATED -> __END__ [morphism=(EDGE_8, EDGE_9)] }