start_agent_info
AgentName = "AU_MAILCAMP_MASS_AGENT"
AgentDescr = "Massive Mail Campaign"
PR_FNAME = "AU_MAILCAMP_MASS_E.FM"
PR_TNAME = "AU_MAILCAMP_MASS"
AgentLanguage = ""
__timer_interval = {....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 "Define Participant Contacts"
start_bpm_subactivity "Campaign Form"
rec = __params[1]
expr = strcat
(rec
,"=AU_MAILCAMP_MASS"
)
call OpenFormTop
("ptEdit"
,"
AU_MAILCAMP_MASS_E.FM"
,"WORK.AU_MAILCAMP_MASS"
,1
,expr
)
end_bpm_subactivity
start_bpm_subactivity "Define Participants"
call OpenFormTop
("ptBrowse"
,"
AU_SELLCONTACT_TO_MAIL_B.FM"
,"QRY.DATA"
)
end_bpm_subactivity
start_bpm_validation
result = 1
ag = agent_askexpert
("AU_MAIlCAMP_MASS_AGENT"
,"CREATE"
,__params[1]
)
end_bpm_validation
end_bpm_activity
start_bpm_activity "Inspect Drafts"
start_bpm_subactivity "Campaign Form"
rec = __params[1]
expr = strcat
(rec
,"=AU_MAILCAMP_MASS"
)
call OpenFormTop
("ptEdit"
,"
AU_MAILCAMP_MASS_E.FM"
,"WORK.AU_MAILCAMP_MASS"
,1
,expr
)
end_bpm_subactivity
start_bpm_subactivity "Inspect Drafts"
call OpenFormTop
("ptBrowse"
,"
AU_MAIL_DRAFT_B.FM"
,"QRY.DATA"
)
end_bpm_subactivity
start_bpm_validation
result = 1
ag = agent_askexpert
("AU_MAIlCAMP_MASS_AGENT"
,"STATISTICS"
,__params[1]
)
end_bpm_validation
end_bpm_activity
start_bpm_activity "Statistic Results"
start_bpm_subactivity "Process Form"
rec = __params[1]
expr = strcat
(rec
,"=AU_MAILCAMP_MASS"
)
'
call OnOpenForm_DisableAllFields
()
'
call OnOpenForm_EnableField
("SEND_MAIL_COUNT"
)
'
call OnOpenForm_EnableField
("BOUNCED_MAIL_COUNT"
)
'
call OnOpenForm_EnableField
("EFFECT_MAIL_COUNT"
)
'
call OnOpenForm_EnableField
("OPEN_COUNT"
)
'
call OnOpenForm_EnableField
("SESSION_COUNT"
)
call OpenFormTop
("ptEdit"
,"
AU_MAILCAMP_MASS_E.FM"
,"WORK.AU_MAILCAMP_MASS"
,1
,expr
)
end_bpm_subactivity
end_bpm_activity
start_action
mode = __params[1]
rec_id = __params[2]
{...............................................define campaign variables and contact participants..}
if (mode = "START"
) then
str = SelectFrom
("
SELECT SUBJECT
, AU_USER
, AU_POS
FROM AU_MAILCAMP_MASS
WHERE (AU_MAILCAMP_MASS="
,rec_id
,"
)"
)
comm = GetSQLSelectItem
(str
,1
)
uname = GetSQLSelectItem
(str
,2
)
rname = GetSQLSelectItem
(str
,3
)
uname = LookUpId
("AU_USER"
,uname
,"UNAME"
)
rname = LookUpId
("AU_POS"
,rname
,"POS_D"
)
__au_process = bpm_createprocess
("AU_MAILCAMP_MASS_AGENT"
,""
,user
,1
) {expert_activ_flag = 1}
parent_step = GetThrVal
("__parent_step"
)
call UpdateField
("AU_PROCESS"
,__au_process
,"COMM"
,comm
,"USER_OWNER"
,uname
,"AU_STEP_PARENT"
,parent_step
,""
)
call UpdateField
("AU_MAILCAMP_MASS"
,rec_id
,"AU_PROCESS"
,__au_process
,""
)
call bpm_setprocedureowner
(uname
) {.....set the procedure owner}
call bpm_setstepcomment
(comm
)
call bpm_assign_job
( "Define Participant Contacts"
, uname
, rname
, 0
, rec_id
)
return {....fsm must never reach
end_action }
endif
{...............................................create the mails}
if (mode = "CREATE"
) then
{.............get campaign variables..........}
str = SelectFrom
("
SELECT SMAIL
, AU_POS
, AU_USER
, MSUBJECT
, COLL_TYPE
, HTML_FILE
, CSOURCE
, CMEDIUM
, CCAMPAIGN
, NO_SUBPROCESSES_FLAG
, AU_PROCESS
FROM AU_MAILCAMP_MASS
WHERE (AU_MAILCAMP_MASS="
,rec_id
,"
)"
)
smail = GetSQLSelectItem
(str
,1
)
pos_id = GetSQLSelectItem
(str
,2
)
user_id = GetSQLSelectItem
(str
,3
)
msubj = GetSQLSelectItem
(str
,4
)
coll_type = GetSQLSelectItem
(str
,5
)
html_file = GetSQLSelectItem
(str
,6
)
csource = GetSQLSelectItem
(str
,7
)
cmedium = GetSQLSelectItem
(str
,8
)
ccampaign = GetSQLSelectItem
(str
,9
)
no_subpr = GetSQLSelectItem
(str
,10
)
no_subpr = val
(no_subpr
)
__au_process = GetSQLSelectItem
(str
,11
)
uname = LookUpId
("AU_USER"
,user_id
,"UNAME"
)
rname = LookUpId
("AU_POS"
,pos_id
,"POS_D"
)
start_sql "*" "KOSMOS"
SELECT AU_MAILADDRESS.MADDRESS
, AU_CONTACT.DISP_NAME
, AU_CONTACT_MAILADDR.AU_BUSINESS
,
AU_CONTACT_MAILADDR.AU_CONTACT
, AU_CONTACT_MAILADDR.SEND_MAIL_FLAG
,
AU_CONTACT_MAILADDR.AU_CONTACT_MAILADDR
FROM AU_MAILADDRESS INNER
JOIN (AU_CONTACT INNER
JOIN AU_CONTACT_MAILADDR
ON AU_CONTACT.AU_CONTACT = AU_CONTACT_MAILADDR.AU_CONTACT
)
ON AU_MAILADDRESS.AU_MAILADDRESS = AU_CONTACT_MAILADDR.AU_MAILADDRESS
WHERE (SEND_MAIL_FLAG = '1'
)
end_sql
q0 = QueryByName
()
call TExecute
(q0
)
count = TRecordCount
(q0
)
call TFirst
(q0
)
for i = 1
to count
cont_id = TGetFld
(q0
,"AU_CONTACT"
)
bus_id = TGetFld
(q0
,"AU_BUSINESS"
)
subj = TGetFld
(q0
,"DISP_NAME"
)
cmail = TGetFld
(q0
,"MADDRESS"
)
s
end_id = TGetFld
(q0
,"AU_CONTACT_MAILADDR"
)
{............................create AU_MAILCAMP record...}
start_sql "*" "KOSMOS"
INSERT INTO AU_MAILCAMP
end_sql
q1 = QueryByName
()
call TSetFld
(q1
,"AU_MAILCAMP_MASS"
,"Float"
,rec_id
)
call TSetFld
(q1
,"AU_CONTACT"
,"Float"
,cont_id
)
call TSetFld
(q1
,"AU_BUSINESS"
,"Float"
,bus_id
)
call TSetFld
(q1
,"AU_POS"
,"Float"
,pos_id
)
call TSetFld
(q1
,"SUBJECT"
,"String"
,subj
)
call TSetFld
(q1
,"SMAIL"
,"String"
,smail
)
call TSetFld
(q1
,"CMAIL"
,"String"
,cmail
)
call TSetFld
(q1
,"MSUBJECT"
,"String"
,msubj
)
call TSetFld
(q1
,"HTML_FILE"
,"String"
,html_file
)
call TSetFld
(q1
,"COLL_TYPE"
,"String"
,coll_type
)
call TSetFld
(q1
,"DRAFT_FLAG"
,"String"
,"1"
)
call TSetFld
(q1
,"CSOURCE"
,"String"
,csource
)
call TSetFld
(q1
,"CMEDIUM"
,"String"
,cmedium
)
call TSetFld
(q1
,"CCAMPAIGN"
,"String"
,ccampaign
)
call TExecute
(q1
)
call FreeEmbSQL
(q1
)
id = SelectLastId
("AU_MAILCAMP"
)
if (no_subpr = 1
) then
call mail_createands
end ( "immediately"
, "mass"
, rec_id
, cmail
, cont_id
, bus_id
)
elseif (no_subpr = 0
) then
{..............start mail campaign process...
(do not resent email
).}
res
end_flag = 0
ag = agent_askexpert
("AU_MAIL_CAMPAIN_FSM_AGENT"
,"SEND_MAIL_AND_WAIT"
,id
,0
,res
end_flag
)
call agent_free
(ag
)
endif
{........blank again "SEND_MAIL_FLAG"...........}
call UpdateField
( "AU_CONTACT_MAILADDR"
, s
end_id
, "SEND_MAIL_FLAG"
, "0"
, ""
)
call TNext
(q0
)
next
call FreeEmbSQL
(q0
)
{......inspect drafts............}
call bpm_setstepcomment
(comm
)
call bpm_assign_job
( "Inspect Drafts"
, uname
, rname
, 0
, rec_id
)
return {....fsm must never reach
end_action }
endif
if (mode = "STATISTICS"
) then
str = SelectFrom
("
SELECT SUBJECT
, AU_USER
, AU_POS
, AU_PROCESS
FROM AU_MAILCAMP_MASS
WHERE (AU_MAILCAMP_MASS="
,rec_id
,"
)"
)
comm = GetSQLSelectItem
(str
,1
)
uname = GetSQLSelectItem
(str
,2
)
rname = GetSQLSelectItem
(str
,3
)
__au_process = GetSQLSelectItem
(str
,4
)
uname = LookUpId
("AU_USER"
,uname
,"UNAME"
)
rname = LookUpId
("AU_POS"
,rname
,"POS_D"
)
call bpm_setstepcomment
(comm
)
call bpm_assign_job
( "Statistic Results"
, uname
, rname
, 0
, rec_id
)
return {....fsm must never reach
end_action }
endif
end_action