上一篇我们介绍了如何调用Hansoft的数据库并获取到连接对象。这一章开始我会介绍一些常用的Hansoft接口,帮助大家直观的使用Python2来调用接口。
首先我们知道Hansoft中分为几个Project,存着不同类型的Task,也就是单子。我们需要先获得所有的ProjectID。
h = Hansoft()
h.sessionOpen()
hs = h.session
project_list = hs.ProjectEnum().m_Projects
for p in project_list :
print(p)
而我在获取ID的时候遇到了一个问题:返回的id里面没有QA(Quality assurance)项目的ID。而想获得QA项目的id可以使用如下函数:
project_id = hs.ProjectEnum().m_Projects[0]
qa_project_id = hs.ProjectUtilGetQA(project_id)
而我还有一个笨办法就是,找一个QA项目下的单子的database_id,调用以下函数来获取。
#先从Hansoft客户端找到单子的database_id如22154
database_id = 22154
qa_task_database_id= HPMSdk.HPMUniqueID(database_id)
qa_project_id = hs.TaskGetContainer(qa_task_database_id)
我们拿到了QA项目或其他项目的id之后,就可以获取项目下所有单子的database_id(还有另外一个字段id,要区别下。databaseid是数据库唯一id 如22514,id是项目下唯一id 如25)。
有一个比较查看返回对象的成员变量的办法,就是通过打断点,Debug出来返回的对象包含哪些成员变量。
以下是调用接口返回的信息
task_list = hs.TaskEnum(qa_project_id).m_Tasks
for result in task_list:
language_id = HPMSdk.HPMLanguage(0x0809)
# 0809是英语的代码 。但我试过其他的语言代码,只有英文的生效。
# "中文简体": 0x0804,
# "韩文": 0x0412
m_Status = hs.LocalizationTranslateString(language_id, (result.m_Status))
print("m_DatabaseID: %s %s" % (result.m_DatabaseID, type(result.m_DatabaseID)))
print("m_Description: %s %s" % (result.m_Description, type(result.m_Description)))
print("m_DetailedDescription: %s %s" % (result.m_DetailedDescription, type(result.m_DetailedDescription)))
print("m_ID: %s %s" % (result.m_ID, type(result.m_ID)))
print("m_ResourceNames: %s %s" % (result.m_ResourceNames, type(result.m_ResourceNames)))
print("m_Status: %s %s" % (m_Status, type(m_Status)))
print("m_TaskMainImageID: %s %s" % (result.m_TaskMainImageID, type(result.m_TaskMainImageID)))
''' 输出结果如下:取了主要有用的内容。 数据库id m_DatabaseID: 27534 <class 'HPMSdk.HPMUniqueID'> 单子的主题 m_Description: 单子主题 <type 'unicode'> 单子的具体内容 m_DetailedDescription: 单子的内容 <type 'unicode'> 单子的项目id m_ID: 339 <type 'int'> 单子的状态 m_Status: Not done <type 'unicode'> '''
如果想拿到单个单子的信息的话,可以通过这个接口:
result = hs.UtilGetTaskInfoFromHansoftURL(url)
# url样例: https://hansoft.xxxxx.com/task/xxxxxxxx/37602 最后边是database_id