Typically third-party applications manipulate directly disk files, but in some cases they have their own separate data storage (a database or some kind of ad-hoc file structure). The ‘standard’ check-out system cannot be used for this second kind of applications: it generates just disk files, it cannot ‘inject’ or extract data from the third-party application data store. The solution to this problem is the use of File4 plug-ins – that are DLL (more precisely .NET assemblies) that transfer data to and from the data store of a specific third-party application.
When using a plug-in this is what is going on when checking-out from the Web browser:
1. Browser to Tark4 server: “I want to check-out object XXXX’
2. Tark4 server answer to Browser: “You have to contact File4 at address AAAAA and send it the command ‘KKKK’”
3. Browser to File4 server at address AAAAA: “KKKK”
4. File4 decodes KKKK, finds out that it means ‘check-out object XXX using the plug-in PPPP with file FFFF and parameter PPPP’
5. File4 to Tak4 server: ‘check-out and give me the data of object XXXX’
6. Tark4 server to File4: ‘DDDDDDDDD……’ (data of object XXXX)
7. File4 writes calls the plug-in PPPP passing the data, FFFF and PPPP
8. Plug-in PPPP takes care to ‘inject’ the data in the third-party application data store, using FFFF and PPPP as parameters to identify where to place the data within the data store.
The check-in process is similar, with the plug-in used to retrieve the data from the third-party application data store.
How does the Tark4 server knows which plug-in (if any) to use? It is specified by the clientSpec being used and depends on the type of the object being checked-out (e.g. the audios go to a special data store for an audio editor, whereas the images are checked-out as simple files – see below).
Note that the file name is still used – but just as a parameter passed to the plug-in – that uses it to decide (together with the extra parameter PPPP) where to put the data inside the data store.