There are a number of issues here, both in your script and in the way Workflow handles these types of connections. The upcoming version of Connect will fix some of those issues. But in the meantime, here’s how you can make it work:
First of all, whenever you do a POST, you should send your payload in the body of the request, not as parameters in the URL. That is especially true if the data you are passing is a JSON string: a URL is limited in length, and the JSON may contain caracters that are invalid in a URL.
So instead, your code should look like this:
var myObject = {"jobid":"123", "filedate":"20210105","ids":[0,1,2,3],"keys":['a','b','c','d'],"products":[]};
var myJSON = JSON.stringify(myObject);
var request = createHTTPRequest();
var my_url = "http://localhost:9090/create_inventory";
request.open("POST",my_url,"","");
request.setRequestHeader("Content-type", "application/json");
request.send(myJSON);
Notice how the URL now only contains the endpoint and the JSON objet is now passed as a parameter to the send() command. Note also that I removed the extra comma at the start of the ids[] array which was probably just a typo.
Now on the Workflow side, to receive this object, you’ll have to tick 2 options in your NodeJS Input task: