egain-config
Version:
JavaScript library for interfacing with eGain back-end systems.
294 lines (267 loc) • 9.55 kB
JavaScript
module.exports = {
find () {
// find a workflow
// inputs:
// @workflow_type = 1
// @department_id bigint - the department ID
return `-- the ECE department ID
DECLARE int
-- get department ID by name
SELECT = [department_id]
FROM [egpl_department]
WHERE [delete_flag] = 'n'
AND [department_name] =
SELECT workflow_id,
who_modified,
workflow_name,
department_id,
who_created,
workflow_description,
workflow_type,
ruleset_xml,
workflow_active,
rule_xml,
when_created,
workflow_sub_type,
delete_flag,
when_modified,
workflow_xml
FROM egpl_workflow_rule_xml
WHERE department_id =
AND workflow_name =
AND delete_flag = 'N'`
},
list () {
// list all workflows
// inputs:
// @workflow_type = 1
// @department_id bigint - the department ID
return `SELECT workflow_id,
who_modified,
workflow_name,
department_id,
who_created,
workflow_description,
workflow_type,
ruleset_xml,
workflow_active,
rule_xml,
when_created,
workflow_sub_type,
delete_flag,
when_modified,
workflow_xml
FROM egpl_workflow_rule_xml
WHERE workflow_type =
AND department_id =
AND delete_flag = 'N'
ORDER BY workflow_name`
},
create () {
// creates an email queue that just receives email from an alias and sends
// it to an email queue
//
// input
// the ECE / ICM department name
// @department_name nvarchar(32) = '1000'
// desired workflow name
// @workflow_name nvarchar(64) = 'email'
// email routing queue name
// @queue_name nvarchar(64) = 'email'
// email alias name
// @alias_name nvarchar(64) = 'email'
// workflow description
// @description nvarchar(1024) = 'email workflow'
return `BEGIN TRANSACTION [Tran1]
BEGIN TRY
-- variables used later
-- the ECE department ID
DECLARE int
-- email alias ID
DECLARE int
-- email queue ID
DECLARE int
-- get department ID by name
SELECT = [department_id]
FROM [egpl_department]
WHERE [delete_flag] = 'n'
AND [department_name] =
-- get routing queue ID by name
SELECT = queue_id
FROM egpl_routing_queue
WHERE QUEUE_NAME =
AND DEPARTMENT_ID =
-- get alias ID by email_address
SELECT = alias_id
FROM egml_mailhost
WHERE alias_name =
AND department_id =
-- generated values from get_next_seq
-- email workflow ID
DECLARE int
-- email workflow_item 1 ID
DECLARE int
-- email workflow_item 2 ID
DECLARE int
-- rule 1 ID
DECLARE int
-- rule 2 ID
DECLARE int
-- ruleset 1 ID
DECLARE int
-- ruleset 2 ID
DECLARE int
-- variables used by get_next_seq stored function
DECLARE int,
numeric(19, 0),
int,
nvarchar(1024)
-- get a new sequence number for workflow ID
EXEC = [dbo].[egpl_f_get_next_seq]
= 'EGPL_WORKFLOW',
= OUTPUT,
= OUTPUT,
= OUTPUT
-- new sequence is the new workflow ID
SET =
-- get a new sequence number for workflow element in XML
EXEC = [dbo].[egpl_f_get_next_seq]
= 'EGPL_WORKFLOW_ITEM',
= OUTPUT,
= OUTPUT,
= OUTPUT
-- new sequence is the new rule ID
SET =
-- get a new sequence number for workflow element in XML
EXEC = [dbo].[egpl_f_get_next_seq]
= 'EGPL_WORKFLOW_ITEM',
= OUTPUT,
= OUTPUT,
= OUTPUT
-- new sequence is the new rule ID
SET =
-- get a new sequence number for first rule
EXEC = [dbo].[egpl_f_get_next_seq]
= 'EGPL_RULE',
= OUTPUT,
= OUTPUT,
= OUTPUT
-- new sequence is the new rule ID
SET =
-- get a new sequence number for second rule
EXEC = [dbo].[egpl_f_get_next_seq]
= 'EGPL_RULE',
= OUTPUT,
= OUTPUT,
= OUTPUT
-- new sequence is the new rule ID
SET =
-- get a new sequence number for first ruleset
EXEC = [dbo].[egpl_f_get_next_seq]
= 'EGPL_RULE_SET',
= OUTPUT,
= OUTPUT,
= OUTPUT
-- new sequence is the new ruleset ID
SET =
-- get a new sequence number for second ruleset
EXEC = [dbo].[egpl_f_get_next_seq]
= 'EGPL_RULE_SET',
= OUTPUT,
= OUTPUT,
= OUTPUT
-- new sequence is the new ruleset ID
SET =
-- create workflow xml
INSERT INTO egpl_workflow_rule_xml (
workflow_id,
who_modified,
workflow_name,
department_id,
who_created,
workflow_description,
workflow_type,
ruleset_xml,
workflow_active,
rule_xml,
when_created,
workflow_sub_type,
delete_flag,
when_modified,
workflow_xml
) VALUES (
, -- workflow_id
1, -- who_modified
, -- workflow_name
, -- department_id
1, -- who_created
, -- workflow_description
1, -- workflow_type
N'<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE RuleSet>
<RuleSet Id="' + CAST(@rule_set_id_1 as varchar(10)) + N'" Type="0" Active="FALSE">
<RuleSetRule Id="' + CAST(@rule_id_1 as varchar(10)) + N'"/>
</RuleSet><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE RuleSet>
<RuleSet Id="' + CAST(@rule_set_id_2 as varchar(10)) + N'" Type="0" Active="FALSE">
<RuleSetRule Id="' + CAST(@rule_id_2 as varchar(10)) + N'"/>
</RuleSet>', -- ruleset_xml
1, -- workflow_active
N'<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Rule>
<Rule Id="' + CAST(@rule_id_1 as varchar(10)) + N'" Name="" Type="CONTINUE" Active="FALSE">
<Action Id="-1" Type="ROUTE" FieldId="1" FieldType="LONG" RValue="' + CAST(@workflow_item_id_2 as varchar(10)) + N'" RValueType="LITERAL" R1Value="" ActionOPType="-1"/>
</Rule><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Rule>
<Rule Id="' + CAST(@rule_id_2 as varchar(10)) + N'" Name="" Type="CONTINUE" Active="FALSE">
<Action Id="-1" Type="ROUTE" FieldId="2" FieldType="LONG" RValue="' + CAST(@queue_id as varchar(10)) + N'" RValueType="LITERAL" R1Value="" ActionOPType="-1"/>
</Rule> ', -- rule_xml
GETUTCDATE(), -- when_created
1, -- workflow_sub_type
N'N', -- delete_flag
GETUTCDATE(), -- when_modified
N'<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Workflow>
<Workflow Id="' + CAST(@workflow_id as varchar(10)) + N'" Name="email" Description="' + @description + N'" Type="INBOUND" SubType="EMAIL" Active="TRUE" StartingItemId="' + CAST(@workflow_item_id_1 as varchar(10)) + N'">
<WorkflowAssociation WorkflowAssocationId="-1" AssociationId="' + CAST(@alias_id as varchar(10)) + N'" AssociationType="1"/>
<Node XPos="50" YPos="50">
<Item Id="' + CAST(@workflow_item_id_1 as varchar(10)) + N'" Name="Start" Type="START" RuleSetId="' + CAST(@rule_set_id_1 as varchar(10)) + N'"/>
</Node>
<Node XPos="150" YPos="50">
<Item Id="' + CAST(@workflow_item_id_2 as varchar(10)) + N'" Name="email" Type="QUEUE" RuleSetId="' + CAST(@rule_set_id_2 as varchar(10)) + N'"/>
</Node>
<Edge Type="CONTINUE" SrcItemId="' + CAST(@workflow_item_id_1 as varchar(10)) + N'" SrcRegionId="0" DestItemId="' + CAST(@workflow_item_id_2 as varchar(10)) + N'" DestRegionId="0" RuleId="' + CAST(@rule_id_1 as varchar(10)) + N'"/>
</Workflow>' -- workflow_xml
)
-- lock alias to this workflow
INSERT INTO egpl_object_locking (
locked_object_id,
locked_object_type,
locking_object_id,
locking_object_type
) VALUES (
,
6, -- 6 = emailAlias object type
,
1057 -- 1057 = workflow object type
)
-- lock ICM queue to this workflow
INSERT INTO egpl_object_locking (
locked_object_id,
locked_object_type,
locking_object_id,
locking_object_type
) VALUES (
,
1056, -- 1056 = routingQueue object type
,
1057 -- 1057 = workflow object type
)
COMMIT TRANSACTION [Tran1]
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION [Tran1]
END CATCH
`
}
}