以下对已经实现的方法作以示例,供客户方技术人员进行二次开发。

  1. 本地程序

Argument List项输入参数名称,多个参数用逗号分隔,没有参数可以为空。Expression项输入本地要调用的类名及命名空间

本地的方法实现示例如下:

/// <summary>

    /// 订单提交服务类(对应订单流程中订单提交节点)

    /// </summary>

    public class OrderSubmitService : ExternalServiceBase, IExternalService

    {

        /// <summary>

        /// 业务逻辑前置调用方法

        /// </summary>

        public override void Execute()

        {

            //实现用户自己的业务逻辑

            var id = DelegateService.GetID();

            var amount = DelegateService.GetVariable("amount");

             DoSomethingElse(amount, 20);

        }

 

        /// <summary>

        /// 业务逻辑具体实现方法

        /// </summary>

        /// <param name="amount"></param>

        /// <param name="newAmount"></param>

        private void DoSomethingElse(string amount, int newAmount)

        {

            var intAmount = 0;

            int.TryParse(amount, out intAmount);

 

            if (intAmount < newAmount)

            {

                DelegateService.SetVariable("amount", newAmount.ToString());

            }

 

            //调用其它业务处理逻辑

            var session = DelegateService.GetSession();

             //实现其它数据库业务逻辑

            //.............................

        }

}

   在引擎流转执行过程中,当解析到节点上有调用外部事件的Action定义时,将会使用反射方法,查找到组件是否有OrderSubmitService类,并且是实现了ExtneralServiceBase和IExternalService 接口的服务类,才能被执行其中的Execute()方法,必须满足上述的查找基类继承和接口实现条件才能被反射执行,否则是不能被执行的。这样可以确保是执行到了明确定义的事件程序代码。

  1. WebApi

Http的请求方式,支持Get、Post、Put、Delete方式         

步骤1:节点属性上的事件定义

步骤2:流程变量定义

通过WorkflowService接口写入流程变量(WfProcessVariable),变量用来传递WebApi方法的参数,此处作为示例:

IMG_256

步骤3:被调用WebApi程序的接口方法实现示例

            上述示例中有两个参数:runner和role, 在WebApi的方法代码中,可以使用JSON格式数据作为接收,然后根据做序列化处理。

IMG_256


  1. CSharpLibrary

在节点绑定事件中,可以使用C#类库,如下图所示:


  1. 存储过程

存储过程是数据库定义的包含SQL脚本语法的程序过程(比如把上述的SQL脚本单独保存为存储过程),默认限定在同一个数据库实例中。