start_agent_info
AgentName = "AU_SMALLTASK"
AgentDescr = "Small Task Assignment"
AgentLanguage = ""
__timer_interval = 0 {....define
(in seconds
) the timer interval
for the wake up}
__delete_on_termination = 0 {....1=the agent frees itself
when terminates its task}
end_agent_info
start_bpm_activity "Task"
start_bpm_subactivity "Task"
rec = __params[1]
fin = SelectFrom
("
SELECT FINISHED
FROM AU_STEP
WHERE (AU_STEP="
,rec
,"
)"
)
if (fin = 1
) then
call OnOpenForm_DisableAllFields
()
else
call OnOpenForm_DisableField
("FINISHED"
)
endif
expr = strcat
(rec
,"=AU_STEP"
)
call OpenFormTop
("ptEdit"
,"
AU_NEWTASK_E.FM"
,"WORK.AU_STEP"
,1
,expr
)
end_bpm_subactivity
start_bpm_subactivity "New Child Task"
rec = __params[1]
fin = SelectFrom
("
SELECT FINISHED
FROM AU_STEP
WHERE (AU_STEP="
,rec
,"
)"
)
fin = val
(fin
)
if (fin = 0
) then
call OpenFormTop
("ptApp
end"
,"
AU_NEWTASK_E.FM"
,"WORK.AU_STEP"
,1
,"?=AU_STEP"
,"NEW_CHILD"
,rec
)
endif
end_bpm_subactivity
start_bpm_subactivity "New Parallel Task"
rec = __params[1]
fin = SelectFrom
("
SELECT FINISHED
FROM AU_STEP
WHERE (AU_STEP="
,rec
,"
)"
)
fin = val
(fin
)
if (fin = 0
) then
call OpenFormTop
("ptApp
end"
,"
AU_NEWTASK_E.FM"
,"WORK.AU_STEP"
,1
,"?=AU_STEP"
,"NEW_PARALLEL"
,rec
)
endif
end_bpm_subactivity
start_bpm_validation
flag = message_yes_no
("Does this creates a new Task?"
)
if (flag = 1
) then
user = GetUserName
()
call bpm_startfsm
( "AU_SMALLTASK"
, "NEW_NEXT"
, __params[1]
, user
)
endif
result = 1
end_bpm_validation
end_bpm_activity
start_action
mode = __params[1]
if (mode = "START"
) then
rec_id = __params[2]
user = __params[3]
str = SelectFrom
("
SELECT COMM
, UNAME
, RNAME
, AU_BUSINESS
FROM AU_STEP
WHERE (AU_STEP="
,rec_id
,"
)"
)
sep = Escape
(1
,-1
)
comm = GetStrArgumentNo
(str
,sep
,1
)
uname = GetStrArgumentNo
(str
,sep
,2
)
rname = GetStrArgumentNo
(str
,sep
,3
)
bus_id = GetStrArgumentNo
(str
,sep
,4
)
__au_process = bpm_createprocess
("AU_SMALLTASK"
,""
,user
,1
) {expert_activ_flag = 1}
parent_step = GetThrVal
("__parent_step"
)
call UpdateField
("AU_PROCESS"
,__au_process
,"COMM"
,comm
,"USER_OWNER"
,user
,"AU_STEP_PARENT"
,parent_step
,""
)
if (bus_id > 0
) then
call bpm_setprocessbusiness
(bus_id
)
endif
call bpm_setprocedureowner
(user
) {.....set the procedure owner}
call bpm_setstepcomment
(comm
)
call bpm_setstepid
(rec_id
)
call bpm_assign_job
( "Task"
,uname
,rname
, 0
, rec_id
)
endif
{....................................NEW_PARALLEL..create new Activity parallel
to current
(before current closes
)}
if (mode = "NEW_PARALLEL"
) then
rec_id = __params[2]
user = __params[3]
rec0_id = __params[4]
sep = Escape
(1
,-1
)
str = SelectFrom
("
SELECT AU_PROCESS
, AU_STEP_PARENT
FROM AU_STEP
WHERE (AU_STEP="
,rec0_id
,"
)"
)
__au_process = GetStrArgumentNo
(str
,sep
,1
)
parent_id = GetStrArgumentNo
(str
,sep
,2
)
str = SelectFrom
("
SELECT COMM
, UNAME
, RNAME
FROM AU_STEP
WHERE (AU_STEP="
,rec_id
,"
)"
)
comm = GetStrArgumentNo
(str
,sep
,1
)
uname = GetStrArgumentNo
(str
,sep
,2
)
rname = GetStrArgumentNo
(str
,sep
,3
)
call UpdateField
("AU_STEP"
,rec_id
,"AU_PROCESS"
,__au_process
,""
)
call UpdateField
("AU_PROCESS"
,__au_process
,"COMM"
,comm
,""
)
call bpm_setstepparent
(parent_id
)
call bpm_setstepcomment
(comm
)
call bpm_setstepid
(rec_id
)
call bpm_assign_job
( "Task"
,uname
,rname
, 0
, rec_id
)
endif
{....................................NEW_NEXT......create new Activity after the current closes}
if (mode = "NEW_NEXT"
) then
rec0_id = __params[2]
user = __params[3]
sep = Escape
(1
,-1
)
str = SelectFrom
("
SELECT AU_PROCESS
, AU_STEP_PARENT
FROM AU_STEP
WHERE (AU_STEP="
,rec0_id
,"
)"
)
__au_process = GetStrArgumentNo
(str
,sep
,1
)
parent_id = GetStrArgumentNo
(str
,sep
,2
)
str = SelectFrom
("
SELECT COMM
, UNAME
, RNAME
, AU_BUSINESS
, AU_PROCESS
FROM AU_STEP
WHERE (AU_STEP="
,rec0_id
,"
)"
)
sep = Escape
(1
,-1
)
comm = GetStrArgumentNo
(str
,sep
,1
)
uname = GetStrArgumentNo
(str
,sep
,2
)
rname = GetStrArgumentNo
(str
,sep
,3
)
bus_id = GetStrArgumentNo
(str
,sep
,4
)
__au_process = GetStrArgumentNo
(str
,sep
,5
)
comm = strcat
("NEXT - "
,comm
)
start_sql "*" "KOSMOS"
INSERT INTO AU_STEP
end_sql
q = QueryByName
()
call TSetFld
(q
,"COMM"
,"String"
,comm
)
call TSetFld
(q
,"UNAME"
,"String"
,uname
)
call TSetFld
(q
,"RNAME"
,"String"
,rname
)
call TSetFld
(q
,"FINISHED"
,"String"
,"0"
)
call TSetFld
(q
,"AU_BUSINESS"
,"Float"
,bus_id
)
call TSetFld
(q
,"AU_PROCESS"
,"Float"
,__au_process
)
call TExecute
(q
)
call FreeEmbSQL
(q
)
rec_id = SelectIdentity
()
call bpm_setstepcomment
(comm
)
call bpm_setstepparent
(parent_id
)
call bpm_setstepid
(rec_id
)
call bpm_openatonce
()
call bpm_assign_job
( "Task"
,uname
,rname
, 0
, rec_id
)
endif
{........................................create new child Activity}
if (mode = "NEW_CHILD"
) then
rec_id = __params[2]
user = __params[3]
rec0_id = __params[4]
__au_process = SelectFrom
("
SELECT AU_PROCESS
FROM AU_STEP
WHERE (AU_STEP="
,rec0_id
,"
)"
)
str = SelectFrom
("
SELECT COMM
, UNAME
, RNAME
FROM AU_STEP
WHERE (AU_STEP="
,rec_id
,"
)"
)
sep = Escape
(1
,-1
)
comm = GetStrArgumentNo
(str
,sep
,1
)
uname = GetStrArgumentNo
(str
,sep
,2
)
rname = GetStrArgumentNo
(str
,sep
,3
)
call UpdateField
("AU_STEP"
,rec_id
,"AU_PROCESS"
,__au_process
,""
)
call bpm_setstepcomment
(comm
)
call bpm_setstepparent
(rec0_id
)
call bpm_setstepid
(rec_id
)
call bpm_assign_job
( "Task"
,uname
,rname
, 0
, rec_id
)
endif
return {....fsm must never reach
end_action }
end_action