The most efficient way to extract files from a Remedy database is to use the Java API library shipped with Remedy. The Java API from BMC Software is a collection of classes, interfaces, and relationships that provide full client functionality like the AR System C API in a style consistent with typical Java programming techniques. Like the C API, the Java API is forward and backward compatible with other versions of AR System. Consistent with object-oriented design, the AR System Java API represents AR System server objects as Java objects. Classes are defined for forms, fields, menus, active link, filter, escalations, and all other objects in an AR System application. Entry objects represent entries (requests) so your Java client can manipulate AR System data as well as definitions. [1] The full java reference library is installed with the ARSystem server and is typically stored C:\Program Files\BMC Software\…. \arserver\api\doc. You can view the library with your browser or copy the ardoc*.jar file to your desktop and rename it to ardoc*.zip.
Below is a sample of code using an AR Java call, getEntryBlob. As the program name says, GetAttachmentFromRemedy uses a set of user defined inputs to extract an attachment file from a Remedy database. It then takes the file and places it in a user defined directory on the Remedy application server.
Before using this code on your installation, check if the version of jar file has changed. In some cases the AR Java calls have been rewritten and therefore use different parameters. It is recommended to use the version installed you’re your Remedy application.
This code was written on an Eclipse editor and was later compiled using launch4j to create an .exe file. It is not necessary to have an .exe file but it is clean and easier to transport.
//GetAttachmentFromRemedy ARS 7.6.04 v1.0
Required: Remedy account w/read license and no group assignment. Login: jschmoe Password: remedy
The source code below is the source code for ARS 7.6.04
Create an executable .jar file using Eclipse then test. Create executable .exe with launch4j using the .jar file.
The directory structure and files used:
D:\Program Files\BMC Software\ARSystem\Arserver\api\Code
GetAttachmentFromRemedy.jar
GetAttachmentFromRemedy.xml
D:\Program Files\BMC Software\ARSystem\Arserver\api\Code\remedyAPI
GetAttachmentFromRemedy.java
D:\Program Files\BMC Software\ARSystem\Arserver\api\Code\remedyAPI\src
GetAttachmentFromRemedy.jardesc
GetAttachmentFromRemedy.manifest
D:\Program Files\BMC Software\ARSystem\Arserver\api\Code\remedyAPI\bin
GetAttachmentFromRemedy.class
GetAttachmentFromRemedy.exes
Example test
– must have corresponding Attachment File in Remedy
– Can be of any file type e.g. .doc, .pdf, .csv, etc.
D:\Program Files\BMC Software\ARSystem\Arserver\api\Code\remedyAPI\bin>
GetAttachmentFromRemedy.exe <login> <password> <server> <formRecordID> <directoryPathOnServerWhereFileWillBePlaced> <nameOfFileToBeExtracted> <statusOfFormRecord> <fieldIDOfAttachmentFile>
D:\Program Files\BMC Software\ARSystem\Arserver\api\Code\remedyAPI\bin>
GetAttachmentFromRemedy.exe jschmoe remedy remedyServer-02 “INC000000000212” “D:\\AttachmentFolder\\FirstSet\\TestData\\” “BMC ARS Service Pack Upgrade – 206292.pdf” “New” “600017101”
——————————————————————————————————————————————
import java.io.File;
import com.bmc.arsys.api.*;
//import java.text.SimpleDateFormat;
//import java.util.Date;
// GetAttachmenFromRemedy version for ARS 7.6.04 v1.o
publicclass GetAttachmentFromRemedy{
publicstaticvoid main(String[] args) {
/*
BufferedWriter out = null;
try{
// Create file
FileWriter fstream = new FileWriter(“D:\\CDRL\\TestFileName.txt”);
out = new BufferedWriter(fstream);
//Close the output stream
System.out.print(args[0] + ‘\n’);
System.out.print(args[1] + ‘\n’);
System.out.print(args[2] + ‘\n’);
System.out.print(args[3] + ‘\n’);
System.out.print(args[4] + ‘\n’);
System.out.print(args[5] + ‘\n’);
System.out.print(args[6] + ‘\n’);
System.out.print(args[7] + ‘\n’);
out.close();
}catch (Exception e){//Catch exception if any
System.err.println(“Error: ” + e.getMessage());
}
*/
// Username to login to ARServer
String uname = args[0];
// Password for the User
String pword = args[1];
// Authentication String
String auth = “”;
// Local
String local = “”;
// ARServer
String serv = args[2];
// Port
int port = 12345;
// Create ARServerUser object with supporting information.
ARServerUser Login = new ARServerUser(uname, pword, auth, local, serv, port);
// Form name you wish to retrieve the attachment from in the constructor.
String formName = “ARSCustomHelpDesk”;
// EntryID of the record you wish to retrieve the attachment from in the constructor
String entryID = args[3];
// fieldID of the attachment field in the constructor
int fieldID = Integer.parseInt(args[7]);
//SimpleDateFormat FormattedDate = new SimpleDateFormat(“MMddyy”);
String strDirectory = “”;
// ** Create a new directory
try{
strDirectory = args[4]+ “\\” + args[3] + “\\” + args[6] + “\\”;
// Create one directory
(new File(strDirectory)).mkdirs();
}catch (Exception e){//Catch exception if any
System.err.println(“Error: ” + e.getMessage());
}
// ** END
// Need to have the Login.GetEntryBlob() method in a try block to catch ARException
// Set a string variable for the name of the attachment
String aname = args[5];
aname = aname.substring(aname.lastIndexOf(‘\\’)+ 1);
// Set a string variable for the full path of where you wish to copy the attachment to.
String filePath = strDirectory + aname;
try{
// Call getEntryBlob with supporting information
//void ARServerUser.getEntryBlob(String formName, String entryID, int fieldID, String filePath)
Login.getEntryBlob(formName, entryID, fieldID, filePath);
}catch (Exception e){//Catch exception if any
System.err.println(“Error: ” + e.getMessage());
}
}
}
This code can be called from Remedy workflow and is reusable as most of the inputs are user defined variables. I called this program from a filter guide where up to 12 attachment fields were listed on a custom form.
BMC, BMC Software, and the BMC Software logo are the exclusive properties of BMC Software, Inc., are registered with the U.S. Patent and Trademark Office, and may be registered or pending registration in other countries. All other BMC trademarks, service marks, and logos may be registered or pending registration in the U.S. or in other countries. All other trademarks or registered trademarks are the property of their respective owners.
Java is a trademark of Oracle Corporation