I have tried using getProductionItems() using this code:

ClassMethod GetProductionItems(
pProd As %String,
pDefinition As %String,
pAutoAdd As %String) As %Status
{
Set tSC = $$$OK
If ($Get(pProd) = "") {
Set pProd = ##class(Ens.Director).GetActiveProductionName()
}
Set tProduction = ##class(Ens.Config.Production).%OpenId(pProd)
Set tSC = ##class(Ens.Director).getProductionItems(tProduction,.pDefinition,.pAutoAdd)
ZW
Quit tSC
}
 

Interesting question. I looked in Documentation and found a CreateDocumentation classMethod. I tried to test it with this code. I got an error in my Production. Let me know if this helps you. I will look at getProductionItems() next...

ClassMethod CreateDocumentation(
pProduction As %String = "",
pIntro As %Boolean = 1,
pFormat As %String,
Output LogFileName As %String,
Output URL As %String,
Output BookName As %String,
PDFFileName As %String,
PDFRenderer As %String,
ByRef Params As %String,
pAllSettings As %Boolean = 0) As %Status
{
Set tSC = $$$OK
If (pProduction = "") {
Set pProduction = ##class(Ens.Director).GetActiveProductionName()
}
Try {
Set tSC = ##class(%SYS.Ensemble).CreateDocumentation(pProduction,pIntro,$G(pFormat),.LogFileName,.URL,.BookName,$G(PDFFileName),$G(PDFRenderer),.Params,pAllSettings)
Catch {
Set tSC = ##class(%SYS.Ensemble).CreateDocumentation(pProduction,pIntro,$G(pFormat),.LogFileName,.URL,.BookName,$G(PDFFileName),$G(PDFRenderer),.Params)
}
Do $System.Status.DisplayError(tSC)
ZW
Quit tSC
}
 

Hello, Sathish, I recently published test-data app that utilizes a shell script to create a test file:

InterSystems Open Exchange
 

facture.cls defines the parameters for the RunScript classmethod.

ClassMethod DefineProductScript(
  pName As %String = "Demo2",
  pDebug As %Integer = 0) As %Status
  {
  Set pQuery = "SELECT ID from dc_iris.product WHERE Name = '?'"
  Set pQuery = $Replace(pQuery,"?",pName)
  Write:pDebug pQuery,!
  Set tSC = ##class(dc.iris.util).ExecuteQueryOneValue(pQuery,.oProduct)
  Write:pDebug tSC,!
  Set oProduct = ##class(dc.iris.product).%OpenId(oProduct)
  If ($IsObject(oProduct) = 0) Set oProduct = ##class(dc.iris.product).%New()
  Do:pDebug $System.OBJ.Dump(oProduct)
  Set oProduct.ClassName = "dc.iris.product"
  Set oProduct.MethodName = "RunScript"
  Set oProduct.RunCmd = "/opt/irisbuild/demo.sh"
  Set pRandom = "random"
  Set pOutput = "/opt/transform/practice/"
  Set pTemplate = "/usr/irissys/mgr/data/"
  Set oProduct.RunParam1 = "$Qty"
  Set oProduct.RunParam2 = pRandom
  Set oProduct.RunParam3 = pOutput
  Set oProduct.RunParam4 = pTemplate
  Set oProduct.Name = pName
  //Set oProduct.TargetPath = "/opt/transform/practice/"
  Set tSC = oProduct.%Save()
  Quit tSC
  }
ClassMethod RunScript(
  pProduct,
  pQuantity) As %Status
  {
  Set tSC = $$$OK
  Set oProduct = $Get(pProduct)
  If ($IsObject(oProduct) = 0) {
  Set oProduct = ##class(dc.iris.product).%OpenId(oProduct)
  }
  If ($IsObject(oProduct) = 0) {
  Set tSC = $$$ERROR($$$GeneralError,"No product defined")
  Quit tSC
  }
  Set pCmd = oProduct.RunCmd
  Set pNumberOfFiles = $Get(pQuantity,1)
  Set args=4
  Set args(1) = oProduct.RunParam1
  Set args(2) = oProduct.RunParam2
  Set args(3) = oProduct.RunParam3
  Set args(4) = oProduct.RunParam4
  For ii = 1:1:args {
  If (args(ii) = "$Qty") Set args(ii) = pNumberOfFiles
  }
  Set tReturn = $ZF(-100,"/SHELL",pCmd,.args)
  Quit tSC
 

}

Hi Mark,

I have adapted the code for Production Monitor into a custom class User.ProductionMonitor. It can get host info (status OK or Error) and also Queues sizes. I also created ProductionManager.csp to display the info. I hope it helps you. Hopefully you will share what you do and maybe we both get a better solution!

Please see code here: oliverwilms/production-monitor (github.com)

By default, only clients local to the Web Gateway’s hosting computer are allowed access to the Web Gateway Management pages. The browser through which the management forms are accessed must be running on the same machine as the web server and Web Gateway. For example:

http://localhost:<port_no>/csp/bin/Systems/Module.cxw

You can add additional clients to the list of authorized administrators by adding the client IP addresses to the System_Manager parameter in the SYSTEM section in CSP.ini (in install-dir\CSP\bin). The System_Manager parameter represents a comma- or plus-separated list of clients (by IP address) who may access the Web Gateway Management pages. The directive shown below grants access to three remote clients in addition to the default local access.

[SYSTEM]
System_Manager=190.8.7.6, 190.8.7.5, 190.8.7.4

Hi Muhammad,

You need to have a Message Bank Operation to send messages to the Message Bank and you need a Message Bank Production with a TCP Service to receive the messages.

I have written an article about my experience with Message Bank and I have a GitHub repo with Message Bank code:

IRIS Interoperability Message Bank | InterSystems Developer Community | AWS
 

Hello Jack,

I have done this previously in this class:

Class User.OperationSQL Extends Ens.BusinessOperation

{

Parameter ADAPTER = "EnsLib.SQL.OutboundAdapter";

Property Adapter As EnsLib.SQL.OutboundAdapter;

...

I have this code to begin transaction:

set tSC = ..Adapter.SetAutoCommit(0)

I have this code to commit transaction:

set tSC = ..Adapter.Commit()

In case of rollback I use this code:

Set rollbackSt = ..Adapter.Rollback()

Hello Paul,

I like to work on this problem. In preparation, I found a zen page in Samples namespace and added a file upload control. I define a CSP page to go to on submit. How do I attach a file to a CSP page? Then you want to manipulate the file when received by CSP page. Does the user see the attached file on the CSP page?  Our team has a CSP page that receives an incoming file and then it is passed along to a business service in HealthConnect production. Where do you want the modified file to go?