Kanoa MES Overview Check
Why shouldn't you edit the kanoaAPP project directly, and where should your custom views go instead?
kanoaAPP is the only project that is updated on module updates, so any changes you make to its views are overwritten on each update (a backup of kanoaAPP is created first). Instead, copy views into your own custom project that inherits from kanoaAPP and is inherited by the runnable projects (kanoaMES, kanoaMobile, kanoaTablet, kanoaMarquee). See Kanoa Ignition projects.
Why do Kanoa write functions such as system.kanoa.order.addProductionOrder() take a user ID, and what do you pass when a script runs without a logged-in user?
The userId parameter is the ID of the user executing the function, so Kanoa can record who created or changed each record (records carry createdBy and changedBy fields). Write functions typically take an info dictionary plus a user ID, e.g. addProductionOrder(woInfo, userId). In gateway scripts, the course looks up the SYSTEM user with system.kanoa.security.getIDPUserId({'userName': 'SYSTEM'}). See addProductionOrder.
Many Kanoa get functions return datasets. How do you make them easier to work with in a script?
Use the utility functions system.kanoa.utilities.convertDatasetToJSON(dataset) for a list of dictionaries, or system.kanoa.utilities.convertDatasetRowToJSON(dataset, 0) for a single row as a dictionary. See convertDatasetToJSON.
What creates the assetOEE tag UDT instance for an asset, and which of its folders do you connect to your equipment data?
Kanoa creates an assetOEE UDT instance in the Kanoa tag provider whenever an asset is OEE-enabled. You connect equipment data in the Inputs folder: at a minimum, the infeed and outfeed counts and the asset state. See Tags.