03-01-2024 05:29 PM
I need to create a business rule that will move a file from a user's folder in File Explorer to the server's File Share. I am using the BRApi.FileSystem.GetFile method to successfully read the file, but I am unable to write the file to the server. I believe my issue is with the XFFileInfo parameters. I am not sure how many parameters to provide and what the value to provide for the folderFullName parameter. Here is my current code:
'Get the file
Dim sourceXFFileEx As New XFFileEx
sourceXFFileEx = BRApi.FileSystem.GetFile(si, FileSystemLocation.ApplicationDatabase, sourceDir & "/" & sourceFile,True,True)
'Save the file but this part is not working
Dim targetFileDataInfo As New XFFileInfo(FileSystemLocation.FileShare, fileName, ??)
Dim targetFileData As New XFFile(targetFileDataInfo, String.Empty, sourceXFFileEx.XFFile.ContentFileBytes)
BRApi.FileSystem.InsertOrUpdateFile(si, targetFileData)
Solved! Go to Solution.
03-04-2024 01:27 AM
Hi Jrodgers,
You can try the follwoing apprach to move the file from the user's public directory to File Share > applications > Groups > Everyone directory. I hope this is what you're looking for.
'Get the file
Dim sourceXFFileEx As New XFFileEx
Dim sourceDir As String = "Documents/Users/" & si.UserName.Replace(" ","")
Dim sourceFile As String = "test_move.txt"
sourceXFFileEx = BRApi.FileSystem.GetFile(si, FileSystemLocation.ApplicationDatabase, sourceDir & "/" & sourceFile,True,True)
'Save the file but this part is not working
Dim tgt = brapi.FileSystem.GetFolder(si, FileSystemLocation.FileShare, "Applications/"& si.AppName.Replace(" ", String.Empty) & "\Groups\Everyone\").XFFolder.ParentFullName
Dim targetFileDataInfo As New XFFileInfo(FileSystemLocation.FileShare, sourceFile, tgt )
Dim targetFileData As New XFFile(targetFileDataInfo, String.Empty, sourceXFFileEx.XFFile.ContentFileBytes)
BRApi.FileSystem.InsertOrUpdateFile(si, targetFileData)
03-04-2024 01:27 AM
Hi Jrodgers,
You can try the follwoing apprach to move the file from the user's public directory to File Share > applications > Groups > Everyone directory. I hope this is what you're looking for.
'Get the file
Dim sourceXFFileEx As New XFFileEx
Dim sourceDir As String = "Documents/Users/" & si.UserName.Replace(" ","")
Dim sourceFile As String = "test_move.txt"
sourceXFFileEx = BRApi.FileSystem.GetFile(si, FileSystemLocation.ApplicationDatabase, sourceDir & "/" & sourceFile,True,True)
'Save the file but this part is not working
Dim tgt = brapi.FileSystem.GetFolder(si, FileSystemLocation.FileShare, "Applications/"& si.AppName.Replace(" ", String.Empty) & "\Groups\Everyone\").XFFolder.ParentFullName
Dim targetFileDataInfo As New XFFileInfo(FileSystemLocation.FileShare, sourceFile, tgt )
Dim targetFileData As New XFFile(targetFileDataInfo, String.Empty, sourceXFFileEx.XFFile.ContentFileBytes)
BRApi.FileSystem.InsertOrUpdateFile(si, targetFileData)
03-04-2024 04:23 AM
One thing people often don't realize, is that most OneStream classes are actually documented in the automatically-generated helper tree - but they might be a couple of level deeper than the starting tree.
In this case, we will pull up InsertOrUpdateFile from the tree. Because its definition includes custom OneStream-specific classes, if we click on the Objects tab, we will get such classes listed - but those are hyperlinks!
If you click on XFFile, you get the full documentation on that class, including all its constructors and methods. Here we see there is a FileInfo property, and again we can look in the Objects tab...
... and clicking on the hyperlink gives us all the goods on XFFileInfo, including a fairly straightforward constructor:
This technique should be enough to look up details for 80-90% of OneStream objects. Don't expect much descriptive text (although you will find occasionally find some, in the Definition tab), but the names are usually fairly explanatory.
I hope that helps!