UOF2 客製教學 客製表單trigger (還在寫) | 一等一科技 DLL

by | 2 月 24, 2025 | 一等一UOF系統, 程式 | 0 comments

Views: 17

客製說明

我理解的一等一的客製大概有幾個類型

  1. EIP
    • 自製WebForm的頁面
    • SSO到其他系統
    • 提供API給外部系統呼叫
    • 外部直接塞資料到EIP DB中 (如果API沒有的話直接塞)
  2. BPM
    • 外部系統起單
      • DB起單
      • WebService起單
    • 自製表單欄位(使用者控制項)
    • 表單送出後事件進行客製
      • DLL(Trigger)
        • 取得填寫資料傳到其他系統
        • 特殊計算+回寫資料
      • WebService(驗證)
        • 驗證表單
  3. 自製排程(Task)

客製起手式建立空白方案

表單送出後執行自訂程式

using Dapper;
using Ede.Uof.EIP.Organization.Util;
using Ede.Uof.Utility.Data;
using Ede.Uof.WKF.ExternalUtility;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.IO;
using System.Reflection;
using System.Xml;
using Ede.Uof.WKF.Engine;

public class 類別名稱 : ICallbackTriggerPlugin, ICallbackTriggerValidator
{
  public 類別名稱()
  {
    //Ede.Uof.Utility.Data.DatabaseHelper
    _connectionString = new DatabaseHelper().Command.Connection.ConnectionString;
  }		
  /// <summary>
  /// 資料庫連線字串
  /// </summary>
  private readonly string _connectionString = string.Empty;

  public void Finally()
  {
    //throw new NotImplementedException();
  }
  /// <summary>
  /// 表單新增/變更/更新都會更新這個
  /// </summary>
  /// <param name="applyTask">表單變更</param>
  /// <returns></returns>
  public string GetFormResult(ApplyTask applyTask)
  {
      string DOC_NBR = applyTask.FormNumber;
      //做某些事情 例如抓表單的XML 然後更新到自己的資料表 作為統計使用
      return "";
  }
  public void OnError(Exception errorException)
  {
    //var message = errorException.Message;
    //File.WriteAllText($"D:\\UOF_DEBUG\\{_docNo}{DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss")}.log", message);
  }

		

    /// <summary>
    /// 結案復原
    /// </summary>
    /// <param name="applyTask"></param>
    /// <returns></returns>    
    public string CheckCallTrigger(ApplyTask applyTask)
    {
      string DOC_NBR = applyTask.FormNumber;
      Remove(DOC_NBR);//從結案資料庫刪除
      return "";
    }
}

我常用的Function

/// <summary>
/// 使用task_id抓對應的表單XML,用於表單異動時
/// </summary>
/// <param name="task_id">task id</param>
/// <returns></returns>
public static XmlDocument GetFormDoc(string taskId)
{
  const string sql = @"
  SELECT TOP 1 [CURRENT_DOC] FROM TB_WKF_TASK WHERE TASK_ID = @TASK_ID";

  using (var connection = new SqlConnection(connectionString))
  {
    string doc = connection.ExecuteScalar<string>(sql, new { TASK_ID = taskId });
    XmlDocument docXml = new XmlDocument();
    docXml.LoadXml(doc);
    return docXml;
  }
}

0 Comments

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *