Ignore me! I misunderstood.
- Log in to post comments
Ignore me! I misunderstood.
Your result set should be an EnsLib.SQL.GatewayResultSet, which has a method called GetSnapshot(). That method has you pass a EnsLib.SQL.Snapshot by reference. You're probably going to want to set the FetchAll parameter on the GetSnapshot() method to 1 so it gets all the results, but you can also create your EnsLib.SQL.Snapshot before using GetSnapshot() and set it's starting row and max rows if you'd like. Then you can iterate over the snapshot instead of the result set. Once you've gone through it once, you could either create a new snapshot by calling the GetSnapshot() method again, or you can use the snapshot's Rewind() method.
According to this page, if it's something that still in development, you can use the CleanProduction() method to clear the message queues. Using it in a live system isn't recommended because it clears out everything pretty indiscriminately, but it's useful for debugging.
Productions get the suspend status when after shutting down there are still synchronous messages that could not be processed.
You'll need the resource %Admin_Task to use task manager functions.
Once you have access to it, set up a class that extends %SYS.Task.Definition and override the OnTask() method. Then you can set it up in the task scheduler and it'll run the OnTask() method according to whatever schedule you set.
It looks like where you defined your method, it takes zero arguments. When you're calling it, you're providing two. That would make the event not work properly.
I was updating code someone else wrote a few years ago, and they had set [Not ProcedureBlock] on the class. I'm not sure why.
Thank you, Julius! It was that, and my class wasn't ProcedureBlock.
We've seen this behavior too. Whenever we use Job, we see a license used by the user at their computer's IP address, and we also see the job running as their username@127.0.0.1 because it's executing on the server.
At the bottom of the pane you showed in your screenshot, there should be a few tabs. If you're on the "Project" tab and haven't added any classes to your project, it would look like that. If you switch it to the "Namespace" tab, you should see everything.
MAXSTRING usually indicates that you're exceeding the maximum possible length of a string somewhere. Are you sure it's a problem with the %Stream.GlobalCharacter, and not a different string variable in your program? Global character streams shouldn't have that problem.
You can see what the maximum length of a string is on your system by opening a terminal and running:
write $SYSTEM.SYS.MaxLocalLength()
One of the properties of the %SOAP.WebClient class is HttpRequest which is an instance of %Net.HttpRequest. You might need to set the content type of that HttpRequest. So where you have "..ContentType", try "..HttpRequest.ContentType"?
What is the resulting SQLCODE? That should point you in the right direction.
The maximum URI size in Apache is usually 8,177 characters, but increasing that isn't the problem. Somewhere in your program, the value of your input is getting appended onto the URI, and it shouldn't be. Can you see anywhere that your program might be doing that?
That's telling you the URL you're requesting is too long, not the request body. If it was the request body that was too big, that'd be a 413, not a 414. If you're getting that when your form contains a very long entry, you're probably somehow converting the request to a get, not a post, request. Can we see the code for your form as well as how it's being submitted?
Thanks, that's exactly what I'm looking for!
I've had some time to try this now. Here are steps that worked for me:
set myrequest = ##class(%Net.HttpRequest).%New()
set myrequest.Server = "<server ip or domain here>"
set myrequest.Port = "<server port here if it isn't 80>"
set myrequest.Location = "</path/to/rest>"
do myrequest.EntityBody.Write("<your json here>")
do myrequest.Post()
set mydata = myrequest.HttpResponse.Data.Read()At that point, the data returned in the response should be in mydata.
Depending on your specific API, you made need to take additional steps for authentication, and you may need to use myrequest.Get() or myrequest.Put() instead of myrequest.Post().
If you need to set parameters, you use the SetParam method of the HttpRequest. For example, if you're using the very most basic way to authenticate to a Cache instance, you do that by specifying a CacheUserName and a CachePassword as parameters as follows any time before your post/put/get:
do myrequest.SetParam("CacheUserName","<your username here>")
do myrequest.SetParam("CachePassword","<your password here>")I'm about to go down the same path here. I have a rough idea of what I need to do. I'm going to try to use the %Net.HttpRequest object and do at least the following steps:
1. Create a new %Net.HttpRequest object
set myrequest = ##class(%Net.HttpRequest).%New()
2. Set the server
set myrequest.server = "www.whatever.com"
3. Set the locatoin
set myrequest.location = "/path/to/rest"
4. Create a global binary stream.
5. Write json data to the stream.
6. Use the stream as the EntityBody for the HttpRequest.
7. Call the get, put, or post method of the HttpRequest object to consume.
8. Use the HttpRequest's HttpResponse object to check the response
If your other system is also a Cache or IRIS server, there is a mirroring options called a reporting async that exists for this specific purpose. If you've got multiple servers and need to consolidate that data for reporting purposes, a reporting async can be a part of up to 10 mirrors to help you bring that data together, too.
Sam, thanks, that solves the first part! Any idea how to make it show the item number somewhere no matter what drill down level I'm at?
Somewhere in your button tag, you have onselect= something. Buttons don't have an onselect, but even if they did, I'm guessing that's not the event you actually want. onselect happens when a user highlights text within a control, like in a text input.
If you're trying to set what happens when the user clicks the button, that's onclick.
If you're trying to set what happens when the user selects the button but doesn't click it (say by pressing tab until the button is highlighted) that's onfocus.
It looks to me like the data returned in the HTTP response might not be proper JSON. Do you have that data for us to see?
ObjectScript variables are untyped, so preserving the type isn't necessary.
You'll build the list by adding your MyPackage.MyClass objects to it, then you'll return the %ListOfObjects, then you'll use that list's methods to manipulate those objects. For instance, set mything = mylist.GetAt(1) will give you an object that is identical to the MyPackage.MyClass object you put in the list with all of its properties an methods.
The %OnAfterCreatePage() method takes place after an instance of your page has been created on the server, but before it gets sent to the client, so it's really intended for server-side stuff.
Maybe instead you should be using the onloadHandler() method. That one runs on the client just before the page is displayed.
A while back, I downloaded Crystal Reports for Eclipse and projected a couple of classes into Java and used them to set up an interface for us to automate emailing, printing, or archiving reports through Cache/IRIS's internal task manager.
Can you post the code for your form? That would be very helpful.
Just to clarify, in those bottom two queries, is that the entire query? No grouping, no sorting, no COUNT() functions?
If these are counts, it sounds like you've got some nulls in those columns. Try SELECT COUNT(*) FROM ACCT.Services WHERE TransID IS NULL and see what it says.
FYI, I enabled the /api/atelier web app, and that fixed the issue. Once I did that, I tried it both with and without the extra commas, and it was fine letting me connect either way. They were incorrect JSON, but they weren't the source of this particular problem.
EnsLib.File.PassthroughOperation that lets you use timestamp variables, not EnsLib.File.PassthroughService. PassthroughOperation sends files, PassthroughService receives them.