!7 concept Musing { S text; S verificationResult; sS _fieldOrder = "text verificationResult"; } cmodule AIMusingsCRUD > DynCRUD { // API void storeMusing(S text) { storeMusing(text, null); } void storeMusing(S text, S verificationResult) { Musing m = uniq Musing(+text); if (nempty(verificationResult)) cset(m, +verificationResult); } void testMusing(Musing m) { if (m == null) ret; try { int n = ai_checkMusing(m.text); cset(m, verificationResult := "OK (" + n + ")"); } catch e { cset(m, verificationResult := "ERROR: " + e); } } start { crud.multiLineFields = litset("text"); } afterVisualize { addSelectionDependentButton("Test", r { testMusing(selected()) }); } }