例如:使用流程管理器设置要使用的工作流

流程管理器表单中设置工作流任务的人员添加一个任务类型设为开始工作流的任务,指定此任务相关的信息,然后在事件名称字段中选择工作流事件。事件名称字段列出 SyteLine 中可用的所有非框架与非核心事件。用户必须创建将在此处列出的工作流事件。

当被指定此工作流任务的人员在流程管理器中打开此任务时,此事件的名称显示在事件名称字段中。此人单击启动事件按钮开始此工作流。

初始化数据库中提供 HR_NewHireAnnouncement 事件及其事件处理程序,以及一些事件操作和一个示例存储过程,就像在流程管理器中修改并测试的示例工作流一样。此示例工作流向所有员工提供新员工姓名和职位详情的通知。如果要在系统中测试,必须按照此处所述编辑此示例。此示例显示如何通过形成表单脚本传递此事件的参数。此通用存储的程序触发任何给定的定制事件。

事件定义

此示例 HR_NewHireAnnouncement 事件有一个处理程序和三个事件操作:

  • Action Type "Set Attributes" SET(EVENTTITLE=E(EventTitle)):此事件操作将处理任务 RowPointer 写入此事件进行对照参考。
  • 操作类型“通知”具有这些参数:
    • 至:事件全局常量 "HRNewHireAnnouncementRecipients"
      注意:必须为此事件全局常量定义一系列关联的用户。
    • 主题:可转换字符串 "Welcoming new Employee <empname>"
    • 正文:可转换字符串 "I am very pleased to announce that <empname> will be joining us as <empposition> from today."

    此事件操作通知与新员工相关的事件全局常量关联的用户。EmpName 和 EmpPosition 是此事件的输入参数。此信息来自此工作流发起的流程。

  • 操作类型:“完成”

如果您要编写自己的事件,则必须使用每一个和第三个事件操作,根据您的要求在中间编写自己的事件操作。

示例 HR_NewHireAnnouncement 事件以不丢状态交付。必须在工作流事件处理程序激活表单上启动它才能使用。在通知用户字段中,指定应接收新员工公告通知的适当用户。

表单脚本:

  • 对于必须由流程管理器支持的所有定制事件,必须识别所有输入参数。(HR_NewHireAnnouncement 事件示例需要两个输入参数:EmpName 和 EmpPosition)。
  • 如果事件使用输入参数,确定这些输入参数是否从表单页组件、属性或变量读取。如果不是,在表单上读取这些值。指定这些输入参数。(在此示例中,可从表单组件同时读取两个输入参数的数据。)

    如此示例所示,指定输入参数:

    
    If ThisForm.Components("MyTasksFormPageEventNameEdit").Text = "HR_NewHireAnnouncement" Then
              ThisForm.Variables("ParmName1").Value = "EmpName"
              ThisForm.Variables("ParmValue1").Value = ThisForm.Components("MyTasksFormPageEmpName1Edit").Text
              ThisForm.Variables("ParmName2").Value = "EmpPosition"
              ThisForm.Variables("ParmValue2").Value = ThisForm.Components("MyTasksFormPageJobTitleEdit").Text
    End If
    注意: 如果从流程管理器执行附加定制人力资源事件,在流程管理器表单脚本中添加自己的代码块,为您的定制事件指定输入参数。我们提供此示例代码作为您可以使用的构建框架。
  • 运行事件名称在表单可用的存储过程,以及存储过程支持的所有名称/值对。

存储过程

我们会提供具有以下参数的通用存储过程GenericNotifyEventGlobalCsSp

  • @EventName
  • @ProcessTaskRowPointer
  • @EventStateRowPointer OUTPUT
  • @Infobar OUTPUT
  • @ParmName1
  • @ParmValue1
  • @ParmName2
  • @ParmValue2
  • €¦参数名称和值 3 至 19 ...
  • @ParmName20
  • @ParmValue20

此存储过程执行以下步骤:

  • 初始化 @SessionId、@EventTrxId、@EventParmId
  • 将 @ProcessTaskRowPointer 作为输入参数传递到事件,这存储在“事件标题”中
  • 通过传递 @EventName、@SessionId、@EventTrxId 和 @EventParmId 执行 FireEventSp
  • 等待延迟 '00:00:05'
  • 阅读事件状态 RowPointer,返回此表单。
注意: 取决于处理缺省值表单上的“保留成功事件状态”的设置,如果此事件执行成功,可能不会创建 EvenState 记录。在此情况下,EventStateRowPointer 为 NULL,这不是问题,因为您只想捕捉所有失败的事件。

根据指定更新此示例代码时,且在流程管理器表单中单击启动事件按钮,创建的事件状态记录的 RowPointer 存储在 process_mgr_process_task.EventStateRowPointer 中。成功消息显示为“事件已启动。”