--- status: Aktiv tags: - process/project subtitle: Einsatz nicht-Talend-eigener Komponenten --- > [!abstract]- Project > Goal:: > Progress:: `$= dv.view('project-progress', {file: 'Einsatz nicht-Talend-eigener Komponenten'})` > Target:: `$= dv.view('project-target', {file: 'Einsatz nicht-Talend-eigener Komponenten'})` > Bar:: `$= dv.view('project-progress-bar', {file: 'Einsatz nicht-Talend-eigener Komponenten'})` > Tasks:: `$= const aufgaben = dv.page('Einsatz nicht-Talend-eigener Komponenten').file.inlinks.where(t => { const mt = dv.page(t.path); return mt.tags?.includes('process/task') && mt.status === 'In Arbeit'}); if (aufgaben.length > 0) { dv.header(4, aufgaben.length > 1 ? "Aufgaben" : "Aufgabe"); dv.list(aufgaben) }` ## Project Info Oliver und ich hatten ein sehr gutes Gespräch mit Jan. Er unterstützt uns dabei, die Komponenten über Talend anzubinden und würde beispielsweise eine Art Übergabe durchführen. Zu bedenken ist außerdem, dass diese Komponenten noch auf den alten JavaJet- und nicht auf dem neuen Talend Component Kit Framework basieren. Laut Jan müssen die Komponenten daher vermutlich vollständig umgebaut werden. Das Job-Instance-Framework mit den entsprechenden Komponenten ist gefühlt bei jedem unserer Kunden im Einsatz. Die Collection enthält folgende Komponenten:  tJobInstanceStart, tJobInstanceEnd, tJobDataRangeScanner, tJobInstanceLiveCheck Die tJSONDoc-Collection enthält folgende Komponenten: tJSONDocOpen, tJSONDocOutput, tJSONDocInput, tJSONDocExtractFields, tJSONDocInputStream, tJSONDocSave, tJSONDocDiff, tJSONDocMerge, tJSONDocTraverseFields ## Thoughts Die Übernahme der Komponenten ist möglich. ## Resources ## Review questions ## Aufgaben - [x] Aufgabe von [[Oliver Fromm]] - Überprüfung auf Übernahme der Komponenten [start:: 2026-01-12] [completion:: 2026-01-12] - [x] Ausgang der Gespräche von [[Oliver Fromm]] und Talend abwarten #process/task [start:: 2026-01-12] [due:: 2026-04-01] [completion:: 2026-04-01] ## Offene Aufgaben ```dataviewjs const pages = dv.current().file.inlinks.where(p => dv.page(p.path).tags?.includes('process/task')).where(p => dv.page(p.path).file.tasks.length != dv.page(p.path).file.tasks.where(t => t.fullyCompleted === true).length); dv.table(["Project", "Status", "Completed", "Tasks"], pages.map(p => { const page = dv.page(p.path); const tasks = page.file.tasks; return [ page.file.link, page.status, tasks.where(t => t.fullyCompleted === true).length, tasks.length ] })); ``` ## Aufgaben ```dataviewjs const pages = dv.current().file.inlinks.where(p => dv.page(p.path).tags?.includes('process/task')); dv.table(["Project", "Status", "Completed", "Tasks"], pages.map(p => { const page = dv.page(p.path); const tasks = page.file.tasks; return [ page.file.link, page.status, tasks.where(t => t.fullyCompleted === true).length, tasks.length ] })); ```