Views: 17
客製說明
我理解的一等一的客製大概有幾個類型
- EIP
- 自製WebForm的頁面
- SSO到其他系統
- 提供API給外部系統呼叫
- 外部直接塞資料到EIP DB中 (如果API沒有的話直接塞)
- BPM
- 外部系統起單
- DB起單
- WebService起單
- 自製表單欄位(使用者控制項)
- 表單送出後事件進行客製
- DLL(Trigger)
- 取得填寫資料傳到其他系統
- 特殊計算+回寫資料
- WebService(驗證)
- 驗證表單
- DLL(Trigger)
- 外部系統起單
- 自製排程(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