Side Project Document
  • 如果沒能一次成功,那就叫它 1.0 版吧。
  • Stock Price for LINE Notify V1
    • 前言
    • 一、申請玉山富果 API
    • 二、申請 LINE Notify Token
    • 三、環境架設與資料表設定
    • 四、SSIS 設計
      • SSIS 流程圖
      • Move to History Table & Truncate Table
      • Foreach Loop to Get API
      • Lookup File - Chart
      • Lookup File - Quote
      • Join Table to Result Set
      • Post Result Set to LINE Notify
      • Delete Over 3 days Files
      • 事件處理常式
    • 五、安裝教學
  • Stock Price for LINE Notify V2
    • 前言
    • 一、軟體架構與流程圖
    • 二、環境架設與資料表設定
    • 三、Python 程式說明
      • 主程式:Local_Stock_Main.py
      • 取得個股基本資訊:Local_Stock_Meta.py
      • 取得個股交易資訊:Local_Stock_Quote.py
      • 將折線圖發送至 LINE Notify:Local_Stock_Line_Notify.py
      • 資料解密:Local_Encryption.py
      • 排程設定
  • Stock Price for LINE Notify V3
    • 前言
    • 一、軟體架構與流程圖
    • 二、環境架設與資料表設定
    • 三、Python 程式說明
      • Local_Stock_Main.py
      • Local_Stock_Meta.py
      • Local_Stock_Quote.py
      • Local_Stock_Line_Notify.py
      • Create_RSA_Key.py
      • Encrypt_Data.py
      • Decrypt_Data.py
      • 排程設定
      • 加碼:.py 打包成 .exe 執行檔
Powered by GitBook
On this page
  • 全封裝任一動作執行失敗
  • Get ErrorSource, ErrorCode, ErrorDesc, Datetime Insert Into ErrorLog
  • Send Error Msg to LINE Notify
  • Deserialize JSON & Insert Into Table 失敗
  • Foreach 迴圈容器
  • 檔案系統工作
  1. Stock Price for LINE Notify V1
  2. 四、SSIS 設計

事件處理常式

當封裝執行失敗時,啟動事件處理常式。

全封裝任一動作執行失敗

當全封裝任一動作執行失敗時,將錯誤訊息寫入資料庫,並啟動 LINE Notify 通知。

Get ErrorSource, ErrorCode, ErrorDesc, Datetime Insert Into ErrorLog

  • 目的:將錯誤來源、錯誤代號、錯誤詳細資以及發生時間訊寫入 ErrorLog Table 中。

  • ConnectType 屬性:OLE DB

  • Connection 屬性:Stock_API

  • SQLSourceType:直接輸入

  • 運算式

    • 屬性:SqlStatementSource

    • 運算式

"INSERT INTO ErrorLog VALUES ('" + @[System::SourceName]  +"', '" + (DT_WSTR, 50) @[System::ErrorCode] + "', '" + @[System::ErrorDescription] + "', GETDATE())"

Send Error Msg to LINE Notify

  • 目的:啟動 LINE Notify 通知

  • ReadOnlyVariables 屬性:System::ErrorCode,System::ErrorDescription,System::SourceName

  • Script

// ......

public void Main()
{
    // TODO: Add your code here

    using (var wc = new WebClient())
    {
        var bearer = $"[Your LINE Notify Token]";

        wc.Encoding = Encoding.UTF8;
        wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
        wc.Headers.Add("Authorization", $"Bearer {bearer}");

        var nv = new NameValueCollection();
        nv["message"] =   "【Error Msg】"
                        + "\nError Source:" + Dts.Variables["System::SourceName"].Value
                        + "\nError Code:" + Dts.Variables["System::ErrorCode"].Value
                        + "\nError Desc:" + Dts.Variables["System::ErrorDescription"].Value
                        + "\nDatetime:" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

        var bResult = wc.UploadValues($"https://notify-api.line.me/api/notify", nv);

        var res = Encoding.UTF8.GetString(bResult);
    }

    Dts.TaskResult = (int)ScriptResults.Success;
}

// ......

Deserialize JSON & Insert Into Table 失敗

Foreach 迴圈容器

  • Foreach 迴圈列舉值:Foreach 檔案列舉值

  • 資料夾:C:\Stock LINE Notify\Chart(完整檔案路徑與檔名)

  • 變數對應:User::ErrorChart/User::ErrorQuote

檔案系統工作

  • IsDestinationPathVariable 屬性:False

  • DestinationConnect 屬性:Chart_Backup/Quote_Backup

  • OverwriteDestination 屬性:True

  • Operation 屬性:移動檔案

  • IsSourcePathVariable 屬性:True

  • SourceVariable 屬性:User::ErrorChart

Last updated 3 years ago