Robert Cemper · Dec 5, 2020 go to post

In principle YES.
SQL does it with parallel processing of queries.
CSP Servers do it by its concept of sessions.
The class compiler does it.
Work Queue Manager supports it.
It is part of IRIS.
ObjectScript itself just has a JOB command to start a process in the background.
how you organize it is up to you.
 

Robert Cemper · Nov 30, 2020 go to post

In DC ANALYTICS / Authors what do these column headers stand for?

  • Comment Rating
  • Post Rating
  • VPP Context
  • VPP Absolute

For Rating I'd expect Votes ? 
But VPP ? 

Robert Cemper · Nov 30, 2020 go to post

@Yuri Marx :
if you have the schema as XSD at hands 
All you need to do is to open the XML wizard in IRIS  Studio and it generates the whole packages for you


>>>

I used it rather intensive and a pack of 100+ classes from 1 XSD was no problem

Robert Cemper · Nov 29, 2020 go to post

I removed my example on PuTTY. 
It worked by mistake as the local firewall was switched off

If setup correctly it basically works as described by @Alexey Maslov 
and you need to log in separately on the server,

 

Robert Cemper · Nov 27, 2020 go to post

Correct.
After 20 years working with CSP since day 2.5 I just don't feel like discussing and explaining CSP internals anymore and argue against obviously wrong statements. 
There is enough public detailed documentation around .

Robert Cemper · Nov 26, 2020 go to post

Set Property Parameter %JSONNULL = 1

  Property Code As %String(%JSONNULL = 1);
Code = ""  >>> "Code":null
Code =$c(0)  >>> "Code":""
Robert Cemper · Nov 24, 2020 go to post

If you can grab a Caché distribution you will find in 
%cachedir%\dev\cpp\    several samples and required sources

Robert Cemper · Nov 24, 2020 go to post
the generated file:
------------------------------------------------------------------------------------------
<br><p>
<nobr>Klasse <b>zrcc.EX.ISOS</b>
</nobr><p>Execute InterSystems ObjectScript over ODBC</p><a name="Anchor_Inventory"></a>
<table class="Label" cellpadding="0" cellspacing="0" cols="1">
<tr valign="center">
<td align="left" width="100%" >
<a href="#" onclick="expandIt(1); return false;" class="PackageChoice" title="Expand/Collapse Inventory" onmouseover="this.style.color = 'red';" onmouseout="this.style.color = 'black';">
    <image id=Im1 src=/csp/sys/images/ExpandedMarker.jpg height=15 width=16 border=0 align=bottom>
<nobr><b>Inventory</b></nobr></a>
</td>
</tr>
</table>
<br>
<div id="Id1" class="DivShow" style="">
<table class="Summary" cellpadding="0" cellspacing="0" cols="1">
<tr valign="center">
<th align="center">
Parameters
</th>
<th align="center">
Properties
</th>
<th align="center">
<a href="#Anchor_Methods">Methods</a>
</th>
<th align="center">
Queries
</th>
<th align="center">
Indices
</th>
<th align="center">
ForeignKeys
</th>
<th align="center">
Triggers
</th>
</tr>
<tr>
<td align="center" class="private">
</td>
<td align="center" class="private">
</td>
<td align="center">
<a href="#Anchor_Methods">3</a>
</td>
<td align="center" class="private">
</td>
<td align="center" class="private">
</td>
<td align="center" class="private">
</td>
<td align="center" class="private">
</td>
</tr>
</table>
<br/>
<br/></div>
<a name="Anchor_Summary"></a>
<table class="Label" cellpadding="0" cellspacing="0" cols="1">
<tr valign="center">
<td align="left" width="100%" >
<a href="#" onclick="expandIt(2); return false;" class="PackageChoice" title="Expand/Collapse Summary" onmouseover="this.style.color = 'red';" onmouseout="this.style.color = 'black';">
    <image id=Im2 src=/csp/sys/images/ExpandedMarker.jpg height=15 width=16 border=0 align=bottom>
<nobr><b>Summary</b></nobr></a>
</td>
</tr>
</table>
<br>
<div id="Id2" class="DivShow" style="">
<table class="Summary" border="0" cellspacing="0" cellpadding="1">
        <tr><th colspan="3" title="Bold for local member; italics for inherited; shaded for private; blue for client methods; strikethrough for deprecated.">Methoden</th></tr>
<tr>
<td  nowrap><a class="" href="#METHOD_Gset" title="zrcc.EX.ISOS">Gset</a></td>
<td  nowrap><a class="" href="#METHOD_Ping" title="zrcc.EX.ISOS">Ping</a></td>
<td  nowrap><a class="" href="#METHOD_Xcmd" title="zrcc.EX.ISOS">Xcmd</a></td>
</tr>
</table><br/>
<br/></div>
<a name="Anchor_Methods"></a>
<table class="Label" cellpadding="0" cellspacing="0" cols="1">
<tr valign="center">
<td align="left" width="100%" >
<a href="#" onclick="expandIt(3); return false;" class="PackageChoice" title="Expand/Collapse Methods" onmouseover="this.style.color = 'red';" onmouseout="this.style.color = 'black';">
    <image id=Im3 src=/csp/sys/images/ExpandedMarker.jpg height=15 width=16 border=0 align=bottom>
<nobr><b>Methods</b></nobr></a>
</td>
</tr>
</table>
<br>
<div id="Id3" class="DivShow" style="">
<a name="Gset"></a>
<a name="METHOD_Gset"></a>
<span class="external"><nobr>&#149 classMethode <b>Gset(glob As <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a></nobr>, subs As <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a></nobr>, val As <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a></nobr> = "", dd As <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25Integer">%Integer</a></nobr> = 1)</b>
as <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a></nobr></nobr>
[ SQLProc = Gset ]</span><blockquote>
set / kill global over ODBC
subs = subscript in ( )
dd = $data of source during global copy</blockquote>
<a name="Ping"></a>
<a name="METHOD_Ping"></a>
<span class="external"><nobr>&#149 classMethode <b>Ping()</b>
as <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a></nobr></nobr>
[ SQLProc = Ping ]</span><blockquote>
check connectivity</blockquote>
<a name="Xcmd"></a>
<a name="METHOD_Xcmd"></a>
<span class="external"><nobr>&#149 classMethode <b>Xcmd(cmd As <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a></nobr>, ret As <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a></nobr> = "")</b>
as <nobr><a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a></nobr></nobr>
[ SQLProc = Xcmd ]</span><blockquote>
eXecute Command over ODBC
name of local variable for return value</blockquote>
-------------------------------------------------------------------------------------------
​​​
Robert Cemper · Nov 24, 2020 go to post

Hi @Yuri Marx!
I did a quick and dirty try during lunch in terminal:   

set %library=$namespace
set set %request=##class(%CSP.Request).%New()
set cdef=##class(%ClassDefinition).%OpenId("zrcc.EX.ISOS")     ; my classname
set file="my.html" o file:("WNS"):0 write $t     ;  1 if OK
use file d ##class(%CSP.Documatic).RenderClassPage(cdef,1)
close file

The result still holds references to /csp/...images  and data types  
     <image id=Im1 src=/csp/sys/images/ExpandedMarker.jpg height=. . . 
    <a href="%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=USER&CLASSNAME=%25String">%String</a>
that you might want to resolve as they are quite generic or you just ignore it .
My browser is very friendly  :-)
And that's the result:

Some polishing might be required
 

Robert Cemper · Nov 20, 2020 go to post

It all sounds like a software provider in maintenance for its customers.
But then, I would connect with Studio (or similar), place my code and run it from the embedded terminal.
 

Robert Cemper · Nov 19, 2020 go to post

It might be a hard exercise to manage write access from a local and a remote instance to a common DB at the same time.
 

Robert Cemper · Nov 18, 2020 go to post

There is no direct way.
BUT:
If SSH is installed on your server you may connect to a CMD session (e.g by using PuTTY) over SSH
[ Windows DOS prompt ]
From there you can run %cachedir%\bin\Csession.exe by local access without using Telnet.

Robert Cemper · Nov 18, 2020 go to post

Congratulations  ! yes yes yes yes yes 

I'm personally moved!
Since when I asked for something similar in 2005 I got a massive push-back by a person that is no longer with ISC mgmt.

Robert Cemper · Nov 16, 2020 go to post

Hello @Anna Golitsyna!
the 3rd example is 1 class that contains 2 basic functionalities:  A Server and a Client.
The system you want to control runs the ClassMethod Server.
- opens an IP port and listens for orders, execute it, and continue looping.
- it is typically started in the background during  system start (from %ZSTART.mac)
This is the "hidden Login"
The (Classmethod) Client connects to the listening port and sends a request and gets answers.
The structure of Requests and Answer is up to you and makes sure you have always control
over what should happen on the remote system. As your  "Listener" is active already there
is no need for any further login. But you are of course free to implement it on top of this basic mechanic.

Robert Cemper · Nov 13, 2020 go to post

The major impact is the default collation for CACHETEMP/IRISTEMP.   This may affect sorting!

There is my related question Multi Language Sort  

@Vitaliy Serdtsev provided an excellent solution as reply to the problem
including a detailed example of how to cover solve the issues I found
with basic features already available in Caché since almost ever(?).

Robert Cemper · Nov 12, 2020 go to post

methodname_"Response" is hardcoded in system class %SOAP.WebService
I would warn for writing a customized version of it.