go to post Eduard Lebedyuk · May 20, 2018 What's your current locale? If it's not Chinese you may want to change it. Note that it significantly affects system behavior and you should understand the implications in such a change. ???? often indicates the data loss during encoding conversions consider this Cyrillic example: set t = "Привет" USER>zzdump t 0000: 041F 0440 0438 0432 0435 0442 Привет USER>zzdump $zcvt(t, "I", "UTF8") 0000: 3F 3F 3F 3F 3F 3F ?????? USER>zzdump $zcvt(t, "O", "UTF8") 0000: D0 9F D1 80 D0 B8 D0 B2 D0 B5 D1 82 Ð.Ñ.ивеÑ. Note the difference between question marks and the last output. Last output is just encoding translation, but the first conversion - into questions completely lost the information, so you need to look deeper. You can try to modify TCP/IP IO table via ^NLS utility in %SYS namespace do ^NLS 1) Display current locale 2) Select defaults 3) Change locale 4) Display loaded settings 5) Advanced NLS option? 2 1) Internal tables 2) I/O tables 3) CSP files 4) Date, time and number formats Category of defaults? 2 Items marked with (*) represent the locale's original default I/O table Current default --------------------- -------------------- 1) Process RAW (*) 2) Cache Terminal UTF8 (*) 3) Other terminal UTF8 (*) 4) File UTF8 (*) 5) Magtape UTF8 (*) 6) TCP/IP RAW (*) 7) System call RAW (*) 8) Printer CP1251 (*) I/O table: 6 1) RAW (*) 2) UTF8 3) UnicodeLittle 4) UnicodeBig 5) CP1250 6) CP1251 7) CP1252 8) CP1253 9) CP1255 10) CP866 11) CP874 12) EBCDIC 13) KOI8R 14) Latin2 15) Latin9 16) LatinC 17) LatinG 18) LatinH 19) LatinT Selection for TCP/IP: 1 =>
go to post Eduard Lebedyuk · May 18, 2018 If you absolutely do not want to upgrade, you can take old json classes from 2014 (or 2017) and import them into Cache 2008.The classes are:%ZEN.Auxiliary.jsonProvider%ZEN.Auxiliary.jsonSQLProviderThat said an upgrade would be a preferable solution.
go to post Eduard Lebedyuk · May 17, 2018 You can create a separate query table with fields: query, user, time, arg1. arg2. ar3, ..., argN.And log information about the queries as is. This way you would be able to:group by query - to get how often some specific procedure is called regardless of the argument valuesfilter by argument valuesAdditionally there's ODBC logging and JDBC logging might be available depending on the database vendor.
go to post Eduard Lebedyuk · May 16, 2018 Not really. The statement is passed as is and three arguments are passed separately.Why do you need that?
go to post Eduard Lebedyuk · May 16, 2018 The final text would only be "compiled" on a target system if at all.Why do you need that?
go to post Eduard Lebedyuk · May 16, 2018 Default XMLPROJECTION for collection properties is WRAPPED, which adds wrapping tag. Define your list property this way: Property LIST As list Of test.List(XMLPROJECTION = "ELEMENT");
go to post Eduard Lebedyuk · May 16, 2018 Seems possible.Do you want to download data from Dynatrace into Ensemble or to send data (i.e. alerts) into Dynatrace?
go to post Eduard Lebedyuk · May 16, 2018 value in the database gets overwrittenYou need to set the whole value at once with SetParameter.If you mean different procedure calls than you need to debug the procedure itself.
go to post Eduard Lebedyuk · May 14, 2018 1. If you replace: set sc=gc.SetParameter(hstmt,$LB(gc.PutData(hstmt,.temp)),2) with: set sc = gc.PutData(hstmt, "TEXT") or with: set sc = gc.SetParameter(hstmt,$LB("TEXT"),2) What do you get? 2. Also in your original 4-parameter generated code the stream is bound via: s err=$zf(-5,%SQLGateway,62,QHandle,4,1,1,12,500,0,500) which is equal to set sc=gc.BindParameter(hstmt, 4,1,1,12,500,0,500) In your new code you bind the stream with: Set sc=gc.BindParameter(hstmt,2,1,1,12,0,0,-2) Is it from some other generated code?
go to post Eduard Lebedyuk · May 14, 2018 First you need to link the procedure, and after that you would be able to call it from your BO.
go to post Eduard Lebedyuk · May 12, 2018 Tried that, not the best idea. Tracing and debugging become much harder and you can't query as easily via SQL.Usually I work with JSON input in Ensemble like this:Create persistent class with required propertiesInstantiate it from incoming JSONSend this persistent object to BP
go to post Eduard Lebedyuk · May 11, 2018 Just one point it's Angular2 not AngularJS - I think AngularJS could be delivered by CSP but I doubt that it would be the best way to deliver Angular2 What's the difference between AngularJS and Angular2 in regards to CSP?AngularJS is the first version, Angular 2-5 are collectively referred as Angular and somewhat compatible between themselves. @Sergey.Sarkisyan?
go to post Eduard Lebedyuk · May 11, 2018 Connection is not license. From docs:The Caché licensing system attempts to identify distinct users and to allocate one license unit per user. A user is identified by a license user ID, which can be an IP address, a username, a CSP session ID, or some other identifier depending on how the user connects.Multiple processes started by or for a single user share a license unit up to the maximum number of processes per user. If the number of processes exceeds this maximum, a transition occurs and Caché begins allocating one license unit per process for that user ID. The system assumes that if the number of processes associated with a user ID exceeds the maximum, multiple users are accessing Caché through an intermediary (for example, a firewall system), so additional license units are required. (Processes started by the Job command are counted under the user ID invoking the command.)Even if the number of processes under the user ID drops back under the maximum, Caché continues to allocate one license unit per process for that user ID. Only when all connections by the user ID are closed and there are no more processes under the user ID does license allocation reset to one unit for that user ID.Maximum number of processes (connections) per user is 12.Will this affect our own internal tasks?It shouldn't as that would be one connection and license slot.Still, I'd recommend contacting WRC to clarify the issue completely.
go to post Eduard Lebedyuk · May 11, 2018 source code in your postsCheck this article. No external tools required. More articles about how to get the most from community are available on the link at the bottom of the page:
go to post Eduard Lebedyuk · May 11, 2018 Recently I built a REST API, 1 typical client for which generated dozens of requests per second, I tested locally with one client and usually got 10 to 20 thousands of exceptions in a few minutes as one "run" of the client.In the end I wrote a custom logging system, because even one minimal run hanged UI.Code.
go to post Eduard Lebedyuk · May 11, 2018 I'd like to add that you need to purge the log often, in my experience the UI becomes not very responsive after about 10 000 entries per namespace per day.
go to post Eduard Lebedyuk · May 11, 2018 The CSP part (REST for sure and maybe SOAP) could be managed by these two tools:Session events - provide callbacks for session start/end and request execution.SetConnectionLimit method can be used to set maximal number of connections per user - I'm not sure if this would work for xDBC but it would for sure work for CSP.Additionally you cat use ^ZSTART routine to check if user can login.