Getting Started with Scripting on the Nuix Engine – Part 2

In my last article, I went over the different scripting options available to developers working with the Nuix Engine. In this follow up article, we’ll look more closely at the documentation and some of the other things you should take into consideration as you dive into your scripting projects.
Where To Start Your Journey
Documentation is available and bundled with the product as well as online. Check out the Nuix package section and scroll to the section titled 'Scripting Context' these are your main entry points:
Name |
Description |
currentCase |
The case currently open in the application. |
currentSelectedItems |
The items which the user has selected or, if viewing a single item, a list containing just that item. The ordering of the items in the list is not defined. |
utilities |
Provides access to utilities. |
NUIX_VERSION |
The current version of the Nuix application running the script. |
currentItem |
This object is only available for scripted metadata identifier. It represents the item being evaluated by the scripted metadata identifier. |
Any script you run inside the Nuix Engine will in some aspect interact with at least one of these script context objects. Be wary of blindly expecting a value to be present, however. A currentCase will be null if a case is not open, currentSelectedItems will be null if a case is not open or be an empty list if in a case. Focus on those advanced topics for script bundles/headers so that the script menu will disable the script if the context does not support what is required.
What’s the point of a script with no case? The script could create the case as part of your workflow, or the script could prompt for another script to perform some action without opening it to the user (perhaps a report or an export).
Case? Who Needs One?
Users of Nuix Imager will know what I am talking about. Nuix Imager is a product installed alongside Nuix Workstation as part of the bundle. With Nuix Imager, a Nuix Engine instance is created with sourceItemFactory; this Factory provides access to the extraction component of the Nuix Workers or in the prefilter dialog you see in Nuix Workstation.
In my last article I mentioned making a universal unzip tool. Would I need a case for that or not? All I would really need to do is open an item in the Nuix Engine, determine its children/structure and present it to the user to extract the binary they choose. No case required, so why make one?
Of course, not using workers has two major drawbacks. You lose the ability to use a case index for searching and you lose the ability to extract in massive quantities across workers. If all you wanted was to present a list 'on demand' when the user expands or collapses the structure you don’t need heavy lifting to do that. Another helpful trick sourceItemFactory is good for is peeking at the MIME type of an item before processing it to make sure it is indeed the correct extension and is not corrupted before wasting time doing your work.
I Want to Build an Application
With the Nuix Engine, available on our download site, comes documentation and the ability to build your customer products on it. We'll be releasing some pretty cool baseline templates to support your innovations and creativity in the near future.
Scripts at a Distance
The Nuix Engine is easily applied to any logic that involves the extraction, hydration, morphing, reporting and indexing of data for searching. What happens if you want to do work with the Nuix Engine at a distance? Let's say your users are on low spec machines and you want to build one application hub they can all attach too.
You’re now in the world of Nuix RESTful. REST is a technology allowing applications or websites to be built that work on a different machine than those the user is running. This is the classic scenario of a review platform when you may have thousands of users interacting with a cluster of beefy Nuix boxes that host the case indexes.
It's Not Enough! I Need More!
More? Consider all we have talked about so far and put the concept of BPMN at the front of your mind. BPMN is a way of defining processes in a standard and universal way. With these you could interact with REST or the Java engine directly and manage a pipeline of scripts.
There are also the Nuix Investigate workflows, which can be used to call a script on our review platform to perform any Nuix Engine actions available in the Nuix Engine API.
One More?
There’s so much more that the Nuix Engine can do. We are already drafting the framework that allows custom MIME types and evidence sources. When that comes there will be an explosion of interest in how we integrate with other products. Start thinking about all the evidence sources you could potentially make a connector for and sell in partnership with Nuix.
That’s Got to Be It
To be honest there is far more to say about scripting and the Nuix Engine, but for now let's wrap this up. We are intensely proud of the Nuix Engine and what it can do. From automating an existing workflow to a fully-fledged pipeline management tool, the possibilities are truly endless.
I’ll leave you with a handy table as a reference to help you kickstart your development efforts.
Command Line |
In front of Nuix Workstation |
Remote User |
|
I am still tinkering/testing |
Nuix Console -interactive |
Scripting -> Scripting Console (make sure you save it!) |
RESTful -> PUT userScripts |
Script Deployed |
Nuix Console scriptpath.rb |
Script Directory in nuixscript package |
Nuix Investigate Workflow |
Application Deployed |
Compiled Jar of a Nuix Engine project |
Java Application wrapping Engine project |
Web application wrapping REST OR BPMN tool |