Unfortunately this is a known issue, you'll find several threads on these forums with users jumping through hoops to work around it, e.g. https://community.safe.com/s/question/0D54Q000080hbnrSAA/datetimeconverter-rejected-port-null
It's regrettable that the issue seems to still be there in 2022.0.
And it would such an incredibly easy fix, so why is it that hard to fix it ?
And it would such an incredibly easy fix, so why is it that hard to fix it ?
Actually, it just dawned on me, that it's defined in this file: C:\\Program Files\\FME 2022\\transformers\\fmesuite.fmx
The code seems to be Tcl/Tk, which I never really learned.
Are there any Tcl/Tk programmers out there, that may be able to decipher it and suggest a fix ?
Actually, it just dawned on me, that it's defined in this file: C:\Program Files\FME 2022\transformers\fmesuite.fmx
The code seems to be Tcl/Tk, which I never really learned.
Are there any Tcl/Tk programmers out there, that may be able to decipher it and suggest a fix ?
YES!!!!
I did manage to decipher the TclTk code myself, and offer a correction.
This is the original code piece:
if {[string length $newAttrVal] == 0} {
if {{$(PASSTHROUGH)} eq {NO} || [string length $oldAttrVal] > 0} {
FME_SetAttribute fme_rejection_code "INVALID_INPUT";
break;
} elseif {!$oldAttrExists} {
FME_UnsetAttributes $attr;
} elseif {!$oldAttrNull} {
FME_SetAttribute $attr {};
};
}
This is my fix:
if {[string length $newAttrVal] == 0} {
if {{$(PASSTHROUGH)} eq {NO} || [string length $oldAttrVal] > 0} {
FME_SetAttribute $attr $oldAttrVal;
FME_SetAttribute fme_rejection_code "INVALID_INPUT";
break;
} elseif {!$oldAttrExists} {
FME_UnsetAttributes $attr;
} elseif {!$oldAttrNull} {
;# FME_SetAttribute $attr {};
FME_SetAttribute $attr $oldAttrVal;
};
}
And it works 🙂
Now I can use the transformers in a cascading manner.
Yippee!
--------------------- edit:
Actually, the fix need only be added to the "INVALID_INPUT" block:
if {[string length $newAttrVal] == 0} {
if {{$(PASSTHROUGH)} eq {NO} || [string length $oldAttrVal] > 0} {
FME_SetAttribute $attr $oldAttrVal;
FME_SetAttribute fme_rejection_code "INVALID_INPUT";
break;
} elseif {!$oldAttrExists} {
FME_UnsetAttributes $attr;
} elseif {!$oldAttrNull} {
FME_SetAttribute $attr {};
};
}
And the updated transformer definition can be kept in a separate FMX file in the same folder as fmesuite.fmx. Just remember to increase its version number.
Unfortunately this is a known issue, you'll find several threads on these forums with users jumping through hoops to work around it, e.g. https://community.safe.com/s/question/0D54Q000080hbnrSAA/datetimeconverter-rejected-port-null
It's regrettable that the issue seems to still be there in 2022.0.
FYI, the unresolved known issue is FMEENGINE-56103
FYI, the unresolved known issue is FMEENGINE-56103
Hi Dan.
Did you see my fix ?
It's a very small thing to fix in the fmesuite.fmx file, so couldn't it, and similar fixes, be escalated to be fixed asap?
In the meantime:
Will any FMX file in the same folder be read upon start, so one can add custom updated versions as a seperate file?
FYI, the unresolved known issue is FMEENGINE-56103
Hi Dan.
I went ahead and tried it, and yes, a seperate FMX file will indeed be read upon startup, so such customizations can be kept in its own file. Easier to distribute too.
FYI, the unresolved known issue is FMEENGINE-56103
Yes, I saw your fix and I've escalated the issue. Thanks!