コードコンポーネント

位置:[メインメニュー]>アプリケーション管理>アプリケーション設計>[任意のアプリ]>[任意のフロー]>フロー設計>コードコンポーネント

ここではPythonコードを提供し、ユーザーは「コードコンポーネント」で直接OMFLOWの機能を操作できます。説明は下記のとおりです。

新しいデータを作成

#インポート
from omflow.syscom.tools import OmData

#1つのプロセスのオブジェクトを告知する
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

#1つのプロセスのオブジェクトを告知する
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

#1つのプロセスのオブジェクトを告知する
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                        #最初のデータから始める
result = inc_flow_obj.list(search_conditions, search_columns, exclude_conditions, order_columns, limit, start)

#返事の取得
#返事の詳細は REST API紹介>フォームをクエリを参照してください

削除

#インポート
from omflow.syscom.tools import OmData

#1つのプロセスのオブジェクトを告知する
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

#1つのプロセスのオブジェクトを告知する
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は2種類のデータ(list/dict)を受け付ける
シナリオ1、フォーム番号イコール5のフローをクエリして推進する
listの書き方:
condition = []
con = {'column':'data_no','condition':'=','value':5}
condition.append(con)
dictの書き方:
condition = {'data_no':5}

シナリオ2、フォーム番号が5より大きいのをクエリして推進する
listの書き方:
condition = []
con = {'column':'data_no','condition':'>','value':5}
condition.append(con)
dictの書き方:
condition = {'data_no__gt':5}

シナリオ3、フォーム番号が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

#1つのプロセスのオブジェクトを告知する
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']    #ユーザ番号
status = result['status']      #状態True/False
message = result['message']    #エラーメッセージ、作成が成功した場合は空文字列となる

ユーザーの更新

#インポート
from omflow.syscom.tools import User

#1つのプロセスのオブジェクトを告知する
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

#1つのプロセスのオブジェクトを告知する
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                        #最初のデータから始める

#ユーザーをクエリ
result = user_obj.list(search_conditions, search_columns, exclude_conditions, order_columns, limit, start)

#返事の取得
#返事の詳細は REST API紹介>フォームをクエリを参照してください

単一ユーザーをクエリ

#インポート
from omflow.syscom.tools import User

#1つのプロセスのオブジェクトを告知する
user_obj = User()

#クエリ条件(必要、以下3つのうちのいずれを記入)
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

#1つのプロセスのオブジェクトを告知する
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

#1つのプロセスのオブジェクトを告知する
user_obj = User()

#検索するユーザアカウントを記入(配列)
username_list = []

#ユーザーを削除
result = user_obj.delete(username_list)
#resultが空文字列の場合、削除が成功したことを意味し、テキストメッセージが返事される場合はエラーメッセージの意味です。

ユーザーを部門に追加

#インポート
from omflow.syscom.tools import User

#1つのプロセスのオブジェクトを告知する
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

#1つのプロセスのオブジェクトを告知する
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

#1つのプロセスのオブジェクトを告知する
user_obj = User()

#ユーザーを選択(必要)
user_id = None
#部門コード(オプション),どの部門からクエリし始めるを指定し、もし入力されていない場合、デフォルト部門からクエリし始める
group_no=None

#クエリ対象の職務名、職務コードや権限名を記入(必要,3つのいずれを記入)
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

#1つの部門(役割)のオブジェクトを告知する
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

#1つの部門(役割)のオブジェクトを告知する
group_id = ''
group_no = ''
group_name = ''
#値は部門id/部門コード/部門名の3つのいずれを記入
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

#1つの部門(役割)のオブジェクトを告知する
group_id = ''
group_no = ''
group_name = ''
#値は部門id/部門コード/部門名の3つのいずれを記入
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

#1つの部門(役割)のオブジェクトを告知する
group_id = ''
group_no = ''
group_name = ''
#値は部門id/部門コード/部門名の3つのいずれを記入
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

#1つの部門(役割)のオブジェクトを告知する
group_id = ''
group_no = ''
group_name = ''
#値は部門id/部門コード/部門名の3つのいずれを記入
group_obj = Group(group_id, group_no, group_name)

#クエリ対象の職務名、職務コードや権限名を記入(必要,3つのいずれを記入)
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

#1つの部門のオブジェクトを告知する
group_id = ''
group_no = ''
group_name = ''
#値は部門id/部門コード/部門名の3つのいずれを記入
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

#1つの部門のオブジェクトを告知する
group_id = ''
group_no = ''
group_name = ''
#値は部門id/部門コード/部門名の3つのいずれを記入
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

#1つの部門のオブジェクトを告知する
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

#1つの組織図のオブジェクトを告知する
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

#1つの組織図のオブジェクトを告知する
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']   #実行結果、実行が成功した場合は空文字列となる

※ 委託管理される組織図を削除するには、上記方法を使わないで、メイン組織図を更新し、委託管理を解除してください。

最終更新