Reputation: 642
import moment from '/kylo/script_files/depletions/moment-with-locales.min.js';
var flowFile = session.get();
if (flowFile != null) {
try {
var YYYYMMDD = flowFile.getAttribute('YYYYMMDD')
var day = flowFile.getAttribute('firstDayOfWeekSundayorMonday')
if (moment(YYYYMMDD, "YYYYMMDD").isValid()) {
var startWeekAsSunday = true; //sunday
if (day !== null && day !== '' && day.trim().toUpperCase() === 'MONDAY') {
startWeekAsSunday = false; //monday
}
var date = moment(YYYYMMDD).format("YYYYMMDD");
var startOfWeek = moment(date).startOf(startWeekAsSunday ? 'week' : 'isoWeek').format('YYYYMMDD');
var endOfWeek = moment(date).endOf(startWeekAsSunday ? 'week' : 'isoWeek').format('YYYYMMDD');
flowFile = session.putAttribute(flowFile, 'startOfWeek',startOfWeek)
flowFile = session.putAttribute(flowFile, 'endOfWeek',endOfWeek)
} else {
throw "invalid date " + YYMMDD;
}
session.transfer(flowFile, REL_SUCCESS)
} catch (err) {
flowFile = session.putAttribute(flowFile, 'errorMessage', err.message)
session.transfer(flowFile, REL_FAILURE)
}
}
Upvotes: 0
Views: 410
Reputation: 642
able to figure out. It seems import work differently with "nashorn", which Nifi is using to run javascript.
so rather than using ECMA way of import, i used load() method of nashorn
load("/kylo/script_files/depletions/moment/moment-with-locales.min.js");
var flowFile = session.get();
if (flowFile != null) {
try {
var YYYYMMDD = flowFile.getAttribute('YYYYMMDD')
var day = flowFile.getAttribute('firstDayOfWeekSundayorMonday')
if (moment(YYYYMMDD, "YYYYMMDD").isValid()) {
var startWeekAsSunday = true; //sunday
if (day !== null && day !== '' && day.trim().toUpperCase() === 'MONDAY') {
startWeekAsSunday = false; //monday
}
var date = moment(YYYYMMDD).format("YYYYMMDD");
var startOfWeek = moment(date).startOf(startWeekAsSunday ? 'week' : 'isoWeek').format('YYYYMMDD');
var endOfWeek = moment(date).endOf(startWeekAsSunday ? 'week' : 'isoWeek').format('YYYYMMDD');
flowFile = session.putAttribute(flowFile, 'startOfWeek',startOfWeek)
flowFile = session.putAttribute(flowFile, 'endOfWeek',endOfWeek)
} else {
throw "invalid date " + YYMMDD;
}
session.transfer(flowFile, REL_SUCCESS)
} catch (err) {
flowFile = session.putAttribute(flowFile, 'errorMessage', err.message)
session.transfer(flowFile, REL_FAILURE)
}
}
now everything is working as expected. now i dont even need "Module Directory" attribute.
Upvotes: 4