程式碼元件

位置:[主選單]>應用管理>應用設計>[任一應用]>[任一流程]>流程設計>程式碼元件

此處提供Python代碼,協助用戶透過「程式碼元件」直接操作OMFLOW功能,以下將一一介紹:

開單

#匯入
from omflow.syscom.tools import OmData

#宣告一個流程的物件
api_path = 'incident-managment'
inc_flow_obj = OmData(api_path)

#填入表單資料(非必要,視流程需求)
inc_flow_obj.setFormData('formitm_1', 'Apache服務異常')
inc_flow_obj.setFormData('formitm_2', 'red')
inc_flow_obj.setFormData('formitm_3', '1')

#填入流程變數(非必要,視流程需求)
inc_flow_obj.setFlowVariable('message', 'success')
inc_flow_obj.setFlowVariable('password', '1234567')

#送出開單
user_id = '1'   #使用者編號
files = None    #檔案
result = inc_flow_obj.create(user_id, files)

#取得回傳
data_no = result['data_no']    #單號
status = result['status']      #狀態True/False
message = result['message']    #錯誤訊息,開單成功則為空字串

推單

#匯入
from omflow.syscom.tools import OmData

#宣告一個流程的物件
api_path = 'incident-managment'
inc_flow_obj = OmData(api_path)

#填入表單資料(非必要,視流程需求)
inc_flow_obj.setFormData('formitm_1', 'Apache服務異常')
inc_flow_obj.setFormData('formitm_2', 'red')
inc_flow_obj.setFormData('formitm_3', '1')

#推單
data_id = '345' #資料編號(可透過列表取得)
user_id = '1'   #使用者編號
files = None    #檔案
result = inc_flow_obj.update(data_id, user_id, files)

#取得回傳
data_no = result['data_no']    #單號
status = result['status']      #狀態True/False
message = result['message']    #錯誤訊息,推單成功則為空字串

列表

#匯入
from omflow.syscom.tools import OmData

#宣告一個流程的物件
api_path = 'incident-managment'
inc_flow_obj = OmData(api_path)

#列表
search_conditions = [
    {
        'column':'history',
        'condition':'=',
        'value':False
    },                           #查詢條件,查詢非歷史資料
    {
        'column':'running',
        'condition':'=',
        'value':False
    },                           #查詢條件,查詢非執行中資料
    {
        'column':'error',
        'condition':'=',
        'value':False
    },                           #查詢條件,查詢非異常資料
]
search_columns = [
    'data_no',
    'formitm_1'
]                                #取得欄位,取得單號以及欄位1
exclude_conditions = [
    {
        'column':'closed',
        'condition':'=',
        'value':True
    }
]                                #排除條件,排除已關單資料
order_columns = ['-data_no']     #使用單號逆排序
limit = 0                        #取得所有資料(若值給100代表取得前100筆資料)
start = 0                        #從第1筆資料開始
result = inc_flow_obj.list(search_conditions, search_columns, exclude_conditions, order_columns, limit, start)

#取得回傳
#回傳詳細範例請參閱 REST API介紹>查詢表單

刪單

#匯入
from omflow.syscom.tools import OmData

#宣告一個流程的物件
api_path = 'incident-managment'
inc_flow_obj = OmData(api_path)

#刪單
data_no_list = []    #單號陣列
result = inc_flow_obj.delete(data_no_list)

#取得回傳
status = result['status']      #狀態True/False
message = result['message']    #錯誤訊息,推單成功則為空字

##進階推單

此方法將不使用data_id進行推單,而是透過使用者給予的條件進行查詢,查詢後依照後續設定進行推單。

#匯入
from omflow.syscom.tools import OmData

#宣告一個流程的物件
api_path = 'incident-managment'
inc_flow_obj = OmData(api_path)

#填入表單資料(非必要,視流程需求)
inc_flow_obj.setFormData('formitm_1', 'Apache服務異常')
inc_flow_obj.setFormData('formitm_2', 'red')
inc_flow_obj.setFormData('formitm_3', '1')

#推單
condition = {}              #查詢條件
'''
condition可接受兩種資料型態(list/dict)
情境一、查詢 單號等於5 的單並推進
list寫法:
condition = []
con = {'column':'data_no','condition':'=','value':5}
condition.append(con)
dict寫法:
condition = {'data_no':5}

情境二、查詢 單號大於5 的單並推進
list寫法:
condition = []
con = {'column':'data_no','condition':'>','value':5}
condition.append(con)
dict寫法:
condition = {'data_no__gt':5}

情境三、查詢 單號大於5且某個輸入欄位的值等於test 的單並推進
list寫法:
condition = []
con1 = {'column':'data_no','condition':'>','value':5}
condition.append(con1)
con2 = {'column':'formitm_1','condition':'=','value':'test'}
condition.append(con2)
dict寫法:
condition = {'data_no__gt':5, 'formitm_1':'test'}
'''

user_id = '1'                  #使用者編號
files = None                   #檔案
update_duplicate = False       #當條件查詢回來的資料為複數筆時,是否將其全部推進。若否,則全部不推進並回傳失敗訊息。
update_duplicate_interval = 0  #當推進的資料為複數筆時,每一筆推進的間隔時間(秒)
wait_time_max = 0              #當查詢回來的資料筆數為0時,要進行n次重新查詢,n次查詢都為0後回傳錯誤訊息。
wait_time_seconds = 0          #每次重新查詢的間隔時間(秒)
result = inc_flow_obj.advanced_update(condition, user_id, files, update_duplicate, update_duplicate_interval, wait_time_seconds, wait_time_max)

#取得回傳
status = result['status']      #狀態True/False
message = result['message']    #回傳訊息。成功推單的data_id或是失敗訊息。

建立使用者

#匯入
from omflow.syscom.tools import User

#宣告一個流程的物件
user_obj = User()

#填入使用者資料(必填)
username = 'a12345'
token = 'aA!123456'
nick_name ='王小明'
email = 'a12345@gmail.com'

#填入使用者資料(選填)
#有下列欄位可填
#birthday, gender, phone1, phone2, company, default_group, ad_no, extension_no
other_param_dict = {}
other_param_dict['ad_no'] = '001234'
other_param_dict['phone1'] = '0911111111'

#建立使用者
result = user_obj.create(username, token, nick_name, email, other_param_dict)

#取得回傳
user_id = result['user_id']    #使用者id
status = result['status']      #狀態True/False
message = result['message']    #錯誤訊息,開單成功則為空字串

更新使用者

#匯入
from omflow.syscom.tools import User

#宣告一個流程的物件
user_obj = User()

#選擇要修改的使用者(必填,user_id與username二選一填入)
user_id = None
username = None

#更改密碼(選填)
token = 'aA!123456'

#填入要更新的使用者欄位(選填)
#有下列欄位可填
#email, birthday, gender, phone1, phone2, company, default_group, ad_no, extension_no
other_param_dict = {}
other_param_dict['phone1'] = '0911111111'

#更新使用者
result = user_obj.update(user_id, username, token, other_param_dict)
#若 result = 'success' 代表成功,失敗則會回傳錯誤訊息

查詢使用者列表

#匯入
from omflow.syscom.tools import User

#宣告一個流程的物件
user_obj = User()

#查詢條件(下為範例,請依照實際需求修改)
search_conditions = [
    {
        'column':'gender',
        'condition':'=',
        'value':'female'
    },                           #查詢條件,查詢女性使用者
]

search_columns = [
    'username',
    'email'
]                                #取得欄位,取得帳號以及信箱

exclude_conditions = [
    {
        'column':'is_active',
        'condition':'=',
        'value':False
    }
]                                #排除條件,排除停用的使用者

order_columns = ['-username']    #使用帳號逆排序
limit = 0                        #取得所有資料(若值給100代表取得前100筆資料)
start = 0                        #從第1筆資料開始

#查詢使用者
result = user_obj.list(search_conditions, search_columns, exclude_conditions, order_columns, limit, start)

#取得回傳
#回傳詳細範例請參閱 REST API介紹>使用者

查詢單一使用者

#匯入
from omflow.syscom.tools import User

#宣告一個流程的物件
user_obj = User()

#查詢條件(必填,下列三選一填入)
user_id = None
username = None
nick_name = None

#填入要查詢的使用者欄位
#有下列欄位可填
#id, username, nick_name, email, birthday, gender, phone1, phone2, company, default_group, ad_no, extension_no
#若留空代表查詢全部欄位
user_attr = []

#查詢使用者
result = user_obj.load(user_id, username, nick_name, user_attr)

#取得回傳(請依照查詢的欄位取得資料)
#result資料結構如下
{
    'id':123,
    'username':'12312',
    'nick_name':'王小明',
    'email':'123@gamil.com',    #上述欄位會依照user_attr變數不同而有所不同
    'groups':[],                #groups與roles則是固定提供之回傳,與user_attr填入與否無關
    'roles':[],                 #groups回傳使用者所在部門的部門id陣列, roles回傳使用者所在角色的角色id陣列
}

查詢使用者Email列表

#匯入
from omflow.syscom.tools import User

#宣告一個流程的物件
user_obj = User()

#填入要查詢的使用者id(陣列)
user_id_list = []

#查詢多位使用者email
result = user_obj.listEmail(user_id_list)
#result資料格式如下
['aaa@gmail.com','bbb@gmail.com','ccc@gmail.com','ddd@gmail.com']

刪除使用者

#匯入
from omflow.syscom.tools import User

#宣告一個流程的物件
user_obj = User()

#填入要查詢的使用者帳號(陣列)
username_list = []

#刪除使用者
result = user_obj.delete(username_list)
#result若等於空字串代表刪除成功,回傳任何文字訊息代表是錯誤訊息

使用者加入部門

#匯入
from omflow.syscom.tools import User

#宣告一個流程的物件
user_obj = User()

#選擇使用者(必填)
user_id = None

#填入要加入的部門id陣列(必填)
group_id_list = []

#使用者加入部門
result = user_obj.addtoGroup(user_id, group_id_list)
#result為boolean,True代表成功,False代表失敗

使用者移出部門

#匯入
from omflow.syscom.tools import User

#宣告一個流程的物件
user_obj = User()

#選擇使用者(必填)
user_id = None

#填入要移出的部門id陣列(必填)
group_id_list = []

#使用者移出部門
result = user_obj.removefromGroup(user_id, group_id_list)
#result為boolean,True代表成功,False代表失敗

透過組織圖尋找人員

※ 區分為從組織圖查詢或從部門架構查詢

#匯入
from omflow.syscom.tools import User

#宣告一個流程的物件
user_obj = User()

#選擇使用者(必填)
user_id = None
#部門代號(選填),指定要從哪個部門開始查詢,未填寫則從使用者的預設部門開始查詢
group_no=None

#填入要查詢對象的職務名稱或職務代號或權責名稱(必填,下列三選一填入)
position_name = None
position_no = None
responsibilitie_name = None

#選擇要從組織圖或部門架構查詢,如果dept_search是False,請填寫組織圖名稱
dept_search=False
org_name=''

#查詢組織圖
result = user_obj.getPosition(user_id, group_no, org_name, position_name, position_no, responsibilitie_name, dept_search)

#取得回傳
manager_user_id = result.get('user_id','')
manager_group_no = result.get('group_no','')

建立部門

#匯入
from omflow.syscom.tools import Group

#宣告一個部門(角色)的物件
group_obj = Group()

#填入資料(必填)
group_name = 'test'          #部門名稱
is_role = False                #填入True為角色,False為部門

#填入資料(選填)
parent_group_id = None         #父部門id,角色不可填
description = ''               #說明欄位
group_no = ''                  #部門代號
order = 0                      #部門排序,數字越小排序越靠前,請填入整數(可以為負)

#建立部門
result = group_obj.create(parent_group_id, group_name, description, group_no, is_role, order)

#取得回傳
group_id = result['group_id']  #部門/角色id
status = result['status']      #狀態True/False
message = result['message']    #錯誤訊息,開單成功則為空字串

取得部門資訊

#匯入
from omflow.syscom.tools import Group

#宣告一個部門(角色)的物件
group_id = ''
group_no = ''
group_name = ''
#部門id/部門代號/部門名稱請三選一填入值
group_obj = Group(group_id, group_no, group_name)

#讀取部門資訊
result = group_obj.load()

#取得回傳
group_id = result.get('id','')                       #部門id
display_name = result.get('display_name','')         #部門名稱
parent_group_id = result.get('parent_group_id','')   #父部門id
description = result.get('description','')           #說明
group_no = result.get('group_no','')                 #部門代號
group_user_list = result.get('group_user_list','')   #該部門底下有的使用者id
permissions = result.get('permissions','')           #該角色有的權限,查詢部門時回傳為空陣列
order = result.get('order ','')                      #部門排序

加入使用者

#匯入
from omflow.syscom.tools import Group

#宣告一個部門(角色)的物件
group_id = ''
group_no = ''
group_name = ''
#部門id/部門代號/部門名稱請三選一填入值
group_obj = Group(group_id, group_no, group_name)

#填入使用者id列表
user_id_list = []

#部門加入使用者,result為boolean,True代表成功,False代表失敗
result = group_obj.addUsers(user_id_list)

移出使用者

#匯入
from omflow.syscom.tools import Group

#宣告一個部門(角色)的物件
group_id = ''
group_no = ''
group_name = ''
#部門id/部門代號/部門名稱請三選一填入值
group_obj = Group(group_id, group_no, group_name)

#填入使用者id列表
user_id_list = []

#部門移出使用者,result為boolean,True代表成功,False代表失敗
result = group_obj.removeUsers(user_id_list)

透過組織圖尋找人員

※ 區分為從組織圖查詢或從部門架構查詢

#匯入
from omflow.syscom.tools import Group

#宣告一個部門(角色)的物件
group_id = ''
group_no = ''
group_name = ''
#部門id/部門代號/部門名稱請三選一填入值
group_obj = Group(group_id, group_no, group_name)

#填入要查詢對象的職務名稱或職務代號或權責名稱(必填,下列三選一填入)
position_name = None
position_no = None
responsibilitie_name = None

#選擇要從組織圖或部門架構查詢,如果dept_search是False,請填寫組織圖名稱
org_name=''
dept_search=False

#查詢組織圖
result = group_obj.getPosition(org_name='', position_name=None, position_no=None, responsibilitie_name=None, dept_search=False)

#取得回傳
manager_user_id = result.get('user_id','')
manager_group_no = result.get('group_no','')

查詢部門職務權責

#匯入
from omflow.syscom.tools import Group

#宣告一個部門的物件
group_id = ''
group_no = ''
group_name = ''
#部門id/部門代號/部門名稱請三選一填入值
group_obj = Group(group_id, group_no, group_name)

#取得回傳
result = group_obj.loadGroupJobRole()

回傳資料範例如下所示:

[
  {
    "job_role_id": <資料編號>, 
    "position_id": <職務編號>,
    "position_no": <職務代號>,
    "position_name": <職務名稱>,
    "user_id": <使用者編號>,
    "nick_name": <使用者顯示名稱>,
    "is_active": <使用者是否啟用>, 
    "responsibility": <權責>, 
    "data_index": <排序>
  },........
]

更新部門職務權責

#匯入
from omflow.syscom.tools import Group

#宣告一個部門的物件
group_id = ''
group_no = ''
group_name = ''
#部門id/部門代號/部門名稱請三選一填入值
group_obj = Group(group_id, group_no, group_name)

job_role_list = [
  {
    'job_role_id': <資料編號>,   #修改舊資料時填寫
    'position_no': <職務代號>,
    'user_id': <使用者編號>,
    'responsibility': <權責>, 
    'data_index': <排序>
  },........
]

result = group_obj.updateGroupJobRole(job_role_list)

#取得回傳
status = result['status']      #狀態success/update error
message = result['message']    #錯誤訊息,執行成功則為空字串

取得組織圖資訊

#匯入
from omflow.syscom.tools import OrgChart

#宣告一個組織圖的物件
org_name = ''
org_config_id = ''
#組織圖名稱/組織圖編號,請擇一填入值
org_obj = OrgChart(org_name, org_config_id)

#讀取組織圖資訊
result = org_obj.load()

回傳資料範例如下所示:

{
    "org_name": <組織圖名稱>,
    "value": [{
            "org_id": <組織元件編號>,
            "group_no": <組織元件代號>,
            "group_name": <組織元件名稱>,
            "parent_group_no": <父組織元件代號>,
            "order": <組織元件排序>,
            "host_user": <託管人>, #使用者編號
            "host": <是否被託管>, #True/False
            "is_host": <是否屬於託管組織>, #True/False
            "job_role": [{
                    "job_role_id": <資料編號>, 
                    "position_id": <職務編號>,
                    "position_no": <職務代號>,
                    "position_name": <職務名稱>,
                    "user_id": <使用者編號>,                             
                    "nick_name": <使用者顯示名稱>,
                    "is_active": <使用者是否啟用>, #True/False
                    "responsibility": <權責>, 
                    "data_index": <排序>
                  }
            ],
            "sub_item": <託管組織>,
            "parent_group_name": <父組織元件名稱>
        },........
    ],
    "org_approver": {
        "group": <審核人部門編號>,
        "user": <審核人使用者編號>
    },
    "is_search_dept": <組織圖查詢不到時,查詢部門架構>, #True/False
    "is_sub": <是否為託管的組織圖>, #True/False
    "parent_chart_name": <主圖名稱>,
    "uid": <uid>,
    "pending_status": <託管組織圖是否為審核狀態>, #True/False
    "host_user": <託管人>,
    "org_config_id": <組織圖編號>
}

更新/新增組織圖

#匯入
from omflow.syscom.tools import OrgChart

#宣告一個組織圖的物件
org_obj = OrgChart()

org_chart_dict = {
    'org_name': <組織圖名稱>,
    'value': [{
            'org_id': <組織元件編號>, #修改舊資料時填寫
            'group_no': <組織元件代號>,
            'group_name': <組織元件名稱>,
            'parent_group_no': <父組織元件代號>,
            'order': <組織元件排序>,
            'host_user': <託管人>, #使用者編號
            'host': <是否被託管>, #True/False
            'is_host': <是否屬於託管組織>, #True/False
            'job_role': [{
                    'job_role_id': <資料編號>, #修改舊資料時填寫
                    'position_no': <職務代號>,
                    'user_id': <使用者編號>,       
                    'responsibility': <權責>, 
                    'data_index': <排序>
                  }
            ]
        },........
    ],
    'org_approver': {
        'group': <審核人部門編號>,
        'user': <審核人使用者編號>
    },
    'is_search_dept': <組織圖查詢不到時,查詢部門架構>, #True/False
    'is_sub': <是否為託管的組織圖>, #True/False
    'uid': <uid>,
    'org_config_id': <組織圖編號> #修改舊資料時填寫
}

#更新/新增組織圖資訊
result = org_obj.update(org_chart_dict)

#取得回傳
status = result['status']      #狀態success/update error
message = result['message']    #錯誤訊息,執行成功則為空字串
op_result = result['result']   #執行結果,執行成功則為空字串

刪除組織圖

#匯入
from omflow.syscom.tools import OrgChart

#宣告一個組織圖的物件
org_obj = OrgChart()

org_config_id_list = [<組織圖編號>,........] 

#刪除組織圖
result = org_obj.delete(org_config_id_list )

#取得回傳
status = result['status']      #狀態success/delete error
message = result['message']    #錯誤訊息,執行成功則為空字串
op_result = result['result']   #執行結果,執行成功則為空字串

※ 若要刪除託管圖,應更新主圖資訊解除託管,而非以此方法。

最后更新于