project BLF > include tFcStartInstance.i

Description

Start a new instance of a business component, from a technical component.


include parameters


&CLASSclass short name
&ERROR-STATEMENTAction to take when an error occurred.
&SESSIONID
&USER-DEFINED-CONTEXT


Internal usage


BLF
method Startup.StartDefaultComponents


include code

&IF "{&CLASS-REF}" = ""
&THEN
assign vi{&CLASS}Id = 0
       vi{&CLASS}OC = 0.

if not vlFcStateless
then do:
    &if defined(INS-PROCEDURE-{&CLASS})
    &then run value(lc({&INS-PROCEDURE-{&CLASS}}))
    &else run value(lc("ins/ins__{&CLASS}.p":U))
    &endif
        persistent set vh{&CLASS}Inst.
    run Mainblock in vh{&CLASS}Inst
       (input        {&SESSIONID},
        input        0, /*no subtransaction possible*/
        input        0,
        input        false,
        input        "{&USER-DEFINED-CONTEXT}",
        input-output vi{&CLASS}Id,
              output viFcIncludeReturn).
    if viFcIncludeReturn < 0
    then do:
        assign oiReturnStatus = viFcIncludeReturn.
        run StopInstance in vh{&CLASS}Inst
           (input "", input "", input "", input no,
            output viFcIncludeReturn).
        delete procedure vh{&CLASS}Inst.
        assign vh{&CLASS}Inst = ?.
        &IF "{&ERROR-STATEMENT}" = ""
        &THEN
        return ?.
        &ELSE
        {&ERROR-STATEMENT}
        &ENDIF
    end.
end.
&ELSE
assign vi{&CLASS-REF}Id = 0
       vi{&CLASS-REF}OC = 0.

if not vlFcStateless
then do:
    &if defined(INS-PROCEDURE-{&CLASS})
    &then run value(lc({&INS-PROCEDURE-{&CLASS}}))
    &else run value(lc("ins/ins__{&CLASS}.p":U))
    &endif
        persistent set vh{&CLASS-REF}Inst.
    run Mainblock in vh{&CLASS-REF}Inst
       (input        {&SESSIONID},
        input        0, /*no subtransaction possible*/
        input        0,
        input        false,
        input        "{&USER-DEFINED-CONTEXT}",
        input-output vi{&CLASS-REF}Id,
              output viFcIncludeReturn).
    if viFcIncludeReturn < 0
    then do:
        assign oiReturnStatus = viFcIncludeReturn.
        run StopInstance in vh{&CLASS-REF}Inst
           (input "", input "", input "", input no,
            output viFcIncludeReturn).
        delete procedure vh{&CLASS-REF}Inst.
        assign vh{&CLASS-REF}Inst = ?.
        &IF "{&ERROR-STATEMENT}" = ""
        &THEN
        return ?.
        &ELSE
        {&ERROR-STATEMENT}
        &ENDIF
    end.
end.
&ENDIF