Artículo
Kurro Lopez · Ago 4 Lectura de 4 min

Añadir un business item en tu producción por código

Hola comunidad,

Esto es otro artículo de como realizar acciones que puedes hacer desde el porta de gestión pero via código.

Hoy.... Añadir un business item en tu producción por código.

Introducción

Si quieres añadir un nuevo business item (business service, business process o business operation), sueles hacerlo desde la configuración de la producción.

De la misma forma, si no tienes acceso al este portal, puedes añadir tus business item en la producción por código.

AddBusinessItem

/// Add a item into the production
/// <ul>
/// <li><var>pProduction</var> Name of the production.</li>
/// <li><var>pName</var> Set the name of the item. This value is mandatory.</li>
/// <li><var>pClassName</var> Set the classname of the item. This value is mandatory.</li>
/// <li><var>pCategory</var> Set the name of the category into the production.</li>
/// <li><var>pEnable</var> Set if the item is enabled.</li>
/// <li><var>pLogTraceEvents</var> Set event traces.</li>
/// <li><var>pPoolSize</var> Pool size.</li>
/// <li><var>pComment</var> Comment.</li>
/// </ul>
/// <example>Do myClass.AddItem("myPath.MyProduction", Item1", "myPath.MyClass", "Internal")</example>
ClassMethod AddBusinessItem(pProduction As %String, pName As %String, pClassName As %String, pCategory As %String = "", pEnabled As %Boolean = 1, pLogTraceEvents As %Boolean = 1, pPoolSize As %Integer = 1, pComment As %String = "") As %Status
{
    Set ret = $$$OK
    Try {
        // Check the mandatories values
        If ((pName '="") && (pClassName '=""))
        {
            If '##class(Ens.Config.Item).NameExists(pProduction,pName,.idItem)
            {
                Set produccion = ##class(Ens.Config.Production).%OpenId(pProduction)
                Write !,"Installing "_pName
                Set objItem = ##class(Ens.Config.Item).%New()
                Set objItem.Name = pName
                Set objItem.ClassName = pClassName
                Set objItem.Enabled = pEnabled
                Set objItem.LogTraceEvents = pLogTraceEvents
                Set objItem.Category = pCategory
                Set objItem.PoolSize = pPoolSize
                Set objItem.Comment = pComment

                Do produccion.Items.Insert(objItem)
                Set st = produccion.%Save()
                Kill objItem
                Do ##class(Ens.Director).RestartProduction(0,1)
                Write !,"Item "_pName_" installed."
            }
            Else
            {
                Write !,"Item "_pName_" already exists."
            }

        }
        Else
        {
            If (pName = "") set attrib = "pName"
            If (pClassName ="") set attrib = "pClassName"

            $$$ThrowOnError($System.Status.Error(406,attrib))
        }
    }
    Catch ex {
        Set ret = ex.AsStatus()
        Write !,"Error #",$System.Status.GetErrorCodes(ret),!
        Write !,$System.Status.GetOneStatusText(ret,1),!
    }

    Quit ret
}

Si quieres añadir un business service, tu clase debe de heredar desde Ens.BusinessService (como siempre)

RemoveBusinessItem

/// Remove a business item from a production
/// <ul>
/// <li><var>pProduction</var> Name of the production.</li>
/// <li><var>pName</var> Name of the business item to remove. This value is mandatory.</li>
/// </ul>
/// <example>Do myClass.RemoveItem("Item1")</example>
ClassMethod RemoveBusinessItem(pProduction As %String, pName As %String) As %Status
{
    Set ret = $$$OK

    Try {

        // Validate mandatory values
        If (pName '="")
        {
            If ##class(Ens.Config.Item).NameExists(pProduction,pName,.idItem)
            {
                Set produccion = ##class(Ens.Config.Production).%OpenId(pProduction)
                Write !,"Removing "_pName
                Set objItem = produccion.FindItemByConfigName(pName)
                Do produccion.RemoveItem(objItem)
                Set st = produccion.%Save()
                Kill objItem
                Do ##class(Ens.Director).RestartProduction(0,1)
                Write !,"Item "_pName_" removed"
            }
            Else
            {
                Write !,"Item "_pName_" not found."
            }
        }
        Else
        {
            If (pName = "") set attrib = "pName"

            $$$ThrowOnError($System.Status.Error(406,attrib))
        }
    }
    Catch ex {
        Set ret = ex.AsStatus()
        Write !,"Error #",$System.Status.GetErrorCodes(ret),!
        Write !,$System.Status.GetOneStatusText(ret,1),!
    }

    Quit ret
}

Después de eliminar el item, reiniciará automáticamente la producción para refrescar el contenido.

Si añades un item, puedes configurar sus parámetros usando la configuración por defecto, pero eso será otro artículo ;)

 

Saludos cordiales,
Kurro Lopez

10
1 0 0 35
Log in or sign up to continue