UPDATE ProcessSubstituteDefinition
SET startSubstituteTime = '<開始代理 年年年年-月月-日日 時時:分分:秒秒.000>'
,endSubstituteTime = '<結束代理 年年年年-月月-日日 時時:分分:秒秒.000>'
,substituteOID = (SELECT OID FROM Users WHERE id = '<代理者工號>')
,objectVersion = objectVersion + 1
WHERE ownerOID = (SELECT OID FROM Users WHERE id = '<被代理者工號>');
2018年12月28日 星期五
批次修改流程代理人啟用結束時間
發單時選錯部門導致跑到錯誤的直屬主管之解決方法
場景:
發單者有主(=TCM0131)部門及其他(=TCG0123)部門, 兩個部門直屬主管為不同人。
流程其中有關卡為發單者直屬主管。
發單時選錯部門。
被退回重辦, 但發單者再次派送, 系統卻不會再詢問要用哪個單位進行派送導致又送錯主管。
此時可以
1. 請User終止原流程, 重新發單。
或
2. 修正EasyFlow參考及發單部門欄位。
動作:
(1) 先退回發單者關卡。
(2) 修改DB:EFGP的Table:ProcessInstance流程資料, 把發單部門及參考部門都改為正確的部門。
SQL語法:
(3) 重新派送, 發現已可到正確的直屬主管。
發單者有主(=TCM0131)部門及其他(=TCG0123)部門, 兩個部門直屬主管為不同人。
流程其中有關卡為發單者直屬主管。
發單時選錯部門。
被退回重辦, 但發單者再次派送, 系統卻不會再詢問要用哪個單位進行派送導致又送錯主管。
此時可以
1. 請User終止原流程, 重新發單。
或
2. 修正EasyFlow參考及發單部門欄位。
動作:
(1) 先退回發單者關卡。
(2) 修改DB:EFGP的Table:ProcessInstance流程資料, 把發單部門及參考部門都改為正確的部門。
SQL語法:
DECLARE @UNIT_OID char(32) = (SELECT OID FROM OrganizationUnit WHERE id = '<正確部門代號>');
UPDATE ProcessInstance
SET referOrganizationUnitOID = @UNIT_OID, /**改這個欄位, 流程引擎在派送到下一關卡時會依照這個欄位判斷流向。*/
invokeOrganizationUnitOID = @UNIT_OID
,objectVersion = objectVersion + 1
WHERE serialNumber = <流程序號>;
(3) 重新派送, 發現已可到正確的直屬主管。
2018年12月26日 星期三
2018年12月10日 星期一
Visual Studio 2017新增Xamarin專案異常
參照此連結的解決方案, 都無效。
但將所有相關元件都更新完成後, 就已無異常。
新增專案(Cross-platform→行動應用程式→.NET standard)會顯示以下錯誤訊息。
1.更新Android專案的NuGet套件, Xamarin相關都要更新。
2.Android→Android SDK管理員, 更新Android SDK。
(先確認好要安裝到哪些版本的Android, 下載對應的SDK。)
但將所有相關元件都更新完成後, 就已無異常。
新增專案(Cross-platform→行動應用程式→.NET standard)會顯示以下錯誤訊息。
1.更新Android專案的NuGet套件, Xamarin相關都要更新。
2.Android→Android SDK管理員, 更新Android SDK。
(先確認好要安裝到哪些版本的Android, 下載對應的SDK。)
2018年12月6日 星期四
Eclipse偵錯鼎新EasyFlow組織設計師
1.用文字編輯器開啟jnlp檔, 到server將<resources> tag內所有用到的jar檔下載到本地端。
2.下載Java Decompiler Eclipse套件。
3.開啟Eclipse, 安裝之, 開啟class檔可顯示原始碼。
新增套件順序如下。
4.新增專案。
5.新增引用, 加入之前下載的jar檔。
6.偵錯組態新增遠端偵錯。
7.開啟source code, 找到要偵錯的段落, 加上中斷點。
8.以命令列執行jnlp檔, 程式不會顯示, 因為要等Eclipse連接上。
javaws.exe -J-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 nana-organization-designer.jnlp
9.Eclipse執行偵錯, 組織設計師顯示畫面, 且執行到中斷點則會暫停。
2.下載Java Decompiler Eclipse套件。
3.開啟Eclipse, 安裝之, 開啟class檔可顯示原始碼。
新增套件順序如下。
4.新增專案。
5.新增引用, 加入之前下載的jar檔。
6.偵錯組態新增遠端偵錯。
7.開啟source code, 找到要偵錯的段落, 加上中斷點。
8.以命令列執行jnlp檔, 程式不會顯示, 因為要等Eclipse連接上。
javaws.exe -J-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 nana-organization-designer.jnlp
9.Eclipse執行偵錯, 組織設計師顯示畫面, 且執行到中斷點則會暫停。
2018年11月21日 星期三
工作排程器提升優先順序
1.匯出工作存成XML檔。
2.編輯XML檔, 將7改為4。
3.刪除原有工作。
4.匯入編輯後的XML檔即可。
參考來源:https://stackoverflow.com/questions/2427142/is-there-any-way-for-a-win2k8-scheduled-task-to-have-normal-priority-io
2.編輯XML檔, 將7改為4。
3.刪除原有工作。
4.匯入編輯後的XML檔即可。
參考來源:https://stackoverflow.com/questions/2427142/is-there-any-way-for-a-win2k8-scheduled-task-to-have-normal-priority-io
2018年11月15日 星期四
EasyFlow GP 5.6使用jQuery插件
在EFGP的架構下有些地方要注意:
發現只要引用其他來源的jQuery,
如document.write(''); 雖然起單時無任何問題, 但在第2關會有派送履歷無法顯示的異常。
而且就算想用jQuery的noConflict()方法也不可行, 因為:
1.jQuery物件在EFGP被改名, 根本找不到。
2.$別名在EFGP已有別的用途。
解決方案:
查看EFGP的source code, 其本身也有jQuery library, 別名為【__jQuery】,
所以只要撰寫當var textBox1 = $(“#TextBox1”);時
改為var textBox1 = __jQuery(“#TextBox1”);即可正常使用。
而jQuery插件也要配合修改(以jQuery Soap為例),
發現只要引用其他來源的jQuery,
如document.write(''); 雖然起單時無任何問題, 但在第2關會有派送履歷無法顯示的異常。
而且就算想用jQuery的noConflict()方法也不可行, 因為:
1.jQuery物件在EFGP被改名, 根本找不到。
2.$別名在EFGP已有別的用途。
解決方案:
查看EFGP的source code, 其本身也有jQuery library, 別名為【__jQuery】,
所以只要撰寫當var textBox1 = $(“#TextBox1”);時
改為var textBox1 = __jQuery(“#TextBox1”);即可正常使用。
而jQuery插件也要配合修改(以jQuery Soap為例),
2018年11月9日 星期五
Visual Studio Code插件Debugger for Chrome偵錯本機檔案
1.Visual Studio Code→開啟要偵錯的檔案的【所在資料夾】。
2.編輯偵錯組態檔launch.json如下:
2.編輯偵錯組態檔launch.json如下:
{
/**使用 IntelliSense 以得知可用的屬性。*/
/**暫留以檢視現有屬性的描述。*/
/**如需詳細資訊,請瀏覽: https://go.microsoft.com/fwlink/?linkid=830387*/
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "本機檔案偵錯",
/**"file": "${workspaceFolder}/<指定檔案名稱>",*/ /**-->每次都偵錯此檔案*/
"file": "${file}", /**-->或偵錯目前所編輯的檔案*/
"sourceMaps": true,
"userDataDir": "${workspaceFolder}/profile"
}
]
}
2018年11月6日 星期二
jQuery soap插件(jQuery呼叫.Net web service用)的使用方法
**IE瀏覽器**
網際網路選項→安全性→所對應的區域→自訂等級→存取跨網域的資料來源→啟用
引用如下:
<!--IE8只能用jQuery 1.x版本-->
方法如下:
在web service伺服器的web.config的<configuration>節點底下加上
網際網路選項→安全性→所對應的區域→自訂等級→存取跨網域的資料來源→啟用
引用如下:
<!--IE8只能用jQuery 1.x版本-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="http://cdn.zoanmgtinc.com/j_query/plugin/soap/jquery.soap.js"></script>
方法如下:
$.support.cors = true; /**修正"no transport"問題(for IE8, http://bugs.jquery.com/ticket/10660)*/
$.soap({
url: "http://xxx.xxx.xxx.xxx/WebSite1_T/Service.asmx",
method: "<方法名稱>",
SOAPAction: "http://tempuri.org/<方法名稱>",
envAttributes: {
"xmlns": "http://tempuri.org/"
},
data: {
Code: "", /**參數1*/
Display: true /**參數2*/
},
appendMethodToURL: false,
async: false,
success: function (soapResponse) {
/**成功時解析soapResponse的內容*/
/**建議用$(soapResponse.toString())轉成jQuery的xml物件以利操作*/
},
error: function (soapResponse) {
/**失敗時soapResponse會顯示伺服器回傳錯誤訊息*/
}
});
在web service伺服器的web.config的<configuration>節點底下加上
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="content-type, soapaction" />
<add name="Access-Control-Allow-Methods" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
2018年10月26日 星期五
SOAPUI模擬request payload形式的POST請求
1.SOAPUI→REST Project 1→Request 1
2.Method:POST→Endpoint:主機名稱→Resource:web api url
3.Media Type:application/json→貼上Request payload的json
2.Method:POST→Endpoint:主機名稱→Resource:web api url
3.Media Type:application/json→貼上Request payload的json
2018年10月24日 星期三
今天是[程式設計師節]!!
___ ___ ___________ ________ _____ ._. / | \_____ ______ ______ ___.__. /_ \ _ \ \_____ \ / | || | / ~ \__ \ \____ \\____ < | | | / /_\ \ / ____/ / | || | \ Y // __ \| |_> > |_> >___ | | \ \_/ \/ \/ ^ /\| \___|_ /(____ / __/| __// ____| |___|\_____ /\_______ \____ | __ \/ \/|__| |__| \/ \/ \/ |__| \/
2018年7月13日 星期五
Excel叫用Web service
1.VBA編輯器→工具→設定引用項目
2.增加Microsoft Office Soap Type Library v3.0
(路徑:C:\Program Files (x86)\Common Files\microsoft shared\OFFICE14\MSSOAP30.DLL)
及Microsoft XML, v6.0
3.以下代碼叫用即可
Dim service As SoapClient30
Dim result As MSXML2.IXMLDOMSelection '回傳結果
Dim isOk As MSXML2.IXMLDOMElement '回傳結果屬性(執行結果OK/NG)
Dim message As MSXML2.IXMLDOMElement '回傳結果屬性(返回訊息)
Dim value As MSXML2.IXMLDOMElement '回傳結果屬性(返回值)
Set service = New SoapClient30
Call service.MSSoapInit("WSDL的URL")
Set result = service.方法名稱("參數")
Set isOk = result.Item(0)
Set message = result.Item(1)
Set value = result.Item(2)
2018年6月26日 星期二
C# Roslyn Scripting API(程式靈活性上升, 但穩健性卻會大幅下降, 需配合大量[單元測試]服用!)
2018年6月25日 星期一
clickonce執行script(Client端)
@ECHO OFF
SET APP=%1
::此script檔執行需帶參數=%APP%
::建置ClickOnce專案
"MSBuild.exe" "<專案名稱>.csproj" /target:publish /property:Configuration=Debug;PublishUrl=\\<主機名稱>\%APP%;AssemblyName=%APP%;PublisherName=<公司名稱>;ProductName=%APP%;ApplicationRevision=1;MinimumRequiredVersion=1.0.0.1
::建立Deploy資料夾
wmic /node:'<主機名稱>' /user:<網域\管理者名稱> /password:'<管理者密碼>' process call create 'cmd.exe /c mkdir C:\%APP%'
::Deploy資料夾權限:everyone, 執行
wmic /node:'<主機名稱>' /user:<網域\管理者名稱> /password:'<管理者密碼>' process call create 'cmd.exe /c icacls C:\%APP% /grant "everyone:RX"'
::複製專案到資料夾
robocopy <專案名稱>\bin\Debug\app.publish \\<主機名稱>\C$\%APP% /MIR /Z /ZB /TBD /NP /R:5 /W:0 /MT:32
備份文件/清理電腦暫存檔的batch script
::備份我的文件夾
robocopy "<我的文件夾位置>" "<遠端備份主機位置>" /MIR /Z /ZB /TBD /NP /R:5 /W:0 /MT:32
::磁碟清理
%windir%\System32\cleanmgr.exe /SAGERUN:99
::清除暫存資料夾
%windir%\System32\cmd.exe /C DEL /F /S /Q %TEMP%\*
%windir%\System32\cmd.exe /C FOR /D %d IN (%TEMP%\"*") DO RMDIR "%d" /S /Q
::清理登錄檔null值
"C:\Program Files\RegDelNull\RegDelNull64.exe" -s hkcr
"C:\Program Files\RegDelNull\RegDelNull64.exe" -s hkcu
"C:\Program Files\RegDelNull\RegDelNull64.exe" -s hklm
"C:\Program Files\RegDelNull\RegDelNull64.exe" -s hku
"C:\Program Files\RegDelNull\RegDelNull64.exe" -s hkcc
2018年6月23日 星期六
單元測試需注意事項
狀況:
當使用TransactionScope將之前寫入資料庫動作撤銷,
專案有使用到EntityFramework及Dapper會遇到以下錯誤;
(1)顯示"No Entity Framework provider found for the ADO.NET provider with invariant name ‘System.Data.SqlClient'"錯誤
解法:EntityFramework的DbContext需新加建構式如下:
public partial class xxxEntities {
public static xxxEntities Create() {
return new xxxEntities("name=xxxEntities");
}
private xxxEntities(string contextName) : base(contextName) {
var ensureDLLIsCopied = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
}
}
參考:
[1]https://stackoverflow.com/questions/15088426/overriding-code-generated-dbcontext-constructor/15088572#15088572
[2]http://robsneuron.blogspot.com/2013/11/entity-framework-upgrade-to-6.html
(2)Dapper使用SqlConnection
會顯示"已停用分散式交易管理員 (MSDTC) 的網路存取。請使用元件服務系統管理工具啟用 DTC,以使用 MSDTC 安全性設定中的網路存取"
解法:在連線字串增加enlist=False, 避免觸發MSTDC
msdeploy執行script(Server端)
@ECHO OFF
SET APP=%1
::此script檔執行需帶參數=%APP%
::置換Web.config DB連線字串
powershell -command "(Get-Content <專案路徑>\Web.config) -replace ('initial catalog=[a-zA-Z0-9]+;', 'initial catalog=%APP%;') | Out-File <專案路徑>\Web.config"
::建置專案
"MSBuild.exe" "<專案名稱>.csproj" /p:DeployOnBuild=true /property:Configuration=Debug
::建立資料夾在伺服器的C槽
wmic /node:'<主機名稱>' /user:<網域\管理者名稱> /password:'<管理者密碼>' process call create 'cmd.exe /c mkdir C:\%APP%'
::建立應用程序在伺服器IIS
wmic /node:'<主機名稱>' /user:<網域\管理者名稱> /password:'<管理者密碼>' process call create '%systemroot%\system32\inetsrv\appcmd.exe add APPPOOL /name:%APP% /managedRuntimeVersion:"v4.0" /managedPipelineMode:"Integrated" /startMode:AlwaysRunning /recycling.periodicRestart.time:00:00:00 /failure.rapidFailProtection:False /processModel.idleTimeoutAction:Suspend'
wmic /node:'<主機名稱>' /user:<網域\管理者名稱> /password:'<管理者密碼>' process call create '%systemroot%\system32\inetsrv\appcmd.exe add APP /path:/%APP% /physicalPath:C:\%APP% /site.name:"Default Web Site" /applicationPool:%APP% /preloadEnabled:True'
wmic /node:'<主機名稱>' /user:<網域\管理者名稱> /password:'<管理者密碼>' process call create '%systemroot%\system32\inetsrv\appcmd.exe set CONFIG "Default Web Site/%APP%" /section:urlCompression /doStaticCompression:True'
wmic /node:'<主機名稱>' /user:<網域\管理者名稱> /password:'<管理者密碼>' process call create '%systemroot%\system32\inetsrv\appcmd.exe set CONFIG "Default Web Site/%APP%" /section:urlCompression /doDynamicCompression:True'
wmic /node:'<主機名稱>' /user:<網域\管理者名稱> /password:'<管理者密碼>' process call create '%systemroot%\system32\inetsrv\appcmd.exe unlock CONFIG /section:anonymousAuthentication'
wmic /node:'<主機名稱>' /user:<網域\管理者名稱> /password:'<管理者密碼>' process call create '%systemroot%\system32\inetsrv\appcmd.exe set CONFIG "Default Web Site/%APP%" /section:anonymousAuthentication /enabled:True'
::設定應用程序的資料夾權限
wmic /node:'<主機名稱>' /user:<網域\管理者名稱> /password:'<管理者密碼>' process call create 'cmd.exe /c icacls C:\%APP% /grant "IIS AppPool\%APP%:F"'
::部署專案
"msdeploy.exe" -verb:sync -source:iisApp='<專案路徑>PackageTmp' -dest:iisApp='Default Web Site/%APP%',ComputerName='https://<主機名稱>:8172/msdeploy.axd',UserName='<主機名稱>\Administrator',Password='<管理者密碼>',AuthType='Basic',includeAcls='False' -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -allowUntrusted
::連線字串加密
wmic /node:'<主機名稱>' /user:<網域\管理者名稱> /password:'<管理者密碼>' process call create 'aspnet_regiis.exe -pef connectionStrings C:\%APP%'
msdeploy(web deploy)後顯示錯誤連線{"初始化字串的格式和開始於索引 0 的規格不相符"}
狀況:
部署後在web.config的連線字串會變成$(ReplacableToken_連線字串名稱-Web.config Connection String_0)
解法:
在專案的csproj檔,在各組態的<PropertyGroup>都加入
<AutoParameterizationWebConfigConnectionStrings>False</AutoParameterizationWebConfigConnectionStrings>
來源:
https://docs.microsoft.com/zh-tw/aspnet/web-forms/overview/deployment/visual-studio-web-deployment/troubleshooting#format-of-the-initialization-string-does-not-conform-to-specification-starting-at-index-0
部署後在web.config的連線字串會變成$(ReplacableToken_連線字串名稱-Web.config Connection String_0)
解法:
在專案的csproj檔,在各組態的<PropertyGroup>都加入
<AutoParameterizationWebConfigConnectionStrings>False</AutoParameterizationWebConfigConnectionStrings>
來源:
https://docs.microsoft.com/zh-tw/aspnet/web-forms/overview/deployment/visual-studio-web-deployment/troubleshooting#format-of-the-initialization-string-does-not-conform-to-specification-starting-at-index-0
2018年5月30日 星期三
xlwings錯誤:module 'xlwings' has no attribute 'Book'
2018年5月24日 星期四
點擊Delphi專案檔時會顯示[傳送命令給程式時發生錯誤]而無法直接開啟
2018年5月22日 星期二
執行遠端主機的DOS指令
用單引號將各參數內容包起來以避免特殊符號造成錯誤(Invalid Global Switch)
%windir%\System32\wbem\wmic.exe /node:'{遠端主機名稱}' /user:'{網域\使用者帳號}' /password:'{密碼}' process call create '{DOS指令}'
2018年5月16日 星期三
開啟Delphi專案卻是其他專案路徑
狀況:
開啟A專案,一開始卻帶出B專案的檔案
原因:
在<專案名稱>.dsk會記錄關閉Delphi IDE前所開啟的檔案清單,
以利下次開啟時重新開啟加快使用者開發作業;
先關閉該檔,再重新開啟該專案即可。
開啟A專案,一開始卻帶出B專案的檔案
原因:
在<專案名稱>.dsk會記錄關閉Delphi IDE前所開啟的檔案清單,
以利下次開啟時重新開啟加快使用者開發作業;
先關閉該檔,再重新開啟該專案即可。
2018年5月15日 星期二
增進開發效率的桌機設定
- 使用Ramdisk,並設定Windows/IE/Chrome/IIS暫存目錄路徑
- 優化記憶體設定,取消分頁檔及不需要開啟的服務等等
- Virtual Win設定2個虛擬桌面:桌面1為開發區,桌面2為除錯區
- 專案/我的文件夾/桌面路徑改設D槽,並設定自動備份排程
- 定期使用cleanmgr清除磁碟無效檔案
- 定期使用RegDelNull清除無效登錄檔
- 建立郵件分類規則
2018年5月7日 星期一
繼承的表單在設計工具檢視模式顯示錯誤訊息
2018年5月2日 星期三
檢查某目錄下檔案數量決定進行後續作業
@ECHO OFF
::初始化變數[檔案數量]
SET FileCount=0
::遍歷檔案,累加到[檔案數量]
FOR %A IN (D:\WorkDirectory\*) DO SET /A FileCount+=1
::如果[檔案數量]大於等於100則進行後續作業
IF %FileCount% GEQ 100 (ECHO "file count greater or equal to 100!")
2018年4月30日 星期一
GNU GLOBAL安裝/使用(for Windows)
- 下載GNU GLOBAL,解壓縮到C:\GLOBAL。
- 下載Python 3並安裝。
- 我的電腦→右鍵→內容→進階系統設定→環境變數→系統變數→Path→新增C:\GLOBAL\bin。
- 系統變數→新增變數名稱GTAGSCONF,變數值C:\GLOBAL\share\gtags\gtags.conf。
- 系統變數→新增變數名稱GTAGSLABEL,變數值pygments。
- 使用gtags --debug驗證安裝是否正常。
- 使用gtags產生索引檔GTAGS,GRTAGS,GPATH
- 使用htags產生索引網站,命令列參數:--alphabet --other --symbol --tree-view --frame --fixed-guide --line-number --verbose --warning
2018年4月25日 星期三
Delphi 6呼叫ASP.NET Web service
- 用WSDL Import將指定的 Web service 介面轉成 Delphi 的介面。
- 修改生成的檔案(如service
.pas)
[1]在RIO := THTTPRIO.Create(nil);的下一行加入
RIO.HTTPWebNode.UseUTF8InHeader := True;
[2]在InvRegistry.RegisterDefaultSOAPAction(TypeInfo(ServiceSoap), 'http://<命名空間>/%operationName%');的下一行加入
InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument); - 添加參考並使用介面提供的函數呼叫即可
訂閱:
文章 (Atom)